Ansible-VMware如何遍历任务并为键提供值?

时间:2019-06-12 15:41:31

标签: ansible vmware

许多用于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等运行。

谢谢!

1 个答案:

答案 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