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자세한 내용은.