Ansible:使用多个Vcenter的vmware并行部署
我正在尝试编写剧本,通过Vcenter和Ansible vmware_来宾模块在3台ESXI服务器上创建3个虚拟机 问题是我有3个不同的vCenter,每个vCenter上有3台ESXI主机,playbook必须在所有ESXI主机上并行创建所有vm 我试过使用loop,但loop会一步一步地做 这是我现在的剧本版本 如果有人帮我,我会非常感激:)Ansible:使用多个Vcenter的vmware并行部署,ansible,Ansible,我正在尝试编写剧本,通过Vcenter和Ansible vmware_来宾模块在3台ESXI服务器上创建3个虚拟机 问题是我有3个不同的vCenter,每个vCenter上有3台ESXI主机,playbook必须在所有ESXI主机上并行创建所有vm 我试过使用loop,但loop会一步一步地做 这是我现在的剧本版本 如果有人帮我,我会非常感激:) --- #从模板创建新VM -名称:来自模板的VM 主机:本地主机 收集事实:错误 连接:本地 变量: vcenter_主机名:10.0.0.1 v
---
#从模板创建新VM
-名称:来自模板的VM
主机:本地主机
收集事实:错误
连接:本地
变量:
vcenter_主机名:10.0.0.1
vcenter_用户:john.doe
vcenter_pass:Passw0rd
vmtemplate:测试模板
名称:“新VM2”
注:Ansible测试
任务:
-名称:从模板创建虚拟机
vmware_来宾:
验证证书:错误
主机名:“{vcenter_hostname}”
用户名:“{vcenter_user}”
密码:{vcenter_pass}}
esxi_主机名:“{{item.esxhost}”
数据中心:数据中心1
文件夹:模板
名称:“{{name}}”
模板:“{{vmtemplate}}”
磁盘:
-尺寸:100
数据存储:“{item.datastore}}”
等待ip地址:False
国家:现在
注册号码:newvm2
循环:
-{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个虚拟机。我们不能将所有虚拟机都放在清单中,而不是添加主机的内容吗?Playbook不应该有特定于主机的信息,因此它们可以在目录之间移植。我同意,如果可能的话,它应该直接来自目录,但是有一些动态添加主机的用例,例如,当数据来自塔模板的输入时,等等。我不确定这里的用例是什么。我认为这是一个糟糕的用例。最理想的情况是,应该有一个单一的“真实来源”,即库存(保存在版本控制系统中,如Subversion或Git),或者可以生成库存的电子表格或数据库。(在动态清点的情况下,“真相来源”将保存
组\u vars/all
中虚拟机的计数和规格)如果此类信息来自用户输入,则仅适用于一次性虚拟机,但即使在那里,在Tower中创建一个新的清单也很容易。你能展示一下这个剧本中的例子是如何将所有主机放入清单的吗?另外,我需要为vm指定不同的名称。可能吗?