Files
tripleo-quickstart-extras/roles/snapshot-libvirt/tasks/main.yml
Sorin Sbarnea 8b2e5653e4 lint: fixed ansible-lint 301 rule
Change-Id: I8ce7e11cd6027b53f1112c5880a5891c778db9d4
2020-01-05 19:37:09 +00:00

79 lines
2.2 KiB
YAML

---
- name: Shut down vms
virt:
name: "{{ item.name }}"
command: shutdown
state: shutdown
uri: "{{ libvirt_uri }}"
with_items: "{{ overcloud_nodes }}"
- name: Evaluate overcloud VM libvirt names
set_fact:
libvirt_oc_names: >-
{%- set names=[] -%}
{%- for n in overcloud_nodes -%}
{%- if names.append(hostvars[n['name']]['inventory_hostname']) -%}{%- endif -%}
{%- endfor -%}
{{ names | join('|') }}
- name: Wait for vms to shutdown
async: 300
poll: 0
shell: |
while true
do virsh list | grep -E '{{ libvirt_oc_names }}' > /dev/null || break
done
register: vms_shutdown
changed_when: false
- name: Check that vms are shutdown
async_status:
jid: "{{ vms_shutdown.ansible_job_id }}"
register: job_result
until: job_result.finished
retries: 30
- name: Commit any changes if a snapshot already exists
shell: |
qemu-img commit {{ libvirt_volume_path }}/{{ item.name }}.qcow2
args:
removes: "{{ libvirt_volume_path }}/{{ item.name }}.qcow2.bak"
with_items: "{{ overcloud_nodes }}"
when: snapshot_create|bool
changed_when: true
- name: Create snapshot
shell: |
mv {{ libvirt_volume_path }}/{{ item.name }}.qcow2 {{ libvirt_volume_path }}/{{ item.name }}.qcow2.bak
qemu-img create -f qcow2 -b {{ libvirt_volume_path }}/{{ item.name }}.qcow2.bak {{ libvirt_volume_path }}/{{ item.name }}.qcow2
args:
creates: "{{ libvirt_volume_path }}/{{ item.name }}.qcow2.bak"
with_items: "{{ overcloud_nodes }}"
when: snapshot_create|bool
changed_when: true
- name: Restore previous snapshot
shell: |
rm {{ libvirt_volume_path }}/{{ item.name }}.qcow2
qemu-img create -f qcow2 -b {{ libvirt_volume_path }}/{{ item.name }}.qcow2.bak {{ libvirt_volume_path }}/{{ item.name }}.qcow2
with_items: "{{ overcloud_nodes }}"
when: snapshot_restore|bool
changed_when: true
- name: Start vms
virt:
name: "{{ item.name }}"
command: start
autostart: true
state: running
uri: "{{ libvirt_uri }}"
with_items: "{{ overcloud_nodes }}"
- name: "Wait for the vms to start"
wait_for:
host: "{{ hostvars[item.name]['ansible_host'] }}"
port: 22
state: started
with_items: "{{ overcloud_nodes }}"