使用Ansible从CSV文件读取变量

时间:2019-09-23 11:11:55

标签: ansible ansible-2.x ansible-inventory ansible-facts

请查看我现有的代码,该代码可以正常运行。

从下面的代码中,您可以看到我已经为varslist3静态定义了list4

- 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文件vars中动态读取这些int.csv

devicename,location
dev-cn-c1,32
dev-cn-c2,32
dev-cn-c3,56
dev-cn-c4,56

有可能吗?

1 个答案:

答案 0 :(得分:1)

从Ansible 2.8版开始,您可以使用模块read_csv实现您的目标。那里的文档已经显示了一个与您的示例稍微相似的示例。