--- - name: "{{ vm_name }} : lecture des paramètres" ansible.builtin.set_fact: vm: "{{ hostvars[vm_name] }}" - name: "{{ vm_name }} : la VM existe-t-elle ?" ansible.builtin.command: qm status {{ vm.vm_id }} register: vm_status changed_when: false failed_when: false - name: "{{ vm_name }} : création" when: vm_status.rc != 0 block: - name: "{{ vm_name }} : l'IP {{ vm.ansible_host }} doit être libre" ansible.builtin.command: ping -c 2 -W 1 {{ vm.ansible_host }} register: ip_ping changed_when: false failed_when: ip_ping.rc == 0 - name: "{{ vm_name }} : clonage du modèle" ansible.builtin.command: >- qm clone {{ pve_template_vmid }} {{ vm.vm_id }} --name {{ vm_name }} --full 1 --storage {{ pve_storage }} changed_when: true - name: "{{ vm_name }} : ressources et cloud-init" ansible.builtin.command: >- qm set {{ vm.vm_id }} --cores {{ vm.vm_cores }} --memory {{ vm.vm_memory }} --onboot 1 --tags bwpoc --ciuser {{ poc_vm_user }} --sshkeys /root/bwpoc_authorized_keys --ipconfig0 ip={{ vm.ansible_host }}/{{ poc_net_prefix }},gw={{ poc_net_gateway }} --nameserver "{{ poc_net_dns | join(' ') }}" --searchdomain {{ poc_net_searchdomain }} --ciupgrade 0 changed_when: true - name: "{{ vm_name }} : agrandissement du disque à {{ vm.vm_disk_gb }} Go" ansible.builtin.command: qm resize {{ vm.vm_id }} scsi0 {{ vm.vm_disk_gb }}G changed_when: true - name: "{{ vm_name }} : démarrage" ansible.builtin.command: qm start {{ vm.vm_id }} register: vm_start changed_when: vm_start.rc == 0 failed_when: vm_start.rc != 0 and 'already running' not in vm_start.stderr - name: "{{ vm_name }} : attente du SSH" ansible.builtin.wait_for: host: "{{ vm.ansible_host }}" port: 22 timeout: 300 delegate_to: localhost become: false