Files
ansible_proxmox_VM/tasks/clone_iteration.yml

95 lines
2.9 KiB
YAML
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
# clone_iteration.yml - Single clone iteration (called from create-clones.yml loop)
- name: "[CLONES] Check if clone already exists"
ansible.builtin.include_tasks: helpers.yml
vars:
helper_task: check_vm_exists
target_vm_id: "{{ clone.id }}"
- name: "[CLONES] Display clone status"
ansible.builtin.debug:
msg: "Clone {{ clone.id }} ({{ clone.hostname }}) - Status: {{ 'EXISTS' if vm_exists else 'WILL BE CREATED' }}"
- name: "[CLONES] Clone VM from template"
block:
- name: "[CLONES] Execute clone command"
ansible.builtin.command: >
qm clone {{ vm_id }} {{ clone.id }}
--name {{ clone.hostname }}
--full {{ clone.full | default(0) }}
register: clone_cmd
when: not vm_exists
- name: "[CLONES] Verify clone was created"
ansible.builtin.include_tasks: helpers.yml
vars:
helper_task: check_vm_exists
target_vm_id: "{{ clone.id }}"
when: not vm_exists
- name: "[CLONES] Ensure clone creation succeeded"
ansible.builtin.assert:
that:
- vm_exists | bool
fail_msg: "Failed to create clone {{ clone.id }}"
when: not vm_exists
- name: "[CLONES] Wait for clone to be ready"
ansible.builtin.pause:
seconds: 2
when: not vm_exists
rescue:
- name: "[CLONES] Handle clone creation error"
ansible.builtin.fail:
msg: |
Failed to clone VM {{ vm_id }} to {{ clone.id }}:
{{ ansible_failed_result | default('Unknown error') }}
- name: "[CLONES] Configure Cloud-Init for clone (if needed)"
block:
- name: "[CLONES] Set clone hostname and IP"
ansible.builtin.command: >
qm set {{ clone.id }}
--hostname {{ clone.hostname }}
--ipconfig0 "ip={{ clone.ip }},gw={{ clone.gateway }}"
register: clone_config
when: not vm_exists
- name: "[CLONES] Apply SSH keys to clone"
ansible.builtin.command: >
qm set {{ clone.id }}
--sshkeys local:snippets/{{ vm_id }}-sshkey.pub
when: not vm_exists
rescue:
- name: "[CLONES] Handle clone configuration error"
ansible.builtin.debug:
msg: "WARNING: Could not fully configure clone {{ clone.id }}. You may need to configure manually."
- name: "[CLONES] Start clone VM"
ansible.builtin.command: "qm start {{ clone.id }}"
register: clone_start
retries: "{{ max_retries }}"
delay: "{{ retry_delay }}"
until: clone_start is succeeded
when: not vm_exists
- name: "[CLONES] Wait for clone to boot"
ansible.builtin.pause:
seconds: 3
- name: "[CLONES] Display clone creation result"
ansible.builtin.debug:
msg: |
{% if vm_exists %}
Clone {{ clone.id }} ({{ clone.hostname }}) already exists - skipped
{% else %}
✓ Clone created and started
- ID: {{ clone.id }}
- Hostname: {{ clone.hostname }}
- IP: {{ clone.ip }}
- Full clone: {{ clone.full | default(0) }}
{% endif %}