Ansible이 VM을 생성합니다.

Ansible이 VM을 생성합니다.

Ansible을 사용하여 템플릿에서 Linux vm을 생성한 다음 Ansible을 실행하여 상자를 구성하고 싶습니다. 템플릿은 다른 것이 없이 기본 설치일 뿐입니다. VM이 구축되면 다음 작업은 새로 생성된 VM을 구성하는 것입니다.

내 질문은 호스트에 관한 것입니다. VM이 아직 생성되지 않았는데 어떤 호스트에 대해 이 스크립트를 실행해야 합니까? vcenter를 호스트로 사용하면 VM을 구성할 수 없습니다. 그러나 호스트의 IP를 사용하면 Ansible이 아직 생성되지 않았기 때문에 이를 찾을 수 없습니다.

이에 대한 최선의 접근 방식은 무엇입니까?

- hosts: ???????

  tasks:

 - name:  Clone a virtual machine from Linux template and customize
    vmware_guest:
      hostname: "{{ vcenter_host }}"
      username: "{{ vcenter_user }}"
      password: "{{ vcenter_pass }}"
      validate_certs: no
      datacenter: "{{ datacenter }}"
      state: present
      #folder: /DC1/vm
      template: "{{ template }}"
      name: "{{ vm_name }}"
      cluster: "{{ cluster }}"
      networks:
        - name: VM Network
          ip: 192.168.10.11
          netmask: 255.255.255.0
      wait_for_ip_address: True
      customization:
        domain: "{{ guest_domain }}"
        dns_servers:
          - 8.9.9.9
          - 7.8.8.9
    delegate_to: localhost

 - name: configure VM

답변1

VM이 준비되었는지 확인하기 위해 wait_for를 사용하여 재생 중에 인벤토리에 새 VM을 추가할 수 있습니다.

---
- hosts: localhost
  vars:
    vm: ubuntutest
  tasks:
  - name:  Clone a virtual machine from Linux template and customize
      vmware_guest:
      ... etc

  - add_host:
      name: "{{ vm }}"
      groups: examplegroup
      somecustomvar: wowamazing

  - wait_for:
      host: "{{ vm }}"
      port: 22
      delay: 3
      timeout: 320
      state: started

- hosts: examplegroup
  tasks:
  - debug:
      msg: "it works!!"

보다https://docs.ansible.com/ansible/latest/modules/add_host_module.html자세한 내용은.

관련 정보