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

プレイ中に wait_for を使用して VM の準備ができていることを確認しながら、新しい 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!!"

見るモジュールの追加詳細については。

関連情報