Update make commands to expect to be in shell
This commit is contained in:
parent
ea35579f68
commit
b0af29b692
146
Makefile
146
Makefile
|
|
@ -6,7 +6,6 @@ MAIN_TF := $(wildcard infra/main/*.tf)
|
||||||
ENVIRONMENT := production
|
ENVIRONMENT := production
|
||||||
REGION := sfo3
|
REGION := sfo3
|
||||||
ROOT_DIR := $(shell pwd)
|
ROOT_DIR := $(shell pwd)
|
||||||
OUT_DIGEST := out/tools-image.digest
|
|
||||||
KEYS := \
|
KEYS := \
|
||||||
6B61ECD76088748C70590D55E90A401336C8AAA9 \
|
6B61ECD76088748C70590D55E90A401336C8AAA9 \
|
||||||
88823A75ECAA786B0FF38B148E401478A3FBEF72 \
|
88823A75ECAA786B0FF38B148E401478A3FBEF72 \
|
||||||
|
|
@ -19,6 +18,7 @@ PLATFORM ?= linux/amd64
|
||||||
PROGRESS ?= auto
|
PROGRESS ?= auto
|
||||||
REGISTRY ?= git.distrust.co/public
|
REGISTRY ?= git.distrust.co/public
|
||||||
VERSION := latest
|
VERSION := latest
|
||||||
|
SHELL=/bin/bash
|
||||||
SOPS := sops
|
SOPS := sops
|
||||||
|
|
||||||
ifeq ($(NOCACHE), 1)
|
ifeq ($(NOCACHE), 1)
|
||||||
|
|
@ -30,11 +30,12 @@ export NOCACHE_FLAG
|
||||||
|
|
||||||
include $(PWD)/src/make/macros.mk
|
include $(PWD)/src/make/macros.mk
|
||||||
|
|
||||||
|
.ONESHELL:
|
||||||
|
|
||||||
.DEFAULT_GOAL :=
|
.DEFAULT_GOAL :=
|
||||||
.PHONY: default
|
.PHONY: default
|
||||||
default: \
|
default: \
|
||||||
tools \
|
tofu-apply
|
||||||
apply
|
|
||||||
|
|
||||||
.PHONY: clean
|
.PHONY: clean
|
||||||
clean:
|
clean:
|
||||||
|
|
@ -43,10 +44,6 @@ clean:
|
||||||
out:
|
out:
|
||||||
mkdir out
|
mkdir out
|
||||||
|
|
||||||
.PHONY: update-tools
|
|
||||||
update-tools:
|
|
||||||
./src/make/update.sh
|
|
||||||
|
|
||||||
.PHONY: shell
|
.PHONY: shell
|
||||||
shell: build-tools load-tools
|
shell: build-tools load-tools
|
||||||
$(call run-container, -v $${PWD}:/home/user/stack:rw, $(REGISTRY)/tools:latest, /bin/bash)
|
$(call run-container, -v $${PWD}:/home/user/stack:rw, $(REGISTRY)/tools:latest, /bin/bash)
|
||||||
|
|
@ -55,97 +52,49 @@ shell: build-tools load-tools
|
||||||
credentials: \
|
credentials: \
|
||||||
$(CACHE_DIR)/secrets/credentials.tfvars
|
$(CACHE_DIR)/secrets/credentials.tfvars
|
||||||
|
|
||||||
$(KEY_DIR)/%.asc:
|
infra/backend/.terraform: $(BACKEND_TF)
|
||||||
$(call fetch_pgp_key,$(basename $(notdir $@)))
|
sops exec-env secrets/$(ENVIRONMENT).enc.env -- '\
|
||||||
|
tofu -chdir=infra/backend init -upgrade && \
|
||||||
$(OUT_DIR)/website/.well-known/matrix/client \
|
tofu -chdir=infra/backend refresh \
|
||||||
$(OUT_DIR)/website/.well-known/matrix/server:
|
|
||||||
mkdir -p $(OUT_DIR)/website/.well-known/matrix
|
|
||||||
cp -R \
|
|
||||||
$(SRC_DIR)/well-known/matrix/* \
|
|
||||||
$(OUT_DIR)/website/.well-known/matrix/
|
|
||||||
|
|
||||||
$(OUT_DIR)/website/.well-known/openpgpkey:
|
|
||||||
$(call toolchain," \
|
|
||||||
sq wkd \
|
|
||||||
generate $(OUT_DIR)/website distrust.co \
|
|
||||||
<(cat $(patsubst %,$(KEY_DIR)/%.asc,$(KEYS))) \
|
|
||||||
")
|
|
||||||
|
|
||||||
$(CACHE_DIR)/website/index.html: \
|
|
||||||
$(CACHE_DIR)/website/.well-known/openpgpkey \
|
|
||||||
$(CACHE_DIR)/website/.well-known/matrix/server \
|
|
||||||
$(CACHE_DIR)/website/.well-known/matrix/client
|
|
||||||
$(call toolchain," \
|
|
||||||
cd $(SRC_DIR)/website \
|
|
||||||
&& jekyll build \
|
|
||||||
&& cp -R _site/* /home/build/out/website/ \
|
|
||||||
")
|
|
||||||
|
|
||||||
infra/backend/.terraform: out/tools-image.digest $(BACKEND_TF)
|
|
||||||
$(call run-container, \
|
|
||||||
-v $(PWD)/secrets:/secrets \
|
|
||||||
-v $(PWD)/infra:/infra, \
|
|
||||||
$(shell cat out/tools-image.digest), \
|
|
||||||
sops exec-env /secrets/$(ENVIRONMENT).enc.env -- '\
|
|
||||||
tofu -chdir=/infra/backend init -upgrade && \
|
|
||||||
tofu -chdir=/infra/backend refresh \
|
|
||||||
-var environment=$(ENVIRONMENT) \
|
-var environment=$(ENVIRONMENT) \
|
||||||
-var namespace=$(ENVIRONMENT) \
|
-var namespace=$(ENVIRONMENT) \
|
||||||
-var region=$(REGION) \
|
-var region=$(REGION) \
|
||||||
-state $(ENVIRONMENT).tfstate' \
|
-state $(ENVIRONMENT).tfstate'
|
||||||
)
|
|
||||||
|
|
||||||
infra/main/.terraform: out/tools-image.digest \
|
infra/main/.terraform: \
|
||||||
config/$(ENVIRONMENT).tfbackend \
|
config/$(ENVIRONMENT).tfbackend \
|
||||||
$(MAIN_TF)
|
$(MAIN_TF)
|
||||||
$(call run-container, \
|
sops exec-env secrets/$(ENVIRONMENT).enc.env -- '\
|
||||||
-v $(PWD)/secrets:/secrets \
|
tofu -chdir=infra/main init -upgrade \
|
||||||
-v $(PWD)/infra:/infra, \
|
|
||||||
$(shell cat out/tools-image.digest), \
|
|
||||||
sops exec-env /secrets/$(ENVIRONMENT).enc.env -- '\
|
|
||||||
tofu -chdir=/infra/main init -upgrade \
|
|
||||||
-backend-config="../../config/$(ENVIRONMENT).tfbackend" && \
|
-backend-config="../../config/$(ENVIRONMENT).tfbackend" && \
|
||||||
tofu -chdir=/infra/main refresh \
|
tofu -chdir=infra/main refresh \
|
||||||
-var environment=$(ENVIRONMENT) \
|
-var environment=$(ENVIRONMENT) \
|
||||||
-var namespace=$(ENVIRONMENT) \
|
-var namespace=$(ENVIRONMENT) \
|
||||||
-var region=$(REGION) \
|
-var region=$(REGION) \
|
||||||
-state $(ENVIRONMENT).tfstate' \
|
-state $(ENVIRONMENT).tfstate'
|
||||||
)
|
|
||||||
|
|
||||||
infra/backend/$(ENVIRONMENT).tfstate: out/tools-image.digest infra/backend/.terraform
|
infra/backend/$(ENVIRONMENT).tfstate: infra/backend/.terraform
|
||||||
$(call run-container, \
|
sops exec-env secrets/$(ENVIRONMENT).enc.env -- '\
|
||||||
-v $(PWD)/secrets:/secrets \
|
tofu -chdir=infra/backend apply \
|
||||||
-v $(PWD)/infra:/infra, \
|
|
||||||
$(shell cat out/tools-image.digest), \
|
|
||||||
sops exec-env /secrets/$(ENVIRONMENT).enc.env -- '\
|
|
||||||
tofu -chdir=/infra/backend apply \
|
|
||||||
-var environment=$(ENVIRONMENT) \
|
-var environment=$(ENVIRONMENT) \
|
||||||
-var namespace=$(ENVIRONMENT) \
|
-var namespace=$(ENVIRONMENT) \
|
||||||
-var region=$(REGION) \
|
-var region=$(REGION) \
|
||||||
-state $(ENVIRONMENT).tfstate' \
|
-state $(ENVIRONMENT).tfstate'
|
||||||
)
|
|
||||||
|
|
||||||
config/$(ENVIRONMENT).tfbackend: $(OUT_DIGEST) infra/backend/$(ENVIRONMENT).tfstate
|
config/$(ENVIRONMENT).tfbackend: infra/backend/$(ENVIRONMENT).tfstate
|
||||||
$(call run-container, \
|
sops exec-env secrets/$(ENVIRONMENT).enc.env -- '\
|
||||||
-v $(PWD)/secrets:/secrets \
|
tofu -chdir=infra/backend output \
|
||||||
-v $(PWD)/infra:/infra, \
|
|
||||||
$(shell cat $(OUT_DIGEST)), \
|
|
||||||
sops exec-env /secrets/$(ENVIRONMENT).enc.env -- '\
|
|
||||||
tofu -chdir=/infra/backend output \
|
|
||||||
-state $(ENVIRONMENT).tfstate > $@ && \
|
-state $(ENVIRONMENT).tfstate > $@ && \
|
||||||
tofu -chdir=/infra/backend refresh \
|
tofu -chdir=infra/backend refresh \
|
||||||
-var environment=$(ENVIRONMENT) \
|
-var environment=$(ENVIRONMENT) \
|
||||||
-var namespace=$(ENVIRONMENT) \
|
-var namespace=$(ENVIRONMENT) \
|
||||||
-var region=$(REGION) \
|
-var region=$(REGION) \
|
||||||
-state $(ENVIRONMENT).tfstate' \
|
-state $(ENVIRONMENT).tfstate'
|
||||||
)
|
|
||||||
|
|
||||||
build-%: REVISION = $(shell git rev-list -1 HEAD -- images/$*)
|
build-%: REVISION = $(shell git rev-list -1 HEAD -- images/$*)
|
||||||
build-%: SOURCE_DATE_EPOCH = $(shell git log -1 --format=%ct $(REVISION))
|
build-%: SOURCE_DATE_EPOCH = $(shell git log -1 --format=%ct $(REVISION))
|
||||||
build-%: images/tools/Containerfile | out
|
build-%: images/tools/Containerfile | out
|
||||||
export SOURCE_DATE_EPOCH
|
export SOURCE_DATE_EPOCH
|
||||||
cd images/tools
|
|
||||||
$(call build-container,$*,$(VERSION),$<,$(SOURCE_DATE_EPOCH),$(REVISION))
|
$(call build-container,$*,$(VERSION),$<,$(SOURCE_DATE_EPOCH),$(REVISION))
|
||||||
|
|
||||||
load-%: build-%
|
load-%: build-%
|
||||||
|
|
@ -156,28 +105,31 @@ push-%: build-% load-%
|
||||||
|
|
||||||
out/tools-image.digest: out build-tools
|
out/tools-image.digest: out build-tools
|
||||||
|
|
||||||
.PHONY: plan
|
infra/main/talos:
|
||||||
plan: out/tools-image.digest
|
mkdir -p $@
|
||||||
$(call run-container, \
|
|
||||||
-v $(PWD)/secrets:/secrets -v $(PWD)/infra:/infra, \
|
infra/main/talos/%: secrets/$(ENVIRONMENT).% | infra/main/talos
|
||||||
$(shell cat $<), \
|
$(SOPS) --decrypt $< > $@
|
||||||
sops exec-env /secrets/$(ENVIRONMENT).enc.env -- \
|
|
||||||
'tofu -chdir=/infra/main plan \
|
.PHONY: tofu-plan
|
||||||
|
tofu-plan: infra/main/.terraform
|
||||||
|
$(call maybe_decrypt_secret,secrets/$(ENVIRONMENT).talosconfig,infra/main/talos/talosconfig)
|
||||||
|
$(call maybe_decrypt_secret,secrets/$(ENVIRONMENT).kubeconfig,infra/main/talos/kubeconfig)
|
||||||
|
$(call maybe_decrypt_secret,secrets/$(ENVIRONMENT).controlplane.yaml,infra/main/talos/controlplane.yaml)
|
||||||
|
$(call maybe_decrypt_secret,secrets/$(ENVIRONMENT).worker.yaml,infra/main/talos/worker.yaml)
|
||||||
|
sops exec-env secrets/$(ENVIRONMENT).enc.env -- \
|
||||||
|
'tofu -chdir=infra/main plan \
|
||||||
-var environment=$(ENVIRONMENT) \
|
-var environment=$(ENVIRONMENT) \
|
||||||
-var namespace=$(ENVIRONMENT) \
|
-var namespace=$(ENVIRONMENT) \
|
||||||
-var region=$(REGION)' \
|
-var region=$(REGION) \
|
||||||
)
|
$(EXTRA_ARGS)'
|
||||||
|
$(call maybe_encrypt_secret,infra/main/talos/talosconfig,secrets/$(ENVIRONMENT).talosconfig)
|
||||||
|
$(call maybe_encrypt_secret,infra/main/talos/kubeconfig,secrets/$(ENVIRONMENT).kubeconfig)
|
||||||
|
$(call maybe_encrypt_secret,infra/main/talos/controlplane.yaml,secrets/$(ENVIRONMENT).controlplane.yaml)
|
||||||
|
$(call maybe_encrypt_secret,infra/main/talos/worker.yaml,secrets/$(ENVIRONMENT).worker.yaml)
|
||||||
|
|
||||||
.PHONY: new-apply
|
.PHONY: tofu-apply
|
||||||
new-apply: out/tools-image.digest
|
tofu-apply: \
|
||||||
$(call run-container,'\
|
|
||||||
echo $$GPG_AGENT_INFO; \
|
|
||||||
ls -l /S.gpg-agent; \
|
|
||||||
gpg --verbose --list-keys \
|
|
||||||
')
|
|
||||||
|
|
||||||
.PHONY:
|
|
||||||
apply: \
|
|
||||||
$(TERRAFORM) \
|
$(TERRAFORM) \
|
||||||
$(SOPS) \
|
$(SOPS) \
|
||||||
infra/main/.terraform
|
infra/main/.terraform
|
||||||
|
|
@ -197,6 +149,14 @@ apply: \
|
||||||
$(call maybe_encrypt_secret,infra/main/talos/controlplane.yaml,secrets/$(ENVIRONMENT).controlplane.yaml)
|
$(call maybe_encrypt_secret,infra/main/talos/controlplane.yaml,secrets/$(ENVIRONMENT).controlplane.yaml)
|
||||||
$(call maybe_encrypt_secret,infra/main/talos/worker.yaml,secrets/$(ENVIRONMENT).worker.yaml)
|
$(call maybe_encrypt_secret,infra/main/talos/worker.yaml,secrets/$(ENVIRONMENT).worker.yaml)
|
||||||
|
|
||||||
|
kustomizations/%/out.yaml: kustomizations/%
|
||||||
|
env -C kustomizations/$(TARGET) -- kustomize build --enable-alpha-plugins . > $@
|
||||||
|
|
||||||
|
.PHONY: k8s-apply
|
||||||
|
k8s-apply: kustomizations/$(TARGET)/out.yaml
|
||||||
|
sops exec-file --no-fifo "$${HOME}/stack/secrets/production.kubeconfig" "KUBECONFIG={} /usr/bin/kubectl apply -f $<"
|
||||||
|
rm $<
|
||||||
|
|
||||||
$(CACHE_DIR)/secrets:
|
$(CACHE_DIR)/secrets:
|
||||||
mkdir -p $@
|
mkdir -p $@
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue