Files
toallab-automation/roles/oatakan.windows_ovirt_template/tasks/main.yml
2021-04-20 12:14:42 -04:00

119 lines
3.6 KiB
YAML

---
- name: obtain SSO token with using username/password credentials
ovirt.ovirt.ovirt_auth:
url: "{{ lookup('env', 'OVIRT_URL')|default(ovirt.url) }}"
username: "{{ lookup('env', 'OVIRT_USERNAME')|default(ovirt.username) }}"
password: "{{ lookup('env', 'OVIRT_PASSWORD')|default(ovirt.password) }}"
insecure: yes
- include_tasks: preflight_check_pre29.yml
when: ansible_version.full is version('2.9', '<')
- include_tasks: preflight_check.yml
when: ansible_version.full is version('2.9', '>=')
# remove existing template
- block:
- include_tasks: remove_template.yml
when:
- template_force|bool
- template_found|bool
- block:
- include_tasks: make_iso.yml
- include_tasks: provision_vm.yml
- name: refresh inventory
meta: refresh_inventory
- name: clear gathered facts
meta: clear_facts
- name: clear any host errors
meta: clear_host_errors
- name: add host
add_host:
hostname: template_host
ansible_host: "{{ template_vm_ip_address }}"
ansible_user: "{{ unattend.local_accounts[0].name }}"
ansible_password: "{{ unattend.local_accounts[0].password }}"
ansible_port: "{{ vm_ansible_port | default('5986') }}"
ansible_connection: winrm
ansible_winrm_transport: "{{ vm_ansible_winrm_transport | default('credssp') }}"
ansible_winrm_server_cert_validation: ignore
ansible_winrm_operation_timeout_sec: 250
ansible_winrm_read_timeout_sec: 280
ansible_win_async_startup_timeout: 60
- include_role:
name: "{{ windows_build_role }}"
apply:
vars:
target_ovirt: yes
install_updates: yes
remove_apps: yes
clean_up_components: yes
upgrade_powershell: "{{ vm_upgrade_powershell | default('no') }}"
delegate_to: template_host
- name: refresh SSO credentials
ovirt.ovirt.ovirt_auth:
url: "{{ lookup('env', 'OVIRT_URL')|default(ovirt.url) }}"
username: "{{ lookup('env', 'OVIRT_USERNAME')|default(ovirt.username) }}"
password: "{{ lookup('env', 'OVIRT_PASSWORD')|default(ovirt.password) }}"
insecure: yes
- include_tasks: stop_vm.yml
- include_tasks: convert_to_template.yml
- include_tasks: export_ovf.yml
when: export_ovf|bool
rescue:
- name: refresh SSO credentials
ovirt.ovirt.ovirt_auth:
url: "{{ lookup('env', 'OVIRT_URL')|default(ovirt.url) }}"
username: "{{ lookup('env', 'OVIRT_USERNAME')|default(ovirt.username) }}"
password: "{{ lookup('env', 'OVIRT_PASSWORD')|default(ovirt.password) }}"
insecure: yes
- include_tasks: remove_template.yml
when: remove_vm_on_error|bool
- name: set vm_failed variable
set_fact:
vm_failed: yes
always:
- name: refresh SSO credentials
ovirt.ovirt.ovirt_auth:
url: "{{ lookup('env', 'OVIRT_URL')|default(ovirt.url) }}"
username: "{{ lookup('env', 'OVIRT_USERNAME')|default(ovirt.username) }}"
password: "{{ lookup('env', 'OVIRT_PASSWORD')|default(ovirt.password) }}"
insecure: yes
- include_tasks: remove_vm.yml
when: remove_vm_on_error|bool or (not remove_vm_on_error|bool and not vm_failed|bool)
- include_tasks: datastore_iso_remove.yml
- name: remove temporary directory
file:
path: "{{ temp_directory }}"
state: absent
- name: logout from oVirt
ovirt.ovirt.ovirt_auth:
state: absent
ovirt_auth: "{{ ovirt_auth }}"
- name: fail if needed
fail:
msg: "fail to create a template."
when: vm_failed|bool