Skip to content

Commit 3237185

Browse files
nathansamson5tefan
authored andcommitted
* New setting: prefix to create unique droplet names * New settings: sizes to customize the droplet sizes * Allow comma seperated SSH keys. Existing config still works as well * Allow terraform apply to be run from other directory
1 parent f3a2cf6 commit 3237185

6 files changed

+50
-36
lines changed

cfssl/generate_admin.sh

+3-2
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
#!/bin/bash
22

33
SECRETS_DIR=$PWD/secrets
4+
CFSSL_DIR=$(dirname "${BASH_SOURCE[0]}")
45

56
cfssl gencert -ca=$SECRETS_DIR/ca.pem \
67
-ca-key=$SECRETS_DIR/ca-key.pem \
7-
-config=$PWD/cfssl/ca-config.json \
8-
-profile=client $PWD/cfssl/client.json | cfssljson -bare $SECRETS_DIR/admin
8+
-config=$CFSSL_DIR/ca-config.json \
9+
-profile=client $CFSSL_DIR/client.json | cfssljson -bare $SECRETS_DIR/admin

cfssl/generate_ca.sh

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
#!/bin/bash
22

33
SECRETS_DIR=$PWD/secrets
4+
CFSSL_DIR=$(dirname "${BASH_SOURCE[0]}")
45

5-
cfssl gencert -initca $PWD/cfssl/ca-csr.json | cfssljson -bare $SECRETS_DIR/ca -
6+
cfssl gencert -initca $CFSSL_DIR/ca-csr.json | cfssljson -bare $SECRETS_DIR/ca -

cfssl/generate_client.sh

+3-2
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
#!/bin/bash
22

33
SECRETS_DIR=$PWD/secrets
4+
CFSSL_DIR=$(dirname "${BASH_SOURCE[0]}")
45

56
cfssl gencert -ca=$SECRETS_DIR/ca.pem \
67
-ca-key=$SECRETS_DIR/ca-key.pem \
7-
-config=$PWD/cfssl/ca-config.json \
8-
-profile=client $PWD/cfssl/client.json | cfssljson -bare $SECRETS_DIR/client-$1
8+
-config=$CFSSL_DIR/ca-config.json \
9+
-profile=client $CFSSL_DIR/client.json | cfssljson -bare $SECRETS_DIR/client-$1

cfssl/generate_server.sh

+3-2
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
11
#!/bin/bash
22

33
SECRETS_DIR=$PWD/secrets
4+
CFSSL_DIR=$(dirname "${BASH_SOURCE[0]}")
45

5-
template=$(cat $PWD/cfssl/server.json | sed "s/\${SERVERNAME}/$1/g")
6+
template=$(cat $CFSSL_DIR/server.json | sed "s/\${SERVERNAME}/$1/g")
67

78
echo $template | cfssl gencert -ca=$SECRETS_DIR/ca.pem \
89
-ca-key=$SECRETS_DIR/ca-key.pem \
9-
-config=$PWD/cfssl/ca-config.json \
10+
-config=$CFSSL_DIR/ca-config.json \
1011
-profile=server \
1112
-hostname="$2" - | cfssljson -bare $SECRETS_DIR/$1

deploy.tf

+38-27
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,23 @@ variable "number_of_workers" {}
2121
variable "hypercube_version" {
2222
default = "v1.3.6_coreos.0"
2323
}
24+
25+
variable "prefix" {
26+
default = ""
27+
}
28+
29+
variable "size_etcd" {
30+
default = "512mb"
31+
}
32+
33+
variable "size_master" {
34+
default = "512mb"
35+
}
36+
37+
variable "size_worker" {
38+
default = "512mb"
39+
}
40+
2441
###############################################################################
2542
#
2643
# Specify provider
@@ -42,26 +59,24 @@ provider "digitalocean" {
4259

4360
resource "digitalocean_droplet" "k8s_etcd" {
4461
image = "coreos-stable"
45-
name = "k8s-etcd"
62+
name = "${var.prefix}k8s-etcd"
4663
region = "${var.do_region}"
4764
private_networking = true
48-
size = "512mb"
49-
user_data = "${file("00-etcd.yaml")}"
50-
ssh_keys = [
51-
"${var.ssh_fingerprint}"
52-
]
65+
size = "${var.size_etcd}"
66+
user_data = "${file("${path.module}/00-etcd.yaml")}"
67+
ssh_keys = ["${split(",", var.ssh_fingerprint)}"]
5368

5469
# Generate the Certificate Authority
5570
provisioner "local-exec" {
5671
command = <<EOF
57-
$PWD/cfssl/generate_ca.sh
72+
${path.module}/cfssl/generate_ca.sh
5873
EOF
5974
}
6075

6176
# Generate k8s-etcd server certificate
6277
provisioner "local-exec" {
6378
command = <<EOF
64-
$PWD/cfssl/generate_server.sh k8s_etcd ${digitalocean_droplet.k8s_etcd.ipv4_address_private}
79+
${path.module}/cfssl/generate_server.sh k8s_etcd ${digitalocean_droplet.k8s_etcd.ipv4_address_private}
6580
EOF
6681
}
6782

@@ -120,7 +135,7 @@ EOF
120135

121136

122137
data "template_file" "master_yaml" {
123-
template = "${file("01-master.yaml")}"
138+
template = "${file("${path.module}/01-master.yaml")}"
124139
vars {
125140
DNS_SERVICE_IP = "10.3.0.10"
126141
ETCD_IP = "${digitalocean_droplet.k8s_etcd.ipv4_address_private}"
@@ -140,19 +155,17 @@ data "template_file" "master_yaml" {
140155

141156
resource "digitalocean_droplet" "k8s_master" {
142157
image = "coreos-stable"
143-
name = "k8s-master"
158+
name = "${var.prefix}k8s-master"
144159
region = "${var.do_region}"
145160
private_networking = true
146-
size = "512mb"
161+
size = "${var.size_master}"
147162
user_data = "${data.template_file.master_yaml.rendered}"
148-
ssh_keys = [
149-
"${var.ssh_fingerprint}"
150-
]
163+
ssh_keys = ["${split(",", var.ssh_fingerprint)}"]
151164

152165
# Generate k8s_master server certificate
153166
provisioner "local-exec" {
154167
command = <<EOF
155-
$PWD/cfssl/generate_server.sh k8s_master "${digitalocean_droplet.k8s_master.ipv4_address},${digitalocean_droplet.k8s_master.ipv4_address_private},10.3.0.1,kubernetes.default,kubernetes"
168+
${path.module}/cfssl/generate_server.sh k8s_master "${digitalocean_droplet.k8s_master.ipv4_address},${digitalocean_droplet.k8s_master.ipv4_address_private},10.3.0.1,kubernetes.default,kubernetes"
156169
EOF
157170
}
158171

@@ -182,7 +195,7 @@ EOF
182195
# Generate k8s_master client certificate
183196
provisioner "local-exec" {
184197
command = <<EOF
185-
$PWD/cfssl/generate_client.sh k8s_master
198+
${path.module}/cfssl/generate_client.sh k8s_master
186199
EOF
187200
}
188201

@@ -243,7 +256,7 @@ EOF
243256

244257

245258
data "template_file" "worker_yaml" {
246-
template = "${file("02-worker.yaml")}"
259+
template = "${file("${path.module}/02-worker.yaml")}"
247260
vars {
248261
DNS_SERVICE_IP = "10.3.0.10"
249262
ETCD_IP = "${digitalocean_droplet.k8s_etcd.ipv4_address_private}"
@@ -263,21 +276,19 @@ data "template_file" "worker_yaml" {
263276
resource "digitalocean_droplet" "k8s_worker" {
264277
count = "${var.number_of_workers}"
265278
image = "coreos-stable"
266-
name = "${format("k8s-worker-%02d", count.index + 1)}"
279+
name = "${var.prefix}${format("k8s-worker-%02d", count.index + 1)}"
267280
region = "${var.do_region}"
268-
size = "512mb"
281+
size = "${var.size_worker}"
269282
private_networking = true
270283
user_data = "${data.template_file.worker_yaml.rendered}"
271-
ssh_keys = [
272-
"${var.ssh_fingerprint}"
273-
]
284+
ssh_keys = ["${split(",", var.ssh_fingerprint)}"]
274285

275286

276287

277288
# Generate k8s_worker client certificate
278289
provisioner "local-exec" {
279290
command = <<EOF
280-
$PWD/cfssl/generate_client.sh k8s_worker
291+
${path.module}/cfssl/generate_client.sh k8s_worker
281292
EOF
282293
}
283294

@@ -343,11 +354,11 @@ resource "null_resource" "make_admin_key" {
343354
depends_on = ["digitalocean_droplet.k8s_worker"]
344355
provisioner "local-exec" {
345356
command = <<EOF
346-
$PWD/cfssl/generate_admin.sh
357+
${path.module}/cfssl/generate_admin.sh
347358
EOF
348359
}
349360
}
350-
361+
351362
resource "null_resource" "setup_kubectl" {
352363
depends_on = ["null_resource.make_admin_key"]
353364
provisioner "local-exec" {
@@ -372,7 +383,7 @@ resource "null_resource" "deploy_dns_addon" {
372383
provisioner "local-exec" {
373384
command = <<EOF
374385
until kubectl get pods 2>/dev/null; do printf '.'; sleep 5; done
375-
kubectl create -f 03-dns-addon.yaml
386+
kubectl create -f ${path.module}/03-dns-addon.yaml
376387
EOF
377388
}
378389
}
@@ -381,7 +392,7 @@ resource "null_resource" "deploy_microbot" {
381392
depends_on = ["null_resource.setup_kubectl"]
382393
provisioner "local-exec" {
383394
command = <<EOF
384-
sed -e "s/\$EXT_IP1/${digitalocean_droplet.k8s_worker.0.ipv4_address}/" < 04-microbot.yaml > ./secrets/04-microbot.rendered.yaml
395+
sed -e "s/\$EXT_IP1/${digitalocean_droplet.k8s_worker.0.ipv4_address}/" < ${path.module}/04-microbot.yaml > ./secrets/04-microbot.rendered.yaml
385396
until kubectl get pods 2>/dev/null; do printf '.'; sleep 5; done
386397
kubectl create -f ./secrets/04-microbot.rendered.yaml
387398

setup_terraform.sh

+1-2
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,11 @@ function get_ssh_version {
1111
[[ -n $ZSH_VERSION ]] && setopt LOCAL_OPTIONS KSH_ARRAYS BASH_REMATCH
1212
[[ $ssh_ver =~ OpenSSH_([0-9][.][0-9]) ]] && echo "${BASH_REMATCH[1]}"
1313
}
14-
14+
1515

1616
# if ssh version is under 6.9, use -lf, otherwise must use the -E version
1717
if ! awk -v ver="$(get_ssh_version)" 'BEGIN { if (ver < 6.9) exit 1; }'; then
1818
export TF_VAR_ssh_fingerprint=$(ssh-keygen -lf ~/.ssh/id_rsa.pub | awk '{print $2}')
1919
else
2020
export TF_VAR_ssh_fingerprint=$(ssh-keygen -E MD5 -lf ~/.ssh/id_rsa.pub | awk '{print $2}' | sed 's/MD5://g')
2121
fi
22-

0 commit comments

Comments
 (0)