首页 > 解决方案 > Ansible Hosts 在剧本中循环

问题描述

我最近一直在使用 open_excel 模块来包含我用于 Cisco ACI 实验室部署的所有可变数据。到目前为止,这工作得非常好,主要是因为所有 Cisco ACI 模块都使用它们中的 host: 字段,如下所示,这意味着我可以轻松地从我的数据源循环播放。

  - name: "Add a new tenant"
    aci_tenant:
      host: "{{ apic }}"
      username: "{{ apic_username }}"
      password: "{{ apic_password }}"
      validate_certs: no
      tenant: "{{ tenants.tenant }}"
      description: "{{ tenants.description }}"
      state: "{{ tenants.state }}"
    delegate_to: localhost


    loop: "{{ tenants.sheet_index_0 }}"
    loop_control:
      loop_var: tenants

我遇到的问题是我想使用相同的方法来配置其他设备,例如路由器和交换机,但将所有主机数据保存在电子表格中,而不是单独的主机文件中。

不幸的是,在剧本的顶部引用了主机,例如

---
- hosts: switches

而不是在任务下,这意味着我不能像使用 ACI 一样循环遍历具有不同配置的不同设备,例如 switch-1、vlans 2,3 switch-2、vlans 3,4 等。

理想情况下,我想要以下内容

- name: Configure VLANs on switches.
  nxos_vlans:
    host: "{{ vlans.switch }}"
    username: "{{ switch_username }}"
    password: "{{ switch_password }}"
    config:
      - vlan_id: " {{ vlans.vlan_id }} "
        name: " {{ vlans.vlan_name }} "
        state: " {{ vlans.vlan_state }} "


    loop: "{{ vlans }}"
    loop_control:
      loop_var: vlans

总的来说,我仍然是 Ansible 和编码的初学者,但如果有人有任何建议,那就太好了。

仅供参考,我认为即使我使用 read_csv 也会出现同样的问题。

谢谢

标签: loopsansiblecisco

解决方案


推荐阅读