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
  HTML 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)