Ansible 创建虚拟机

Ansible 创建虚拟机

我想使用 Ansible 从模板创建 Linux 虚拟机,然后运行 ​​Ansible 来配置该框。模板只是一个基本安装,没有其他任何东西。构建虚拟机后,下一个任务应该是配置新创建的虚拟机。

我的问题是关于主机的。虚拟机尚未创建,那么我应该针对哪个主机运行此脚本?如果我使用 vcenter 作为主机,则它将无法配置虚拟机。但是,如果我使用主机的 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了解详情。

相关内容