X-Git-Url: https://git.realraum.at/?a=blobdiff_plain;f=ansible%2Froles%2Fvm-install%2Ftasks%2Fmain.yml;h=16034838f193af2a4dd4ea7031a2940218e64358;hb=7e1bccc28afd4712d9ed535593ba1dd03cc35441;hp=037632fb105123b9c24126f7552c24720b6fef31;hpb=cada7766cb94b291b214784fa717f874db922d57;p=noc.git diff --git a/ansible/roles/vm-install/tasks/main.yml b/ansible/roles/vm-install/tasks/main.yml index 037632f..1603483 100644 --- a/ansible/roles/vm-install/tasks/main.yml +++ b/ansible/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 }}" 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,35 +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 - - ## TODO: find a better way to fetch host key of new VMs -- 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