-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathMakefile
140 lines (111 loc) · 3.8 KB
/
Makefile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
ORG := jeremyhahn
PACKAGE := hashkube
TARGET_OS := linux
SHRED := $(shell command -v shred 2> /dev/null)
TLSDIR := tls
DEVOPS_BUCKET=hashkube-devops
KEYPAIR=hashkube
VAULT_AUTO_UNSEAL=true
VAULT_KEY_SHARES=3
CLUSTER_NAME=hashkube
CLUSTER_DOMAIN=jeremyhahn.com
default: install
gpg-clean:
rm -rf .gnupg/ vault/keys
certs-clean:
ifndef SHRED
rm -rf vault/tls consul/tls
else
rm -rf vault/tls consul/tls
#shred -z -u vault/tls consul/tls
endif
privatetls-clean:
ifndef SHRED
rm -rf privatetls/.terraform privatetls/terraform.tfstate*
else
rm -rf privatetls/.terraform privatetls/terraform.tfstate*
# shred -z -u privatetls/.terraform privatetls/terraform.tfstate*
endif
terraform-clean:
rm -rf .terraform/ terraform-aws* terraform.tfstate* tfplan
clean: gpg-clean terraform-clean certs-clean privatetls-clean
gpg-init:
@./gpg-init.sh $(VAULT_KEY_SHARES)
gpg-secrets:
@./gpg-secrets.sh $(VAULT_AUTO_UNSEAL) $(VAULT_KEY_SHARES) $(DEVOPS_BUCKET)
clone:
git clone [email protected]:hashicorp/terraform-aws-consul.git
git clone [email protected]:hashicorp/terraform-aws-vault.git
consul-certs:
mkdir consul/tls
cd privatetls; \
terraform init && terraform apply \
-var owner=$(USER) \
-var build_user=$(USER) \
-var 'ca_public_key_file_path=../consul/tls/consul-ca.crt.pem' \
-var 'public_key_file_path=../consul/tls/consul.crt.pem' \
-var 'private_key_file_path=../consul/tls/consul.key.pem' \
-var 'dns_names=["localhost", "service.consul"]' \
-auto-approve
cp -R consul/tls/ vault/
$(MAKE) privatetls-clean
vault-certs:
cd privatetls; \
terraform init && terraform apply \
-var owner=$(USER) \
-var build_user=$(USER) \
-var 'ca_public_key_file_path=../vault/tls/vault-ca.crt.pem' \
-var 'public_key_file_path=../vault/tls/vault.crt.pem' \
-var 'private_key_file_path=../vault/tls/vault.key.pem' \
-var 'dns_names=["localhost", "vault.service.consul"]' \
-auto-approve
$(MAKE) privatetls-clean
certs: clone consul-certs vault-certs
packer:
packer build consul/consul.json
packer build vault/vault.json
terraform-base:
terraform plan \
-var build_user=$(USER) \
-var devops_bucket_name=$(DEVOPS_BUCKET) \
-var default_ssh_key_name=$(KEYPAIR) \
-target=module.vpc \
-target=module.bastionvpn \
-target=module.devops \
-out=tfplan && terraform apply tfplan
terraform-stacks:
terraform plan \
-var build_user=$(USER) \
-var devops_bucket_name=$(DEVOPS_BUCKET) \
-var default_ssh_key_name=$(KEYPAIR) \
-var vault_key_shares=$(VAULT_KEY_SHARES) \
-var vault_auto_unseal=$(VAULT_AUTO_UNSEAL) \
-out=tfplan && terraform apply tfplan
terraform-kube:
cd kubernetes && terraform init && terraform plan \
-var 'cluster_name=$(CLUSTER_NAME)' \
-var 'cluster_admin_email=$(CLUSTER_ADMIN_EMAIL)' \
-var 'cluster_admin_password=$(CLUSTER_ADMIN_PASSWORD)' \
-var 'default_ssh_key_name=$(KEYPAIR)' \
-var 'base_domain=$(CLUSTER_DOMAIN)' \
-var 'cluster_name=$(CLUSTER_NAME)' && terraform apply
terraform-init:
terraform init
terraform: terraform-base terraform-stacks
terraform-all: terraform-init terraform-base secrets terraform-stacks
secrets:
consul keygen | aws s3 cp - s3://$(DEVOPS_BUCKET)/consul_encryption_key
DEVOPS_BUCKET=$(DEVOPS_BUCKET) VAULT_AUTO_UNSEAL=$(VAULT_AUTO_UNSEAL) VAULT_KEY_SHARES=$(VAULT_KEY_SHARES) $(MAKE) gpg-secrets
init: gpg-init certs terraform-init
install: clean init packer terraform-all
without-gpg: clean certs packer terraform-all
without-tls: clean gpg-init packer terraform-all
without-gpg-tls: clean packer terraform-all
quick: terraform-init terraform-base terraform-stacks
deploy: terraform-clean terraform-init terraform-base secrets terraform-stacks
destroy:
terraform destroy -force \
-var build_user=$(USER) \
-var devops_bucket_name=$(DEVOPS_BUCKET) \
-var default_ssh_key_name=$(KEYPAIR) && \
$(MAKE) terraform-clean