Files
fedora-infra_ansible/tasks/virt_instance_create.yml
Kevin Fenzi ac2ea4030c switch to efi armv7 in prod
Signed-off-by: Kevin Fenzi <kevin@scrye.com>
2021-05-24 18:04:03 -07:00

159 lines
6.8 KiB
YAML

#
# 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
vars:
ansible_python_interpreter: "{{ hostvars[vmhost]['ansible_python']['executable'] }}"
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: env != 'staging' and inventory_hostname.startswith(('buildvm-a32', 'buildvm-armv7','armv7-test')) 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: env != 'staging' and inventory_hostname.startswith(('buildvm-a32', 'buildvm-armv7','armv7-test')) 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: env != 'staging' and inventory_hostname.startswith(('buildvm-a32', 'buildvm-armv7','armv7-test')) 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: env != 'staging' and inventory_hostname.startswith(('buildvm-a32', 'buildvm-armv7','armv7-test')) and ( inventory_hostname not in result.list_vms or armv7kernelupdate is defined )
# tags:
# - armv7-kernel
#
#- name: ARMv7 update the virt parameters
# vars:
# ansible_python_interpreter: /usr/bin/python3
# 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: env != 'staging' and inventory_hostname.startswith(('buildvm-a32', 'buildvm-armv7','armv7-test')) 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: env != 'staging' and inventory_hostname.startswith(('buildvm-a32', 'buildvm-armv7','armv7-test')) 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.{{ datacenter }}.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.{{ datacenter }}.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.{{ datacenter }}.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.{{ datacenter }}.fedoraproject.org
- name: gather facts
setup:
check_mode: no
ignore_errors: True
register: facts
when: inventory_hostname not in result.list_vms