Ansible создать виртуальную машину

Ansible создать виртуальную машину

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

Связанный контент