diff --git a/terraform/modules/docker-network/swarm-manager-node.tf b/terraform/modules/docker-network/swarm-manager-node.tf index 0f7dcaa..2231bfb 100644 --- a/terraform/modules/docker-network/swarm-manager-node.tf +++ b/terraform/modules/docker-network/swarm-manager-node.tf @@ -42,6 +42,26 @@ resource "hcloud_server_network" "nginx_private" { ip = var.private_node_ips[count.index] } +resource "hcloud_volume" "certificates" { + name = format("%s_%s_%s", "docker", var.stage_name, "certificates") + location = element(var.locations.*.name, 0) + size = 10 + labels = { + "docker" : "yes", + "swarm" : "yes", + "certificates" : "yes" + } + format = "ext4" +} + +resource "hcloud_volume_attachment" "certificates" { + count = var.number_nodes + + server_id = hcloud_server.node[count.index].id + volume_id = hcloud_volume.certificates.id + automount = true +} + resource "hcloud_server" "node" { count = var.number_nodes @@ -93,7 +113,9 @@ resource "hcloud_server" "node" { main_node : count.index == 0 main_node_private_ip : var.private_node_ips[0] })) - certbot_setup : base64encode(file("${path.module}/templates/scripts/certbot-setup.sh")) + certificate_setup : base64encode(templatefile("${path.module}/templates/scripts/certificate-setup.sh", { + volume_id : hcloud_volume.certificates.id + })) }) network { diff --git a/terraform/modules/docker-network/templates/cloud-init-manager-node.yaml.tftpl b/terraform/modules/docker-network/templates/cloud-init-manager-node.yaml.tftpl index bf97101..ba39565 100644 --- a/terraform/modules/docker-network/templates/cloud-init-manager-node.yaml.tftpl +++ b/terraform/modules/docker-network/templates/cloud-init-manager-node.yaml.tftpl @@ -42,8 +42,8 @@ write_files: encoding: base64 defer: true - owner: root:root - content: "${certbot_setup}" - path: /run/tmpfiles.d/certbot-setup.sh + content: "${certificate_setup}" + path: /run/tmpfiles.d/certificate-setup.sh encoding: base64 defer: true %{ if main_node ~} @@ -55,11 +55,11 @@ write_files: %{ endif ~} runcmd: - install /run/tmpfiles.d/*.sh /usr/local/bin + - /usr/local/bin/certificate-setup.sh - /usr/local/bin/install-packages.sh - /usr/local/bin/firewall-setup.sh - /usr/local/bin/ssh-setup.sh - /usr/local/bin/sysctl-setup.sh - - /usr/local/bin/certbot-setup.sh %{ if main_node ~} - /usr/local/bin/swarm-setup.sh %{ endif ~} diff --git a/terraform/modules/docker-network/templates/scripts/certbot-setup.sh b/terraform/modules/docker-network/templates/scripts/certbot-setup.sh deleted file mode 100644 index 978a4f8..0000000 --- a/terraform/modules/docker-network/templates/scripts/certbot-setup.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/bash - -mkdir -p /var/www/certbot diff --git a/terraform/modules/docker-network/templates/scripts/certificate-setup.sh.tftpl b/terraform/modules/docker-network/templates/scripts/certificate-setup.sh.tftpl new file mode 100644 index 0000000..0008004 --- /dev/null +++ b/terraform/modules/docker-network/templates/scripts/certificate-setup.sh.tftpl @@ -0,0 +1,4 @@ +#!/bin/bash + +mkdir -p /var/www/certbot +ln -s /mnt/HC_Volume_${volume_id} /etc/letsencrypt