From 46787e1c9b9c574a13dae748d2f8ff89e7b55b8e Mon Sep 17 00:00:00 2001 From: Christian Pointner Date: Fri, 25 May 2018 02:04:16 +0200 Subject: remerge vm roles from realraum noc repo --- roles/vm/install/tasks/main.yml | 69 +++++++--------------- roles/vm/install/templates/libvirt-domain.xml.j2 | 28 ++++----- .../templates/preseed_debian-stretch.cfg.j2 | 28 ++++----- 3 files changed, 49 insertions(+), 76 deletions(-) (limited to 'roles/vm/install') diff --git a/roles/vm/install/tasks/main.yml b/roles/vm/install/tasks/main.yml index 22a6a351..36693125 100644 --- a/roles/vm/install/tasks/main.yml +++ b/roles/vm/install/tasks/main.yml @@ -2,45 +2,39 @@ - name: generate preseed file template: src: "preseed_{{ vmdistro }}-{{ vmdistcodename }}.cfg.j2" - dest: "{{ hostvars[vm_install.host].vm_host.installer.preseed_path }}/vm-{{ inventory_hostname }}-{{ vmdistro }}-{{ vmdistcodename }}.cfg" - delegate_to: "{{ vm_install.host }}" + dest: "{{ vm_host.installer.preseed_path }}/vm-{{ vmname }}-{{ vmdistro }}-{{ vmdistcodename }}.cfg" - name: create disks for vm - with_dict: "{{ vm_install.disks.virtio | default({}) | combine(vm_install.disks.scsi | default({})) }}" + with_dict: "{{ hostvars[vmname].vm_install_cooked.disks.virtio | default({}) | combine(hostvars[vmname].vm_install_cooked.disks.scsi | default({})) }}" lvol: vg: "{{ item.value.vg }}" lv: "{{ item.value.lv }}" size: "{{ item.value.size }}" - delegate_to: "{{ vm_install.host }}" - name: check if vm already exists virt: - name: "{{ inventory_hostname }}" + name: "{{ vmname }}" command: info - delegate_to: "{{ vm_install.host }}" register: vmhost_info - name: destroy exisiting vm virt: - name: "{{ inventory_hostname }}" + name: "{{ vmname }}" state: destroyed - delegate_to: "{{ vm_install.host }}" - when: inventory_hostname in vmhost_info + when: vmname in vmhost_info - name: wait for vm to be destroyed wait_for_virt: - name: "{{ inventory_hostname }}" + name: "{{ vmname }}" states: shutdown,crashed timeout: 5 - delegate_to: "{{ vm_install.host }}" - when: inventory_hostname in vmhost_info + when: vmname in vmhost_info - name: undefining exisiting vm virt: - name: "{{ inventory_hostname }}" + name: "{{ vmname }}" command: undefine - delegate_to: "{{ vm_install.host }}" - when: inventory_hostname in vmhost_info + when: vmname in vmhost_info - name: enable installer in VM config set_fact: @@ -48,41 +42,36 @@ - name: define new installer vm virt: - name: "{{ inventory_hostname }}" + name: "{{ vmname }}" command: define xml: "{{ lookup('template', 'libvirt-domain.xml.j2') }}" - delegate_to: "{{ vm_install.host }}" - name: start vm virt: - name: "{{ inventory_hostname }}" + name: "{{ vmname }}" state: running - delegate_to: "{{ vm_install.host }}" - name: wait for installer to start wait_for_virt: - name: "{{ inventory_hostname }}" + name: "{{ vmname }}" states: running timeout: 10 - delegate_to: "{{ vm_install.host }}" - debug: - msg: "you can check on the status of the installer running this command 'virsh console {{ inventory_hostname }}' on host {{ vm_install.host }}." + msg: "you can check on the status of the installer running this command 'virsh console {{ vmname }}' on host {{ inventory_hostname }}." - name: wait for installer to finish or crash wait_for_virt: - name: "{{ inventory_hostname }}" + name: "{{ vmname }}" states: shutdown,crashed - timeout: 900 - delegate_to: "{{ vm_install.host }}" + timeout: 1500 register: installer_result failed_when: installer_result.failed or installer_result.state == "crashed" - name: undefining installer vm virt: - name: "{{ inventory_hostname }}" + name: "{{ vmname }}" command: undefine - delegate_to: "{{ vm_install.host }}" - name: disable installer in VM config set_fact: @@ -90,34 +79,18 @@ - name: define new production vm virt: - name: "{{ inventory_hostname }}" + name: "{{ vmname }}" command: define xml: "{{ lookup('template', 'libvirt-domain.xml.j2') }}" - delegate_to: "{{ vm_install.host }}" - name: start vm virt: - name: "{{ inventory_hostname }}" + name: "{{ vmname }}" state: running - delegate_to: "{{ vm_install.host }}" - name: mark vm as autostarted virt: - name: "{{ inventory_hostname }}" - autostart: "{{ vm_install.autostart }}" + name: "{{ vmname }}" + autostart: "{{ hostvars[vmname].vm_install_cooked.autostart }}" command: info ## virt module needs either command or state - delegate_to: "{{ vm_install.host }}" - when: vm_install.autostart is defined - -- name: disable ssh StrictHostKeyChecking for the next step - set_fact: - ansible_ssh_extra_args: -o StrictHostKeyChecking=no - -- name: wait for vm to start up - wait_for_connection: - delay: 5 - timeout: 120 - -- name: reenable StrictHostKeyChecking - set_fact: - ansible_ssh_extra_args: "" + when: hostvars[vmname].vm_install_cooked.autostart is defined diff --git a/roles/vm/install/templates/libvirt-domain.xml.j2 b/roles/vm/install/templates/libvirt-domain.xml.j2 index c84b1045..2bf4b57b 100644 --- a/roles/vm/install/templates/libvirt-domain.xml.j2 +++ b/roles/vm/install/templates/libvirt-domain.xml.j2 @@ -1,14 +1,14 @@ - {{ inventory_hostname }} - {{ vm_install.mem * 1024 }} - {{ vm_install.mem * 1024 }} - {{ vm_install.numcpu }} + {{ vmname }} + {{ hostvars[vmname].vm_install_cooked.mem * 1024 }} + {{ hostvars[vmname].vm_install_cooked.mem * 1024 }} + {{ hostvars[vmname].vm_install_cooked.numcpu }} hvm {% if run_installer %} - {{ hostvars[vm_install.host].vm_host.installer.path }}/{{ vmdistro }}-{{ vmdistcodename }}/{{ vm_install.arch | default('amd64') }}/linux - {{ hostvars[vm_install.host].vm_host.installer.path }}/{{ vmdistro }}-{{ vmdistcodename }}/{{ vm_install.arch | default('amd64') }}/initrd.gz - console=ttyS0,115200n8 auto=true interface=auto url=tftp://{{ hostvars[vm_install.host]['ansible_' + hostvars[vm_install.host].vm_host.installer.net_if].ipv4.address }}/vm-{{ inventory_hostname }}-{{ vmdistro }}-{{ vmdistcodename }}.cfg netcfg/choose_interface=enp1s1 netcfg/disable_autoconfig=true netcfg/get_ipaddress={{ vm_network.primary.ip }} netcfg/get_netmask={{ vm_network.primary.mask }} netcfg/get_gateway={{ vm_network.primary.gateway }} netcfg/get_nameservers="{{ vm_network.primary.nameservers | join(' ') }}" netcfg/confirm_static=true netcfg/get_hostname={{ inventory_hostname }} netcfg/get_domain={{ vm_network.primary.domain }} + {{ vm_host.installer.path }}/{{ vmdistro }}-{{ vmdistcodename }}/{{ hostvars[vmname].vm_install_cooked.arch | default('amd64') }}/linux + {{ vm_host.installer.path }}/{{ vmdistro }}-{{ vmdistcodename }}/{{ hostvars[vmname].vm_install_cooked.arch | default('amd64') }}/initrd.gz + console=ttyS0,115200n8 auto=true interface=auto url=tftp://{{ hostvars[inventory_hostname]['ansible_' + (vm_host.installer.net_if | replace('-', '_'))].ipv4.address }}/vm-{{ vmname }}-{{ vmdistro }}-{{ vmdistcodename }}.cfg netcfg/choose_interface=enp1s1 netcfg/disable_autoconfig=true netcfg/get_ipaddress={{ hostvars[vmname].vm_network_cooked.primary.ip }} netcfg/get_netmask={{ hostvars[vmname].vm_network_cooked.primary.mask }} netcfg/get_gateway={{ hostvars[vmname].vm_network_cooked.primary.gateway }} netcfg/get_nameservers="{{ hostvars[vmname].vm_network_cooked.nameservers | join(' ') }}" netcfg/confirm_static=true netcfg/get_hostname={{ vmname }} netcfg/get_domain={{ hostvars[vmname].vm_network_cooked.domain }} {% endif %} @@ -29,8 +29,8 @@ /usr/bin/kvm -{% if 'virtio' in vm_install.disks %} -{% for device, lv in vm_install.disks.virtio.items() %} +{% if 'virtio' in hostvars[vmname].vm_install_cooked.disks %} +{% for device, lv in hostvars[vmname].vm_install_cooked.disks.virtio.items() %} @@ -39,9 +39,9 @@ {% endfor %} {% endif %} -{% if 'scsi' in vm_install.disks %} +{% if 'scsi' in hostvars[vmname].vm_install_cooked.disks %} -{% for device, lv in vm_install.disks.scsi.items() %} +{% for device, lv in hostvars[vmname].vm_install_cooked.disks.scsi.items() %} @@ -50,12 +50,12 @@ {% endfor %} {% endif %} -{% if vm_install.interfaces %} -{% for if in vm_install.interfaces %} +{% if hostvars[vmname].vm_install_cooked.interfaces %} +{% for if in hostvars[vmname].vm_install_cooked.interfaces %} -
+
{% endfor %} {% endif %} diff --git a/roles/vm/install/templates/preseed_debian-stretch.cfg.j2 b/roles/vm/install/templates/preseed_debian-stretch.cfg.j2 index 55ddbfc2..8e221671 100644 --- a/roles/vm/install/templates/preseed_debian-stretch.cfg.j2 +++ b/roles/vm/install/templates/preseed_debian-stretch.cfg.j2 @@ -10,14 +10,14 @@ d-i keyboard-configuration/xkb-keymap select de #d-i netcfg/choose_interface select enp1s1 #d-i netcfg/disable_autoconfig boolean false -#d-i netcfg/get_ipaddress string {{ vm_network.primary.ip }} -#d-i netcfg/get_netmask string {{ vm_network.primary.mask }} -#d-i netcfg/get_gateway string {{ vm_network.primary.gateway }} -#d-i netcfg/get_nameservers string {{ vm_network.primary.nameservers | join(' ') }} +#d-i netcfg/get_ipaddress string {{ hostvars[vmname].vm_network_cooked.primary.ip }} +#d-i netcfg/get_netmask string {{ hostvars[vmname].vm_network_cooked.primary.mask }} +#d-i netcfg/get_gateway string {{ hostvars[vmname].vm_network_cooked.primary.gateway }} +#d-i netcfg/get_nameservers string {{ hostvars[vmname].vm_network_cooked.nameservers | join(' ') }} #d-i netcfg/confirm_static boolean true -d-i netcfg/get_hostname string {{ inventory_hostname }} -d-i netcfg/get_domain string {{ vm_network.primary.domain }} +d-i netcfg/get_hostname string {{ vmname }} +d-i netcfg/get_domain string {{ hostvars[vmname].vm_network_cooked.domain }} d-i netcfg/wireless_wep string @@ -37,7 +37,7 @@ d-i time/zone string Europe/Vienna d-i clock-setup/ntp boolean false -d-i partman-auto/disk string /dev/{{ vm_install.disks.primary }} +d-i partman-auto/disk string /dev/{{ hostvars[vmname].vm_install_cooked.disks.primary }} d-i partman-auto/method string lvm d-i partman-lvm/device_remove_lvm boolean true d-i partman-md/device_remove_md boolean true @@ -49,22 +49,22 @@ d-i partman-auto/expert_recipe string \ boot-root :: \ 1000 10000 -1 ext4 \ $defaultignore{ } $primary{ } $bootable{ } \ - method{ lvm } vg_name{ {{ inventory_hostname }} } \ + method{ lvm } vg_name{ {{ vmname }} } \ . \ 2048 10000 2560 ext4 \ - $lvmok{ } in_vg{ {{ inventory_hostname }} } \ + $lvmok{ } in_vg{ {{ vmname }} } \ method{ format } format{ } \ use_filesystem{ } filesystem{ ext4 } \ mountpoint{ / } \ . \ 1024 11000 1280 ext4 \ - $lvmok{ } in_vg{ {{ inventory_hostname }} } \ + $lvmok{ } in_vg{ {{ vmname }} } \ method{ format } format{ } \ use_filesystem{ } filesystem{ ext4 } \ mountpoint{ /var } \ . \ 768 10000 768 ext4 \ - $lvmok{ } in_vg{ {{ inventory_hostname }} } \ + $lvmok{ } in_vg{ {{ vmname }} } \ method{ format } format{ } \ use_filesystem{ } filesystem{ ext4 } \ mountpoint{ /var/log } \ @@ -72,7 +72,7 @@ d-i partman-auto/expert_recipe string \ options/noexec{ noexec } \ . \ 16 20000 -1 ext4 \ - $lvmok{ } in_vg{ {{ inventory_hostname }} } \ + $lvmok{ } in_vg{ {{ vmname }} } \ method( keep } lv_name{ dummy } \ . @@ -92,7 +92,7 @@ d-i pkgsel/include string openssh-server python d-i pkgsel/upgrade select safe-upgrade popularity-contest popularity-contest/participate boolean false -d-i grub-installer/choose_bootdev string /dev/{{ vm_install.disks.primary }} +d-i grub-installer/choose_bootdev string /dev/{{ hostvars[vmname].vm_install_cooked.disks.primary }} d-i grub-installer/only_debian boolean true d-i grub-installer/with_other_os boolean false @@ -100,6 +100,6 @@ d-i finish-install/reboot_in_progress note d-i preseed/late_command string \ - lvremove -f {{ inventory_hostname }}/dummy; \ + lvremove -f {{ vmname }}/dummy; \ in-target bash -c "apt-get update -q && apt-get full-upgrade -y -q"; \ in-target bash -c "passwd -d root; passwd -l root; umask 077; mkdir -p /root/.ssh/; echo -e '{{ sshserver_root_keys }}' > /root/.ssh/authorized_keys" -- cgit v1.2.3