Skip to content

Commit

Permalink
Merge pull request #38 from utilitywarehouse/general-volume-recognition
Browse files Browse the repository at this point in the history
General volume recognition
  • Loading branch information
hectorhuertas committed May 15, 2018
2 parents b5111b3 + 82dc193 commit 924a926
Show file tree
Hide file tree
Showing 11 changed files with 81 additions and 113 deletions.
46 changes: 11 additions & 35 deletions cfssl.tf
Original file line number Diff line number Diff line change
Expand Up @@ -36,45 +36,21 @@ data "ignition_file" "cfssl-client-config" {
}
}

data "template_file" "cfssl-disk-formatter" {
template = "${ var.cloud_provider == "aws" ?
file("${path.module}/resources/aws-disk-formatter.service")
:var.cloud_provider == "gce" ?
file("${path.module}/resources/gce-disk-formatter.service")
:""
}"

vars {
volumeid = "${var.cfssl_data_volumeid}"
user = "root"
group = "root"
filesystem = "ext4"
}
}

data "ignition_systemd_unit" "cfssl-disk-formatter" {
name = "cfssl-disk-formatter.service"
content = "${data.template_file.cfssl-disk-formatter.rendered}"
}

data "template_file" "cfssl-disk-mounter" {
template = "${ var.cloud_provider == "aws" ?
file("${path.module}/resources/aws-disk-mounter.mount")
:var.cloud_provider == "gce" ?
file("${path.module}/resources/gce-disk-mounter.mount")
:""
}"
template = "${file("${path.module}/resources/disk-mounter.service")}"

vars {
volumeid = "${var.cfssl_data_volumeid}"
mountpoint = "/var/lib/cfssl"
filesystem = "ext4"
disk-formatter = "cfssl-disk-formatter.service"
script_path = "/opt/bin/format-and-mount"
volume_id = "${var.cfssl_data_volumeid}"
filesystem = "ext4"
user = "root"
group = "root"
mountpoint = "/var/lib/cfssl"
}
}

data "ignition_systemd_unit" "var-lib-cfssl-mounter" {
name = "var-lib-cfssl.mount"
data "ignition_systemd_unit" "cfssl-disk-mounter" {
name = "disk-mounter.service"
content = "${data.template_file.cfssl-disk-mounter.rendered}"
}

Expand Down Expand Up @@ -192,6 +168,7 @@ data "ignition_config" "cfssl" {
data.ignition_file.cfssl-sk-csr.id,
data.ignition_file.cfssl-nginx-conf.id,
data.ignition_file.cfssl-nginx-auth.id,
data.ignition_file.format-and-mount.id,
),
var.cfssl_additional_files,
)}"]
Expand All @@ -204,8 +181,7 @@ data "ignition_config" "cfssl" {
data.ignition_systemd_unit.node-exporter.id,
data.ignition_systemd_unit.cfssl.id,
data.ignition_systemd_unit.cfssl-nginx.id,
data.ignition_systemd_unit.cfssl-disk-formatter.id,
data.ignition_systemd_unit.var-lib-cfssl-mounter.id,
data.ignition_systemd_unit.cfssl-disk-mounter.id,
),
module.cfssl-restarter.systemd_units,
var.cfssl_additional_systemd_units,
Expand Down
10 changes: 10 additions & 0 deletions common.tf
Original file line number Diff line number Diff line change
Expand Up @@ -61,3 +61,13 @@ data "ignition_systemd_unit" "node-exporter" {

content = "${data.template_file.node-exporter.rendered}"
}

data "ignition_file" "format-and-mount" {
mode = 0755
filesystem = "root"
path = "/opt/bin/format-and-mount"

content {
content = "${file("${path.module}/resources/format-and-mount")}"
}
}
56 changes: 14 additions & 42 deletions etcd.tf
Original file line number Diff line number Diff line change
Expand Up @@ -67,52 +67,24 @@ data "ignition_file" "etcdctl-wrapper" {
}
}

data "template_file" "disk-formatter" {
count = "${length(var.etcd_addresses)}"

template = "${ var.cloud_provider == "aws" ?
file("${path.module}/resources/aws-disk-formatter.service")
:var.cloud_provider == "gce" ?
file("${path.module}/resources/gce-disk-formatter.service")
:""
}"

vars {
volumeid = "${var.etcd_data_volumeids[count.index]}"
user = "etcd"
group = "etcd"
filesystem = "ext4"
}
}

data "ignition_systemd_unit" "disk-formatter" {
count = "${length(var.etcd_addresses)}"
name = "disk-formatter.service"
content = "${element(data.template_file.disk-formatter.*.rendered, count.index)}"
}

data "template_file" "disk-mounter" {
count = "${length(var.etcd_addresses)}"

template = "${ var.cloud_provider == "aws" ?
file("${path.module}/resources/aws-disk-mounter.mount")
:var.cloud_provider == "gce" ?
file("${path.module}/resources/gce-disk-mounter.mount")
:""
}"
data "template_file" "etcd-disk-mounter" {
count = "${length(var.etcd_addresses)}"
template = "${file("${path.module}/resources/disk-mounter.service")}"

vars {
volumeid = "${var.etcd_data_volumeids[count.index]}"
mountpoint = "/var/lib/etcd"
filesystem = "ext4"
disk-formatter = "disk-formatter.service"
script_path = "/opt/bin/format-and-mount"
volume_id = "${var.etcd_data_volumeids[count.index]}"
filesystem = "ext4"
user = "etcd"
group = "etcd"
mountpoint = "/var/lib/etcd"
}
}

data "ignition_systemd_unit" "var-lib-etcd-mounter" {
data "ignition_systemd_unit" "etcd-disk-mounter" {
count = "${length(var.etcd_addresses)}"
name = "var-lib-etcd.mount"
content = "${element(data.template_file.disk-mounter.*.rendered, count.index)}"
name = "disk-mounter.service"
content = "${data.template_file.etcd-disk-mounter.*.rendered[count.index]}"
}

resource "null_resource" "etcd_member" {
Expand Down Expand Up @@ -164,6 +136,7 @@ data "ignition_config" "etcd" {
element(data.ignition_file.etcd-cfssl-new-cert.*.id, count.index),
data.ignition_file.etcd-prom-machine-role.id,
element(data.ignition_file.etcdctl-wrapper.*.id, count.index),
data.ignition_file.format-and-mount.id,
),
var.etcd_additional_files,
)}"]
Expand All @@ -175,8 +148,7 @@ data "ignition_config" "etcd" {
data.ignition_systemd_unit.docker-opts-dropin.id,
data.ignition_systemd_unit.node-exporter.id,
element(data.ignition_systemd_unit.etcd-member-dropin.*.id, count.index),
element(data.ignition_systemd_unit.disk-formatter.*.id, count.index),
element(data.ignition_systemd_unit.var-lib-etcd-mounter.*.id, count.index),
element(data.ignition_systemd_unit.etcd-disk-mounter.*.id, count.index),
),
module.etcd-member-restarter.systemd_units,
var.etcd_additional_systemd_units,
Expand Down
8 changes: 0 additions & 8 deletions resources/aws-disk-formatter.service

This file was deleted.

8 changes: 0 additions & 8 deletions resources/aws-disk-mounter.mount

This file was deleted.

4 changes: 2 additions & 2 deletions resources/cfssl.service
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
[Unit]
Description=cfssl service
After=var-lib-cfssl.mount
Requires=var-lib-cfssl.mount
After=disk-mounter.service
Requires=disk-mounter.service
[Service]
WorkingDirectory=/var/lib/cfssl
ExecStartPre=/bin/sh -c 'if [ ! -f sk-key.pem ]; then /opt/bin/cfssl genkey /etc/cfssl/sk-csr.json | /opt/bin/cfssljson -bare sk && rm sk.csr; fi'
Expand Down
6 changes: 6 additions & 0 deletions resources/disk-mounter.service
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
[Unit]
Description=Mounts device on mountpoint, formatting it if necessary
[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=${script_path} ${volume_id} ${filesystem} ${user} ${group} ${mountpoint}
4 changes: 2 additions & 2 deletions resources/etcd-member-dropin.conf
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[Unit]
After=var-lib-etcd.mount
Requires=var-lib-etcd.mount
After=disk-mounter.service
Requires=disk-mounter.service
[Service]
Environment="ETCD_IMAGE_URL=${etcd_image_url}"
Environment="ETCD_IMAGE_TAG=${etcd_image_tag}"
Expand Down
36 changes: 36 additions & 0 deletions resources/format-and-mount
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
#!/bin/bash

readonly volume_id="$1"
readonly filesystem="$2"
readonly user="$3"
readonly group="$4"
readonly mountpoint="$5"

# Location used by providers:
# AWS nvme (m5): /dev/disk/by-id/nvme-Amazon_Elastic_Block_Store_${volume_id}
# AWS non-nvme (t2): /dev/${volume_id}
# GCP: /dev/disk/by-id/google-${volume_id}
readonly locations="
/dev/disk/by-id/nvme-Amazon_Elastic_Block_Store_${volume_id}
/dev/${volume_id}
/dev/disk/by-id/google-${volume_id}
"
until mountpoint -q ${mountpoint}; do
sleep 8
for device in ${locations}; do
echo "Looking for device ${device}..."
if [[ -e "${device}" ]]; then
echo "Device ${device} found"
fsck -a ${device} || (
mkfs.${filesystem} ${device} \
&& mount ${device} /mnt \
&& chown -R ${user}:${group} /mnt \
&& umount /mnt
)
mkdir -p ${mountpoint}
mount -t ${filesystem} ${device} ${mountpoint}
echo "${device} mounted at ${mountpoint}"
break
fi
done
done
8 changes: 0 additions & 8 deletions resources/gce-disk-formatter.service

This file was deleted.

8 changes: 0 additions & 8 deletions resources/gce-disk-mounter.mount

This file was deleted.

0 comments on commit 924a926

Please sign in to comment.