From e542ecc3a6b4dd7a94cb211fcb74b30fa877ab76 Mon Sep 17 00:00:00 2001 From: Pim Kunis Date: Thu, 16 Mar 2023 23:13:37 +0100 Subject: [PATCH 1/2] improve ansible waiting times --- cloud_init.cfg.tftpl | 8 +------- dnsmasq.conf | 2 +- ansible.yml => hermes.yml | 24 +++++++++++++++++++++--- main.tf | 18 +++++++++++------- 4 files changed, 34 insertions(+), 18 deletions(-) rename ansible.yml => hermes.yml (52%) diff --git a/cloud_init.cfg.tftpl b/cloud_init.cfg.tftpl index ad50333..d3c1922 100644 --- a/cloud_init.cfg.tftpl +++ b/cloud_init.cfg.tftpl @@ -1,5 +1,5 @@ #cloud-config -hostname: dns +hostname: hermes manage_etc_hosts: true ssh_pwauth: false disable_root: false @@ -9,9 +9,3 @@ chpasswd: list: | root:root expire: False -packages: - - qemu-guest-agent - - dnsmasq - - dnsutils -package_update: true -package_upgrade: true diff --git a/dnsmasq.conf b/dnsmasq.conf index b701045..5f219c9 100644 --- a/dnsmasq.conf +++ b/dnsmasq.conf @@ -36,4 +36,4 @@ server=/pim.kunis.nl/192.168.30.3 log-dhcp log-queries # Resolve dns.dmz to addresses on main NIC -interface-name=dns.dmz,ens3 +interface-name=hermes.dmz,ens3 diff --git a/ansible.yml b/hermes.yml similarity index 52% rename from ansible.yml rename to hermes.yml index 53faca9..23eeea1 100644 --- a/ansible.yml +++ b/hermes.yml @@ -2,9 +2,21 @@ - hosts: all gather_facts: no tasks: - - name: Wait for cloud init to finish - pause: - seconds: 120 + - name: Wait for host to come up + wait_for: + state: started + port: 22 + host: "{{ internal_ip }}" + delay: 10 + timeout: 300 + connect_timeout: 300 + search_regex: OpenSSH + delegate_to: localhost + - name: Wait for cloud-init to finish + command: + cmd: cloud-init status --wait + - name: Gather facts + setup: - name: Update repositories apt: autoremove: true @@ -12,6 +24,12 @@ state: latest update_cache: yes cache_valid_time: 86400 # One day + - name: Install packages + apt: + pkg: + - qemu-guest-agent + - dnsmasq + - dnsutils - name: Disable systemd-resolved systemd: name: systemd-resolved diff --git a/main.tf b/main.tf index caff4bc..30ea7dc 100644 --- a/main.tf +++ b/main.tf @@ -29,11 +29,11 @@ resource "libvirt_cloudinit_disk" "cloudinit" { name = "${var.name}.iso" pool = "init" user_data = templatefile("cloud_init.cfg.tftpl", { name = var.name, host_public_key = var.host_public_key }) - network_config = templatefile("network_config.cfg.tftpl", { internal_ip = var.internal_ip}) + network_config = templatefile("network_config.cfg.tftpl", { internal_ip = var.internal_ip }) } resource "libvirt_domain" "ubuntu" { - name = var.name + name = "hermes" memory = 1024 vcpu = 4 @@ -42,15 +42,19 @@ resource "libvirt_domain" "ubuntu" { } network_interface { - network_name = "dmzbr" - hostname = "dns" - addresses = ["${var.internal_ip}/24"] - mac = "ca:fe:c0:ff:ee:07" + bridge = "dmzbr" + hostname = "hermes" + /* addresses = ["${var.internal_ip}/24"] */ + mac = "ca:fe:c0:ff:ee:07" } cloudinit = libvirt_cloudinit_disk.cloudinit.id provisioner "local-exec" { - command = "ANSIBLE_HOST_KEY_CHECKING=False ansible-playbook -T 60 -u root -i inventory ansible.yml" + command = "ansible-playbook -e internal_ip=${var.internal_ip} -T 60 -u root -i inventory hermes.yml" + + environment = { + ANSIBLE_HOST_KEY_CHECKING = "False" + } } } From 95dce43d40f90e5422cd0854ca68ad3fa4513e8c Mon Sep 17 00:00:00 2001 From: Pim Kunis Date: Thu, 16 Mar 2023 23:29:28 +0100 Subject: [PATCH 2/2] replace VM if cloudinit image is replaced --- cloud_init.cfg.tftpl | 6 +----- dnsmasq.conf | 6 +++--- main.tf | 11 ++++++++--- variables.tf | 2 +- 4 files changed, 13 insertions(+), 12 deletions(-) diff --git a/cloud_init.cfg.tftpl b/cloud_init.cfg.tftpl index d3c1922..742a0a9 100644 --- a/cloud_init.cfg.tftpl +++ b/cloud_init.cfg.tftpl @@ -1,11 +1,7 @@ #cloud-config -hostname: hermes +hostname: "${name}" manage_etc_hosts: true ssh_pwauth: false disable_root: false ssh_authorized_keys: - "${host_public_key}" -chpasswd: - list: | - root:root - expire: False diff --git a/dnsmasq.conf b/dnsmasq.conf index 5f219c9..2152d52 100644 --- a/dnsmasq.conf +++ b/dnsmasq.conf @@ -15,9 +15,9 @@ domain=dmz # IPv4 DHCP range dhcp-range=192.168.30.100,192.168.30.200,infinite # Predefined DHCP hosts -dhcp-host=b8:27:eb:b9:ab:e2,esrom,192.168.30.2 -dhcp-host=b4:2e:99:77:1b:da,max,192.168.30.3 -dhcp-host=d8:5e:d3:47:33:6e,lewis,192.168.30.6 +dhcp-host=b8:27:eb:b9:ab:e2,esrom +dhcp-host=b4:2e:99:77:1b:da,max +dhcp-host=d8:5e:d3:47:33:6e,lewis # Advertise router dhcp-option=3,192.168.30.1 # Always send the IPv6 DNS server address (this machine) diff --git a/main.tf b/main.tf index 30ea7dc..cb13fed 100644 --- a/main.tf +++ b/main.tf @@ -43,9 +43,8 @@ resource "libvirt_domain" "ubuntu" { network_interface { bridge = "dmzbr" - hostname = "hermes" - /* addresses = ["${var.internal_ip}/24"] */ - mac = "ca:fe:c0:ff:ee:07" + hostname = var.name + mac = "CA:FE:C0:FF:EE:07" } cloudinit = libvirt_cloudinit_disk.cloudinit.id @@ -57,4 +56,10 @@ resource "libvirt_domain" "ubuntu" { ANSIBLE_HOST_KEY_CHECKING = "False" } } + + lifecycle { + replace_triggered_by = [ + libvirt_cloudinit_disk.cloudinit.id + ] + } } diff --git a/variables.tf b/variables.tf index 352093d..66e1760 100644 --- a/variables.tf +++ b/variables.tf @@ -1,5 +1,5 @@ variable "name" { - default = "dmzdns" + default = "hermes" } variable "libvirt_endpoint" {