繁体   English   中英

Ansible:vmware 与多个 Vcenter 并行部署

[英]Ansible: vmware parallel deployment with multiple Vcenter

我正在尝试编写剧本,该剧本将在 3 个 ESXI 服务器上从模板到带有 Ansible vmware_guest 模块的 Vcenter 创建 3 个虚拟机。

问题是我有 3 个不同的 Vcenter,每个 Vcenter 有 3 个 ESXI 主机,并且 playbook 必须在所有 ESXI 主机上并行创建所有虚拟机。

我试过循环,但循环一步一步地做。

这是我目前的剧本版本。

如果有人帮助我,我将非常感激:)

 --- # 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'}

您可以通过将每个 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

您可以使用相同的原理同时创建所有 9 个 VM。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM