From 8c0716508ede1586b63d6d10980b427c38ca608c Mon Sep 17 00:00:00 2001 From: Sandwich Date: Wed, 11 Feb 2026 14:00:20 +0100 Subject: [PATCH] fix: honor libvirt network config, preserve DHCP DNS with search-only NM config, and exact-match Xen VM names --- roles/configuration/templates/network.j2 | 2 +- roles/system_check/tasks/main.yml | 6 +++++- roles/virtualization/tasks/xen.yml | 4 +++- roles/virtualization/templates/vm.xml.j2 | 2 +- 4 files changed, 10 insertions(+), 4 deletions(-) diff --git a/roles/configuration/templates/network.j2 b/roles/configuration/templates/network.j2 index e07317f..7e9435f 100644 --- a/roles/configuration/templates/network.j2 +++ b/roles/configuration/templates/network.j2 @@ -15,7 +15,7 @@ method=auto {% if dns_list %} dns={{ dns_list | join(';') }} {% endif %} -{% if dns_list or search_list %} +{% if dns_list %} ignore-auto-dns=true {% endif %} {% if search_list %} diff --git a/roles/system_check/tasks/main.yml b/roles/system_check/tasks/main.yml index da2fe87..d8e8179 100644 --- a/roles/system_check/tasks/main.yml +++ b/roles/system_check/tasks/main.yml @@ -101,7 +101,11 @@ when: hypervisor_type == "xen" ansible.builtin.assert: that: - - hostname not in system_check_xen_existing_vms.stdout | default('') + - >- + not ( + system_check_xen_existing_vms.stdout | default('') + is search('(?m)^' ~ (hostname | ansible.builtin.regex_escape) ~ '\\s+\\d+\\s') + ) fail_msg: | VM {{ hostname }} already exists on Xen hypervisor. To avoid data loss, the playbook will not overwrite or delete existing VMs. diff --git a/roles/virtualization/tasks/xen.yml b/roles/virtualization/tasks/xen.yml index 701002e..78b7523 100644 --- a/roles/virtualization/tasks/xen.yml +++ b/roles/virtualization/tasks/xen.yml @@ -74,4 +74,6 @@ virtualization_vm_created_in_run: true when: - virtualization_xen_list_result is defined - - hostname in virtualization_xen_list_result.stdout + - >- + virtualization_xen_list_result.stdout | default('') + is search('(?m)^' ~ (hostname | ansible.builtin.regex_escape) ~ '\\s+\\d+\\s') diff --git a/roles/virtualization/templates/vm.xml.j2 b/roles/virtualization/templates/vm.xml.j2 index d04dd95..0efc5ad 100644 --- a/roles/virtualization/templates/vm.xml.j2 +++ b/roles/virtualization/templates/vm.xml.j2 @@ -48,7 +48,7 @@ {% endif %} - + 0 else "default" }}'/> {% if virtualization_tpm2_enabled %}