loops - 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 也会出现同样的问题。
谢谢
解决方案
推荐阅读
- python - FiPy 中的变量约束
- html - 如何在css中悬停时更改光标类型
- javascript - 映射对象并返回具有现有值的数组更改了新值
- javascript - React 初始呈现 null 值,但稍后更新。需要将值设置为初始状态
- javascript - 使用 Ramda 基于多个条件过滤列表
- python - 使用 Django(第一个应用程序)找不到页面(404)
- azure - Azure 服务总线高可用性和跨区域复制
- python - 使用 pyautogui 定位相似图像的第二个位置
- javascript - 每次刷新页面时,我的数组中都会添加一个 isTrusted 元素
- html - 删除元素占用的添加区域或高度