许多用于Ansible的VMware模块的结构与正常的Ansible模块略有不同。我遇到的是需要为模块提供主机名或群集名。这不能很好地扩展,我正在寻找一种方法来循环一组主机,甚至是来自vars文件的群集(VMware模块不使用普通的/ etc / hosts文件)并提供该主机或模块的集群名称。在下面的代码中,我将为“ esxi_hostname”提供一个主机名。
您可以从注释的代码中看到,我尝试了with_items选项,该选项不起作用,因为它对模块不可用。我已经这样尝试了jinja:'esxi_hostname:'{%for host in host%} {{host}} {%endfor%}以及“ loop:'{{hosts}}'
node_modules
我希望我可以为esxi_hostname提供一个var,以便使用它,并且正在寻找一种通过循环执行此操作的方法,因此它可以针对host1,host2,host3等运行。
谢谢!
答案 0 :(得分:0)
循环应用于模块(在本例中为vmware_host_config_manager模块) 因此loop关键字应具有相同的缩进级别:
- name: Manage Log level setting for an ESXi host
vmware_host_config_manager:
hostname: '{{ vcenter_hostname }}'
username: '{{ vcenter_username }}'
password: '{{ vcenter_password }}'
esxi_hostname: '{{ item }}'
options:
'Config.HostAgent.log.level': 'info'
loop: "{{ groups['esxi'] }}"
delegate_to: localhost