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!!"
見るモジュールの追加詳細については。