Ansible创建虚拟机
我正在使用ansible 2.9.2。我有一个剧本,它可以从模板在vcenter中创建虚拟机:Ansible创建虚拟机,ansible,ansible-2.x,Ansible,Ansible 2.x,我正在使用ansible 2.9.2。我有一个剧本,它可以从模板在vcenter中创建虚拟机: --- - hosts: localhost connection: local vars: vars_files: - vars.yml tasks: - vmware_guest: datacenter: "abcd" hostname: "{{ server }}" username: "{{ use
---
- hosts: localhost
connection: local
vars:
vars_files:
- vars.yml
tasks:
- vmware_guest:
datacenter: "abcd"
hostname: "{{ server }}"
username: "{{ user }}"
password: "{{ pass }}"
template: "{{ template }}"
validate_certs: False
folder: test
datastore: "{{ datastore }}"
esxi_hostname: "{{ esxi }}"
validate_certs: no
state: "{{ state }}"
name: "{{ name }}{{ansible_date_time.epoch}}{{999| random}}"
register: output
- debug:
msg: "{{ output.instance | json_query('hw_eth0.ipaddresses') }}"
我正在使用一个API并发送curl请求来运行这个剧本。有没有办法让它运行5次?
我在ansible module
vmware\u guest
下没有找到任何可以像count=5
那样制造5台机器的东西。您应该看看
按照上面的文档,我们可以修改您的第一个任务,如下所示。我在您的实例名称中集成了范围计数器,以适应您的确切需要
- vmware_guest:
datacenter: "abcd"
hostname: "{{ server }}"
username: "{{ user }}"
password: "{{ pass }}"
template: "{{ template }}"
validate_certs: False
folder: test
datastore: "{{ datastore }}"
esxi_hostname: "{{ esxi }}"
validate_certs: no
state: "{{ state }}"
name: "{{ name }}{{ item }}{{ansible_date_time.epoch}}{{999| random}}"
register: output
loop: "{{ range(1, 6) | list }}"
引入循环会改变已注册var的结构,该结构现在将包含每个循环运行的顶级结果列表。因此,您需要更改下一个调试任务以获得所需的信息
解决方案1:像以前一样循环每个结果和输出:
- debug:
msg: "{{ item.instance | json_query('hw_eth0.ipaddresses') }}"
loop: "{{ output.results }}"
解决方案2:通过修改jmespath查询一次获取所有信息。请注意,由于我没有您的数据结构,因此无法测试下面的代码,因此可能需要进行一些调整
- debug:
msg: "{{ output.results | json_query('[].instance.hw_eth0.ipaddresses') }}"