# # This task is the thing that creates a vm for later use # - include_vars: dir=/srv/web/infra/ansible/vars/all/ ignore_files=README - name: get vm list delegate_to: "{{ vmhost }}" virt: command=list_vms register: result check_mode: no #- name: ensure no old facts exist # delegate_to: localhost # file: path=/root/.ansible_facts_cache/{{ inventory_hostname }} state=absent # when: inventory_hostname not in result.list_vms - name: ensure the lv for the guest is made lvol: lv={{ inventory_hostname }} vg={{ volgroup }} size={{ lvm_size }} state=present delegate_to: "{{ vmhost }}" when: inventory_hostname not in result.list_vms - name: run the virt-install shell: "{{ virt_install_command }}" delegate_to: "{{ vmhost }}" when: inventory_hostname not in result.list_vms - name: wait for the install to finish -> {{ inventory_hostname }} virt: command=status name={{ inventory_hostname }} register: vmstatus until: vmstatus.status == 'shutdown' delegate_to: "{{ vmhost }}" retries: 1500 delay: 20 when: inventory_hostname not in result.list_vms - name: ARMv7 copy the kernel out shell: "virt-builder --get-kernel {{ volgroup }}/{{ inventory_hostname }} --output /var/lib/libvirt/images/ | awk -F/ '{print $NF}' > /var/lib/libvirt/images/{{ inventory_hostname }}-details.txt" delegate_to: "{{ vmhost}}" when: inventory_hostname.startswith('buildvm-armv7') and ( inventory_hostname not in result.list_vms or armv7kernelupdate is defined ) tags: - armv7-kernel - name: ARMv7 extract the kernel details command: "head -n1 /var/lib/libvirt/images/{{ inventory_hostname }}-details.txt" delegate_to: "{{ vmhost}}" register: host_armv7kernel when: inventory_hostname.startswith('buildvm-armv7') and ( inventory_hostname not in result.list_vms or armv7kernelupdate is defined ) tags: - armv7-kernel - name: ARMv7 extract the initrd details command: "tail -n1 /var/lib/libvirt/images/{{ inventory_hostname }}-details.txt" delegate_to: "{{ vmhost}}" register: host_armv7initrd when: inventory_hostname.startswith('buildvm-armv7') and ( inventory_hostname not in result.list_vms or armv7kernelupdate is defined ) tags: - armv7-kernel - name: ARMv7 copy the cmdline out shell: "virt-cat -a {{ volgroup }}/{{ inventory_hostname }} /boot/extlinux/extlinux.conf | grep -m1 append | sed -e 's/append //'" delegate_to: "{{ vmhost}}" register: host_cmdline when: inventory_hostname.startswith('buildvm-armv7') and ( inventory_hostname not in result.list_vms or armv7kernelupdate is defined ) tags: - armv7-kernel - name: ARMv7 update the virt parameters virt_boot: domain={{ inventory_hostname }} kernel=/var/lib/libvirt/images/{{ host_armv7kernel.stdout }} initrd=/var/lib/libvirt/images/{{ host_armv7initrd.stdout }} cmdline={{ host_cmdline.stdout }} delegate_to: "{{ vmhost }}" when: inventory_hostname.startswith('buildvm-armv7') and ( inventory_hostname not in result.list_vms or armv7kernelupdate is defined ) tags: - armv7-kernel - name: when armv7kernelupdate is set we are done fail: msg="armv7kernelupdate was set, so kernel has been updated and target booted up" when: armv7kernelupdate is defined - name: start the vm up and set it to autostart virt: state=running name={{ inventory_hostname }} autostart=True delegate_to: "{{ vmhost }}" when: inventory_hostname not in result.list_vms - name: ARMv7 pause while VM updates pause: seconds=5 when: inventory_hostname.startswith('buildvm-armv7') and ( inventory_hostname not in result.list_vms or armv7kernelupdate is defined ) tags: - armv7-kernel - name: make sure there is no old ssh host key for the host still around local_action: known_hosts path={{item}} host={{ inventory_hostname }} state=absent ignore_errors: True with_items: - /root/.ssh/known_hosts when: inventory_hostname not in result.list_vms - name: (osbs-control01.stg) make sure there is no old ssh host key for the host still around known_hosts: path={{item}} host={{ inventory_hostname }} state=absent ignore_errors: True with_items: - /root/.ssh/known_hosts - /etc/ssh/ssh_known_hosts when: inventory_hostname not in result.list_vms and inventory_hostname in groups['osbs_masters_stg']+groups['osbs_nodes_stg'] delegate_to: osbs-control01.stg.phx2.fedoraproject.org - name: (osbs-control01) make sure there is no old ssh host key for the host still around known_hosts: path={{item}} host={{ inventory_hostname }} state=absent ignore_errors: True with_items: - /root/.ssh/known_hosts - /etc/ssh/ssh_known_hosts when: inventory_hostname not in result.list_vms and inventory_hostname in groups['osbs_masters']+groups['osbs_nodes'] delegate_to: osbs-control01.phx2.fedoraproject.org - name: wait for ssh on the vm to start back local_action: wait_for delay=10 host={{ inventory_hostname }} port=22 state=started timeout=1200 when: inventory_hostname not in result.list_vms - name: gather ssh host key from new instance local_action: command ssh-keyscan -t rsa {{ inventory_hostname }} ignore_errors: True register: hostkey when: inventory_hostname not in result.list_vms - name: add new ssh host key (until we can sign it) local_action: known_hosts path={{item}} key="{{ hostkey.stdout }}" host={{ inventory_hostname }} state=present ignore_errors: True with_items: - /root/.ssh/known_hosts when: inventory_hostname not in result.list_vms - name: (osbs-control01.stg) add new ssh host key known_hosts: path={{item}} key="{{ hostkey.stdout }}" host={{ inventory_hostname }} state=present ignore_errors: True with_items: - /root/.ssh/known_hosts - /etc/ssh/ssh_known_hosts when: inventory_hostname not in result.list_vms and inventory_hostname in groups['osbs_masters_stg']+groups['osbs_nodes_stg'] delegate_to: osbs-control01.stg.phx2.fedoraproject.org - name: (osbs-control01) add new ssh host key known_hosts: path={{item}} key="{{ hostkey.stdout }}" host={{ inventory_hostname }} state=present ignore_errors: True with_items: - /root/.ssh/known_hosts - /etc/ssh/ssh_known_hosts when: inventory_hostname not in result.list_vms and inventory_hostname in groups['osbs_masters']+groups['osbs_nodes'] delegate_to: osbs-control01.phx2.fedoraproject.org