使用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版开始,您可以利用模块。下页上的第一个结果应该对您有所帮助:。正如你所看到的,我确实使用了你上述问题的标题。