Newer
Older
openstack-caracal-dc-dc / docs / audit / outer-plan-20260718.txt
module.vr1_dc0_planes.libvirt_network.plane["metal-admin"]: Refreshing state... [id=29eca094-9b40-4e8c-9750-d1c7857f0a3c]
module.vr1_dc1_storage.libvirt_pool.dc: Refreshing state... [id=4a1df114-ee04-4c80-9233-cc0c140c8556]
module.vr1_dc0_planes.libvirt_network.plane["storage"]: Refreshing state... [id=e5558f0e-9601-48fc-8eff-6a0e6adad0d7]
module.mesh_vr1_dc1_office1.libvirt_network.link: Refreshing state... [id=38a20d2d-cd91-4604-a5f4-8e2a6609633c]
module.mesh_vr1_dc0_vr1_dc1.libvirt_network.link: Refreshing state... [id=9cbc8589-9f40-48e6-872e-ef3abfe29a93]
module.vr1_dc0_planes.libvirt_network.plane["replication"]: Refreshing state... [id=295dca85-52de-4e78-9894-16e48d969654]
module.vr1_dc0_planes.libvirt_network.plane["metal-internal"]: Refreshing state... [id=99768f9d-256a-4a89-90dd-38de04efea03]
module.vr1_dc0_planes.libvirt_network.plane["provider-public"]: Refreshing state... [id=3bb1e17c-53ce-4c1a-a4af-c9d6ad1f1c1b]
module.vr1_dc0_planes.libvirt_network.plane["data-tenant"]: Refreshing state... [id=31782537-790a-4399-a3a9-64dce7232e7b]
module.voffice1.libvirt_cloudinit_disk.seed: Refreshing state... [id=775234004c2669d9]
module.office1_storage.libvirt_pool.dc: Refreshing state... [id=5f94194c-69c1-4b04-a85f-c18d87303a03]
module.vr1_dc0_storage.libvirt_pool.dc: Refreshing state... [id=7ce1101c-a89e-40ca-9263-5f572bee40a9]
module.mesh_vr1_dc0_office1.libvirt_network.link: Refreshing state... [id=8318548f-c3d6-4e06-bef4-fe3f11d68125]
module.office1_network.libvirt_network.office1_local: Refreshing state... [id=8fdd2a97-417c-44d4-89e4-ae8d65594135]
module.ubuntu_noble_base.libvirt_volume.base: Refreshing state... [id=/var/lib/libvirt/vr1/office1/ubuntu-24.04-base.qcow2]
module.voffice1.libvirt_volume.seed: Refreshing state... [id=/var/lib/libvirt/vr1/office1/voffice1-cloudinit.iso]
module.office1_opnsense.libvirt_volume.disk: Refreshing state... [id=/var/lib/libvirt/vr1/office1/office1-opnsense-disk.qcow2]
module.voffice1.libvirt_volume.disk: Refreshing state... [id=/var/lib/libvirt/vr1/office1/voffice1-disk.qcow2]
module.office1_opnsense.libvirt_domain.vm: Refreshing state... [name=office1-opnsense]
module.voffice1.libvirt_domain.vm: Refreshing state... [name=voffice1]

Note: Objects have changed outside of OpenTofu

OpenTofu detected the following changes made outside of OpenTofu since the
last "tofu apply" which may have affected this plan:

  # module.office1_opnsense.libvirt_domain.vm has changed
  ~ resource "libvirt_domain" "vm" {
      ~ id          = 13 -> 2
        name        = "office1-opnsense"
        # (10 unchanged attributes hidden)
    }

  # module.voffice1.libvirt_cloudinit_disk.seed has been deleted
  - resource "libvirt_cloudinit_disk" "seed" {
        id             = "775234004c2669d9"
        name           = "voffice1-cloudinit"
      - path           = "/tmp/terraform-provider-libvirt-cloudinit/cloudinit-775234004c2669d9.iso" -> null
        # (4 unchanged attributes hidden)
    }

  # module.voffice1.libvirt_domain.vm has changed
  ~ resource "libvirt_domain" "vm" {
      ~ id          = 14 -> 1
        name        = "voffice1"
        # (10 unchanged attributes hidden)
    }


Unless you have made equivalent changes to your configuration, or ignored the
relevant attributes using ignore_changes, the following plan may include
actions to undo or respond to these changes.

─────────────────────────────────────────────────────────────────────────────

OpenTofu used the selected providers to generate the following execution
plan. Resource actions are indicated with the following symbols:
  + create
  ~ update in-place (current -> planned)
  - destroy
-/+ destroy and then create replacement

OpenTofu will perform the following actions:

  # module.office1_opnsense.libvirt_domain.vm will be updated in-place
  ~ resource "libvirt_domain" "vm" {
      + autostart   = true
        id          = 2
        name        = "office1-opnsense"
        # (10 unchanged attributes hidden)
    }

  # module.voffice1.libvirt_cloudinit_disk.seed will be created
  + resource "libvirt_cloudinit_disk" "seed" {
      + id             = (known after apply)
      + meta_data      = <<-EOT
            instance-id: voffice1-d114
            local-hostname: voffice1
        EOT
      + name           = "voffice1-cloudinit"
      + network_config = <<-EOT
            version: 2
            ethernets:
              lan:
                match:
                  name: "en*"
                dhcp4: true
        EOT
      + path           = (known after apply)
      + size           = (known after apply)
      + user_data      = <<-EOT
            #cloud-config
            hostname: voffice1
            fqdn: voffice1.cloud.neumatrix.local
            manage_etc_hosts: true
            users:
              - name: jessea123
                groups: [adm, sudo]
                shell: /bin/bash
                sudo: "ALL=(ALL) NOPASSWD:ALL"
                ssh_authorized_keys:
                  - ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAINOgHIEyfMecOJ/G2Tbw5kKMd4ofUfxdyhVb00cjcpUX vr1-office1-svc
            package_update: true
            packages:
              - qemu-guest-agent
            runcmd:
              - [systemctl, enable, --now, qemu-guest-agent]
        EOT
    }

  # module.voffice1.libvirt_domain.vm will be updated in-place
  ~ resource "libvirt_domain" "vm" {
      + autostart   = true
        id          = 1
        name        = "voffice1"
        # (10 unchanged attributes hidden)
    }

  # module.voffice1.libvirt_volume.seed must be replaced
-/+ resource "libvirt_volume" "seed" {
      ~ allocation = 45056 -> (known after apply)
      ~ capacity   = 45056 -> (known after apply)
      ~ create     = { # forces replacement
          ~ content = {
              ~ url = "/tmp/terraform-provider-libvirt-cloudinit/cloudinit-775234004c2669d9.iso" -> (known after apply)
            }
        }
      ~ id         = "/var/lib/libvirt/vr1/office1/voffice1-cloudinit.iso" -> (known after apply)
      ~ key        = "/var/lib/libvirt/vr1/office1/voffice1-cloudinit.iso" -> (known after apply)
        name       = "voffice1-cloudinit.iso"
      ~ path       = "/var/lib/libvirt/vr1/office1/voffice1-cloudinit.iso" -> (known after apply)
      ~ physical   = 45056 -> (known after apply)
        # (1 unchanged attribute hidden)
    }

  # module.vr1_dc0_planes.libvirt_network.plane["data-tenant"] will be destroyed
  # (because libvirt_network.plane is not in configuration)
  - resource "libvirt_network" "plane" {
      - autostart = true -> null
      - domain    = {
          - name = "data-tenant.vr1-dc0.cloud.neumatrix.local" -> null
        } -> null
      - id        = "31782537-790a-4399-a3a9-64dce7232e7b" -> null
      - mtu       = {
          - size = 9000 -> null
        } -> null
      - name      = "vr1-dc0-data-tenant" -> null
      - uuid      = "31782537-790a-4399-a3a9-64dce7232e7b" -> null
    }

  # module.vr1_dc0_planes.libvirt_network.plane["metal-admin"] will be destroyed
  # (because libvirt_network.plane is not in configuration)
  - resource "libvirt_network" "plane" {
      - autostart = true -> null
      - domain    = {
          - name = "metal-admin.vr1-dc0.cloud.neumatrix.local" -> null
        } -> null
      - id        = "29eca094-9b40-4e8c-9750-d1c7857f0a3c" -> null
      - mtu       = {
          - size = 9000 -> null
        } -> null
      - name      = "vr1-dc0-metal-admin" -> null
      - uuid      = "29eca094-9b40-4e8c-9750-d1c7857f0a3c" -> null
    }

  # module.vr1_dc0_planes.libvirt_network.plane["metal-internal"] will be destroyed
  # (because libvirt_network.plane is not in configuration)
  - resource "libvirt_network" "plane" {
      - autostart = true -> null
      - domain    = {
          - name = "metal-internal.vr1-dc0.cloud.neumatrix.local" -> null
        } -> null
      - id        = "99768f9d-256a-4a89-90dd-38de04efea03" -> null
      - mtu       = {
          - size = 9000 -> null
        } -> null
      - name      = "vr1-dc0-metal-internal" -> null
      - uuid      = "99768f9d-256a-4a89-90dd-38de04efea03" -> null
    }

  # module.vr1_dc0_planes.libvirt_network.plane["provider-public"] will be destroyed
  # (because libvirt_network.plane is not in configuration)
  - resource "libvirt_network" "plane" {
      - autostart = true -> null
      - domain    = {
          - name = "provider-public.vr1-dc0.cloud.neumatrix.local" -> null
        } -> null
      - id        = "3bb1e17c-53ce-4c1a-a4af-c9d6ad1f1c1b" -> null
      - mtu       = {
          - size = 9000 -> null
        } -> null
      - name      = "vr1-dc0-provider-public" -> null
      - uuid      = "3bb1e17c-53ce-4c1a-a4af-c9d6ad1f1c1b" -> null
    }

  # module.vr1_dc0_planes.libvirt_network.plane["replication"] will be destroyed
  # (because libvirt_network.plane is not in configuration)
  - resource "libvirt_network" "plane" {
      - autostart = true -> null
      - domain    = {
          - name = "replication.vr1-dc0.cloud.neumatrix.local" -> null
        } -> null
      - id        = "295dca85-52de-4e78-9894-16e48d969654" -> null
      - mtu       = {
          - size = 9000 -> null
        } -> null
      - name      = "vr1-dc0-replication" -> null
      - uuid      = "295dca85-52de-4e78-9894-16e48d969654" -> null
    }

  # module.vr1_dc0_planes.libvirt_network.plane["storage"] will be destroyed
  # (because libvirt_network.plane is not in configuration)
  - resource "libvirt_network" "plane" {
      - autostart = true -> null
      - domain    = {
          - name = "storage.vr1-dc0.cloud.neumatrix.local" -> null
        } -> null
      - id        = "e5558f0e-9601-48fc-8eff-6a0e6adad0d7" -> null
      - mtu       = {
          - size = 9000 -> null
        } -> null
      - name      = "vr1-dc0-storage" -> null
      - uuid      = "e5558f0e-9601-48fc-8eff-6a0e6adad0d7" -> null
    }

  # module.vr1_dc0_uplink.libvirt_network.site_wan will be created
  + resource "libvirt_network" "site_wan" {
      + autostart = true
      + domain    = {
          + name = "vr1-dc0-uplink"
        }
      + forward   = {
          + mode = "nat"
        }
      + id        = (known after apply)
      + ips       = [
          + {
              + address = "172.30.2.1"
              + prefix  = 24
            },
        ]
      + mtu       = {
          + size = 1500
        }
      + name      = "vr1-dc0-uplink"
      + uuid      = (known after apply)
    }

  # module.vvr1_dc0.libvirt_cloudinit_disk.seed will be created
  + resource "libvirt_cloudinit_disk" "seed" {
      + id             = (known after apply)
      + meta_data      = <<-EOT
            instance-id: vvr1-dc0-d123
            local-hostname: vvr1-dc0
        EOT
      + name           = "vvr1-dc0-cloudinit"
      + network_config = <<-EOT
            version: 2
            ethernets:
              mgmt:
                match:
                  name: "enp1s0"
                set-name: mgmt
                addresses: ["172.31.0.2/30"]
                routes:
                  - to: "10.10.0.0/22"
                    via: "172.31.0.1"
              uplink:
                match:
                  name: "enp2s0"
                set-name: uplink
                dhcp4: false
                dhcp6: false
            bridges:
              br-vr1-dc0-wan:
                interfaces: [uplink]
                dhcp4: false
                dhcp6: false
                parameters:
                  stp: false
                  forward-delay: 0
        EOT
      + path           = (known after apply)
      + size           = (known after apply)
      + user_data      = <<-EOT
            #cloud-config
            hostname: vvr1-dc0
            fqdn: vvr1-dc0.cloud.neumatrix.local
            manage_etc_hosts: true
            users:
              - name: jessea123
                groups: [adm, sudo]
                shell: /bin/bash
                sudo: "ALL=(ALL) NOPASSWD:ALL"
                ssh_authorized_keys:
                  # D-126 per-env-key (ruling 2026-07-16, option a): vvr1-dc0 authorizes the DEDICATED
                  # dc0 key, NOT office1's -- per-env blast-radius isolation. Inner root's qemu+ssh matches.
                  - ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAID54oMqwY4majxq4oWpBviXb6DlVyj99TUPxDkhszcZG vr1-dc0_svc (D-126 per-env key)
            package_update: true
            packages:
              - qemu-guest-agent
            runcmd:
              - [systemctl, enable, --now, qemu-guest-agent]
        EOT
    }

  # module.vvr1_dc0.libvirt_domain.vm will be created
  + resource "libvirt_domain" "vm" {
      + autostart   = false
      + cpu         = {
          + features = []
          + mode     = "host-passthrough"
        }
      + devices     = {
          + disks      = [
              + {
                  + driver = {
                      + type = "qcow2"
                    }
                  + source = {
                      + volume = {
                          + pool   = "vr1-dc0-pool"
                          + volume = "vvr1-dc0-disk.qcow2"
                        }
                    }
                  + target = {
                      + bus = "virtio"
                      + dev = "vda"
                    }
                },
              + {
                  + device = "cdrom"
                  + source = {
                      + volume = {
                          + pool   = "vr1-dc0-pool"
                          + volume = "vvr1-dc0-cloudinit.iso"
                        }
                    }
                  + target = {
                      + bus = "sata"
                      + dev = "sda"
                    }
                },
            ]
          + interfaces = [
              + {
                  + model  = {
                      + type = "virtio"
                    }
                  + source = {
                      + network = {
                          + network = "mesh-vr1-dc0-office1"
                        }
                    }
                },
              + {
                  + model  = {
                      + type = "virtio"
                    }
                  + source = {
                      + network = {
                          + network = "vr1-dc0-uplink"
                        }
                    }
                },
            ]
        }
      + features    = {
          + acpi = true
          + apic = {}
        }
      + id          = (known after apply)
      + memory      = 425984
      + memory_unit = "MiB"
      + name        = "vvr1-dc0"
      + os          = {
          + type         = "hvm"
          + type_arch    = "x86_64"
          + type_machine = "q35"
        }
      + running     = true
      + type        = "kvm"
      + uuid        = (known after apply)
      + vcpu        = 108
    }

  # module.vvr1_dc0.libvirt_volume.disk will be created
  + resource "libvirt_volume" "disk" {
      + allocation    = (known after apply)
      + backing_store = {
          + format = {
              + type = "qcow2"
            }
          + path   = "/var/lib/libvirt/vr1/office1/ubuntu-24.04-base.qcow2"
        }
      + capacity      = 3221225472000
      + id            = (known after apply)
      + key           = (known after apply)
      + name          = "vvr1-dc0-disk.qcow2"
      + path          = (known after apply)
      + physical      = (known after apply)
      + pool          = "vr1-dc0-pool"
      + target        = {
          + format = {
              + type = "qcow2"
            }
          + path   = (known after apply)
        }
    }

  # module.vvr1_dc0.libvirt_volume.seed will be created
  + resource "libvirt_volume" "seed" {
      + allocation = (known after apply)
      + capacity   = (known after apply)
      + create     = {
          + content = {
              + url = (known after apply)
            }
        }
      + id         = (known after apply)
      + key        = (known after apply)
      + name       = "vvr1-dc0-cloudinit.iso"
      + path       = (known after apply)
      + physical   = (known after apply)
      + pool       = "vr1-dc0-pool"
    }

Plan: 7 to add, 2 to change, 7 to destroy.

─────────────────────────────────────────────────────────────────────────────

Note: You didn't use the -out option to save this plan, so OpenTofu can't
guarantee to take exactly these actions if you run "tofu apply" now.