使用Ansible从CSV文件读取变量
请参阅我现有的代码,这是工作正常,如预期的 从下面的代码中,您可以看到我已经为使用Ansible从CSV文件读取变量,ansible,ansible-2.x,ansible-inventory,ansible-facts,Ansible,Ansible 2.x,Ansible Inventory,Ansible Facts,请参阅我现有的代码,这是工作正常,如预期的 从下面的代码中,您可以看到我已经为list3和list4静态定义了vars: - hosts: localhost gather_facts: false tasks: - name: "set fact for snow" set_fact: list2: "{{ hostvars['192.168.10.20']['list1'] }}" - include_tasks: loop1.yml vars:
list3
和list4
静态定义了vars
:
- hosts: localhost
gather_facts: false
tasks:
- name: "set fact for snow"
set_fact:
list2: "{{ hostvars['192.168.10.20']['list1'] }}"
- include_tasks: loop1.yml
vars:
list3:
- dev-cn-c1
- dev-cn-c2
- dev-cn-c3
- dev-cn-c7
- dev-cn-c8
- dev-cn-c3
- dev-cn-c10
loop: "{{ list2 }}"
loop_control:
loop_var: outer_item
when:
- outer_item.type == 'CpmiGatewayCluster'
- list3|intersect(outer_item.names)|length > 0
- debug:
msg: "{{ list2 }}"
- include_tasks: loop2.yml
vars:
list4:
- dev-cn-c1
- dev-cn-c2
- dev-cn-c3
- dev-cn-c7
- dev-cn-c8
- dev-cn-c3
- dev-cn-c10
loop: "{{ list2 }}"
loop_control:
loop_var: outer_item
when:
- outer_item.type == "simple-gateway"
- list4|intersect(outer_item.name)|length > 0
我想从CSV文件int.CSV
中动态读取这些vars
devicename,location
dev-cn-c1,32
dev-cn-c2,32
dev-cn-c3,56
dev-cn-c4,56
可能吗 从Ansible 2.8版开始,您可以通过使用该模块来实现您的目标。那里的文档已经显示了一个与您的示例稍有相似的示例 从Ansible 2.8版开始,您可以利用模块。下页上的第一个结果应该对您有所帮助:。正如你所看到的,我确实使用了你上述问题的标题。