main.tf - infra - Terraform IoC for my remote (Hetzner) and local (Incus) servers.
 (HTM) git clone git://jay.scot/infra
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
       ---
       main.tf (1277B)
       ---
            1 terraform {
            2   required_providers {
            3     incus = {
            4       source  = "lxc/incus"
            5       version = "0.1.2"
            6     }
            7   }
            8 }
            9 
           10 provider "incus" {
           11   generate_client_certificates = true
           12   accept_remote_certificate    = true
           13 
           14   remote {
           15     name    = "incus-server-1"
           16     scheme  = "https"
           17     address = "192.168.1.148"
           18     token   = "eyJjbGllbnRfbmFtZSI6InRlcnJhZm9ybSIsImZpbmdlcnByaW50IjoiOTVmMDI2ZTZlOGY0YWZhYjYwOTgzMmQ0NDRmNjA1YzcwYTA3NTEzMjhhYzJlN2E0NGI5NmNiNWM3ZGY3OTk5ZCIsImFkZHJlc3NlcyI6WyIxOTIuMTY4LjEuMTQ4Ojg0NDMiLCIxOTIuMTY4LjIuMTo4NDQzIiwiW2ZkNDI6ODk1Nzo3YTA2Ojk5N2U6OjFdOjg0NDMiXSwic2VjcmV0IjoiMTMzZTVmN2VmM2Q0M2JjNzZkYmMyZDRlNjhhOWZhMThmMjg1NTI0YjUwZjM4Y2YwOTEzYjMyMmJjOGZmMDI4ZiIsImV4cGlyZXNfYXQiOiIwMDAxLTAxLTAxVDAwOjAwOjAwWiJ9"
           19     default = true
           20   }
           21 }
           22 
           23 resource "incus_instance" "main" {
           24   for_each = var.nodes
           25 
           26   name  = each.key
           27   image = each.value.image
           28 
           29   config = {
           30     "cloud-init.user-data" = file(each.value.cloudinit_userdata)
           31     "cloud-init.network-config" = templatefile("templates/network.tftpl", {
           32       addr = each.value.net_addr, gw = each.value.net_gw
           33     })
           34   }
           35 
           36   dynamic "device" {
           37     for_each = each.value.devices
           38 
           39     content {
           40       name       = device.key
           41       type       = device.value.type
           42       properties = device.value.properties
           43     }
           44 
           45   }
           46 }