
Я хотел бы использовать 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, чтобы убедиться, что виртуальная машина готова:
---
- 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для получения подробной информации.