[英]Ansible: vmware parallel deployment with multiple Vcenter
I'm trying to write playbook that will create 3 vm's on 3 ESXI servers from template through Vcenter with Ansible vmware_guest module.我正在尝试编写剧本,该剧本将在 3 个 ESXI 服务器上从模板到带有 Ansible vmware_guest 模块的 Vcenter 创建 3 个虚拟机。
The problem is that i have 3 different Vcenters with 3 ESXI hosts on each and playbook must create all the vm's on all ESXI host in parallel.问题是我有 3 个不同的 Vcenter,每个 Vcenter 有 3 个 ESXI 主机,并且 playbook 必须在所有 ESXI 主机上并行创建所有虚拟机。
i tried with loop, but loop do it step by step.我试过循环,但循环一步一步地做。
Here is my version of playbook as of now.这是我目前的剧本版本。
I will be very thankful if someone helps me with that :)如果有人帮助我,我将非常感激:)
--- # create a new VM from a template - name: VM from template hosts: localhost gather_facts: false connection: local vars: vcenter_hostname: 10.0.0.1 vcenter_user: john.doe vcenter_pass: Passw0rd vmtemplate: test-teplate name: "newvm2" notes: Ansible Test tasks: - name: Create VM from template vmware_guest: validate_certs: False hostname: "{{ vcenter_hostname }}" username: "{{ vcenter_user }}" password: "{{ vcenter_pass }}" esxi_hostname: "{{ item.esxhost }}" datacenter: Datacenter1 folder: templates name: "{{ name }}" template: "{{ vmtemplate }}" disk: - size_gb: 100 datastore: "{{ item.datastore }}" wait_for_ip_address: False state: present register: newvm2 loop: - {esxhost: '10.0.46.142', datastore: 'Datastore_XXX'} - {esxhost: '10.0.46.143', datastore: 'Datastore_ZZZ'}
You can create them in parallel by dynamically adding each ESX host to the inventory, it would look something like this:您可以通过将每个 ESX 主机动态添加到清单来并行创建它们,它看起来像这样:
- hosts: localhost
gather_facts: False
tasks:
- add_host:
hostname: '{{item.esxhost}}'
groups: vms
esxhost: '{{ item.esxhost }}'
datastore: '{{ item.datastore }}'
loop:
- {esxhost: '10.0.46.142', datastore: 'Datastore_XXX'}
- {esxhost: '10.0.46.143', datastore: 'Datastore_ZZZ'}
- name: VM from template
hosts: vms
gather_facts: false
connection: local
vars:
vcenter_hostname: 10.0.0.1
vcenter_user: john.doe
vcenter_pass: Passw0rd
vmtemplate: test-teplate
name: "newvm2"
notes: Ansible Test
tasks:
- name: Create VM from template
vmware_guest:
validate_certs: False
hostname: "{{ vcenter_hostname }}"
username: "{{ vcenter_user }}"
password: "{{ vcenter_pass }}"
esxi_hostname: "{{ esxhost }}"
datacenter: Datacenter1
folder: templates
name: "{{ name }}"
template: "{{ vmtemplate }}"
disk:
- size_gb: 100
datastore: "{{ datastore }}"
wait_for_ip_address: False
state: present
register: newvm2
You can use the same principle to create all 9 VMs at the same time.您可以使用相同的原理同时创建所有 9 个 VM。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.