Moving cloudinit networking to templates. - infra - Terraform IoC for my remote (Hetzner) and local (Incus) servers.
(DIR) Log
(DIR) Files
(DIR) Refs
(DIR) README
---
(DIR) commit 8882e67f38a22800df1720760a4303b663b81c33
(DIR) parent 18dc7341334c0ae572dd8e1fe37a9f5bfe91c598
(HTM) Author: Jay Scott <me@jay.scot>
Date: Thu, 18 Jul 2024 21:21:56 +0100
Moving cloudinit networking to templates.
Diffstat:
D local/cloudinit/blocky-net.yaml | 6 ------
R local/cloudinit/blocky-user.yaml -… | 0
D local/cloudinit/nas-net.yaml | 6 ------
R local/cloudinit/nas-user.yaml -> l… | 0
M local/main.tf | 6 ++++--
A local/templates/network.tftpl | 6 ++++++
M local/terraform.tfvars | 10 ++++++----
M local/variables.tf | 3 ++-
8 files changed, 18 insertions(+), 19 deletions(-)
---
(DIR) diff --git a/local/cloudinit/blocky-net.yaml b/local/cloudinit/blocky-net.yaml
@@ -1,6 +0,0 @@
-version: 2
-ethernets:
- eth0:
- addresses:
- - 192.168.2.10/24
- gateway4: 192.168.2.1
(DIR) diff --git a/local/cloudinit/blocky-user.yaml b/local/cloudinit/blocky.yaml
(DIR) diff --git a/local/cloudinit/nas-net.yaml b/local/cloudinit/nas-net.yaml
@@ -1,6 +0,0 @@
-version: 2
-ethernets:
- eth0:
- addresses:
- - 192.168.2.14/24
- gateway4: 192.168.2.1
(DIR) diff --git a/local/cloudinit/nas-user.yaml b/local/cloudinit/nas.yaml
(DIR) diff --git a/local/main.tf b/local/main.tf
@@ -27,8 +27,10 @@ resource "incus_instance" "main" {
image = each.value.image
config = {
- "cloud-init.user-data" = file(each.value.cloudinit_userdata)
- "cloud-init.network-config" = file(each.value.cloudinit_network)
+ "cloud-init.user-data" = file(each.value.cloudinit_userdata)
+ "cloud-init.network-config" = templatefile("templates/network.tftpl", {
+ addr = each.value.net_addr, gw = each.value.net_gw
+ })
}
dynamic "device" {
(DIR) diff --git a/local/templates/network.tftpl b/local/templates/network.tftpl
@@ -0,0 +1,6 @@
+version: 2
+ethernets:
+ eth0:
+ addresses:
+ - ${addr}
+ gateway4: ${gw}
(DIR) diff --git a/local/terraform.tfvars b/local/terraform.tfvars
@@ -1,13 +1,15 @@
nodes = {
blocky = {
image = "images:alpine/3.20/cloud"
- cloudinit_userdata = "./cloudinit/blocky-user.yaml"
- cloudinit_network = "./cloudinit/blocky-net.yaml"
+ cloudinit_userdata = "./cloudinit/blocky.yaml"
+ net_addr = "192.168.2.10/24"
+ net_gw = "192.168.2.1"
}
nas = {
image = "images:alpine/3.20/cloud"
- cloudinit_userdata = "./cloudinit/nas-user.yaml"
- cloudinit_network = "./cloudinit/nas-net.yaml"
+ cloudinit_userdata = "./cloudinit/nas.yaml"
+ net_addr = "192.168.2.14/24"
+ net_gw = "192.168.2.1"
devices = {
storage = {
type = "disk"
(DIR) diff --git a/local/variables.tf b/local/variables.tf
@@ -3,7 +3,8 @@ variable "nodes" {
type = map(object({
image = string
cloudinit_userdata = string
- cloudinit_network = string
+ net_addr = string
+ net_gw = string
devices = optional(map(object({
type = string
properties = map(any)