terraform { backend "pg" { schema_name = "dmz_dns" conn_str = "postgres://terraform@10.42.0.1/terraform_state" } required_providers { libvirt = { source = "dmacvicar/libvirt" } template = { source = "hashicorp/template" } } } provider "libvirt" { uri = "qemu+ssh://root@atlas.lan/system" } module "vm" { source = "git::https://git.pim.kunis.nl/home/tf-modules.git//debian" name = "hermes" use_host_cert = false fixed_address = "192.168.30.7/24" ansible_command = "ANSIBLE_ROLES_PATH=roles ANSIBLE_HOST_KEY_CHECKING=False ANSIBLE_VAULT_PASSWORD_FILE=util/secret-service-client.sh ansible-playbook -u root -i '192.168.30.7,' hermes.yml" mac = "CA:FE:C0:FF:EE:07" } # resource "libvirt_volume" "main_disk" { # name = "${var.name}.iso" # pool = "disk" # size = 1024 * 1024 * 1024 * 15 # base_volume_name = "debian-bookworm.qcow2" # base_volume_pool = "iso" # } # # resource "libvirt_cloudinit_disk" "cloudinit" { # name = "${var.name}.iso" # pool = "init" # user_data = templatefile("cloud_init.cfg.tftpl", { name = var.name, admin_authorized_keys = var.admin_authorized_keys }) # network_config = templatefile("network_config.cfg.tftpl", { internal_ip = var.internal_ip }) # } # # resource "libvirt_domain" "ubuntu" { # name = var.name # memory = 1024 # vcpu = 4 # autostart = true # # disk { # volume_id = libvirt_volume.main_disk.id # } # # network_interface { # bridge = "dmzbr" # hostname = var.name # mac = "CA:FE:C0:FF:EE:07" # } # # cloudinit = libvirt_cloudinit_disk.cloudinit.id # # provisioner "local-exec" { # command = "ansible-playbook -e internal_ip=${var.internal_ip} -T 60 -u root -i ${var.ansible_inventory} ${var.ansible_playbook}" # # environment = { # ANSIBLE_HOST_KEY_CHECKING = "False" # ANSIBLE_CONFIG = "${var.ansible_cfg}" # } # } # # lifecycle { # replace_triggered_by = [ # libvirt_cloudinit_disk.cloudinit.id # ] # } # }