Ansible:将csv数据转换为目录

Ansible:将csv数据转换为目录,csv,ansible,ansible-filter,Csv,Ansible,Ansible Filter,我想知道如何在Ansible中进行简单的csv插值。我尝试了各种各样的过滤器和循环,但我不知道如何使它工作 我有:一个csv文本行列表,列表的第一项包含字段名 我想要:每个值行的字段名->值的哈希列表 有人能帮忙吗 谢谢 奥伦 Q:“将包含字段名的csv文本行列表转换为每个值行的字段名->值哈希列表” A:模块完全符合您的要求。比如说 - hosts: localhost tasks: - read_csv: path: data.csv register

我想知道如何在Ansible中进行简单的csv插值。我尝试了各种各样的过滤器和循环,但我不知道如何使它工作

我有:一个csv文本行列表,列表的第一项包含字段名

我想要:每个值行的字段名->值的哈希列表

有人能帮忙吗

谢谢

奥伦

Q:“将包含字段名的csv文本行列表转换为每个值行的字段名->值哈希列表”

A:模块完全符合您的要求。比如说

- hosts: localhost
  tasks:
    - read_csv:
        path: data.csv
      register: vms
    - debug:
        var: vms.list
用数据

$ cat data.csv
hostname,partition,ip
hostname1,/dev/sda1,10.1.0.21
hostname2,/dev/sda1,10.1.0.22
hostname3,/dev/sda1,10.1.0.23
给予

Q:“对数组而不是文件执行相同的操作。”

A:下面的剧本给出了同样的结果

- hosts: localhost
  vars:
    my_array:
      - [hostname, partition, ip]
      - [hostname1, /dev/sda1, 10.1.0.21]
      - [hostname2, /dev/sda2, 10.1.0.22]
      - [hostname3, /dev/sda3, 10.1.0.23]
  tasks:
    - set_fact:
        keys_list: "{{ my_array.0 }}"
    - set_fact:
        my_list: "{{ my_list|default([]) + [dict(keys_list|zip(item))] }}"
      loop: "{{ my_array[1:] }}"
    - debug:
        var: my_list

请参阅。

您好,欢迎来到SO<代码>我尝试了各种过滤器和循环=>请向我们展示您所做的工作和面临的问题。如果您不知道如何表示,请查看“帮助”部分。@Oren:回答您的问题:“是否有类似的模块对数组而不是文件执行相同的操作(或以某种方式将数组导入read_csv模块)?”我不知道有这样的模块。将数组管道化以读取_csv意味着将数组写入文件并读取它。
- hosts: localhost
  vars:
    my_array:
      - [hostname, partition, ip]
      - [hostname1, /dev/sda1, 10.1.0.21]
      - [hostname2, /dev/sda2, 10.1.0.22]
      - [hostname3, /dev/sda3, 10.1.0.23]
  tasks:
    - set_fact:
        keys_list: "{{ my_array.0 }}"
    - set_fact:
        my_list: "{{ my_list|default([]) + [dict(keys_list|zip(item))] }}"
      loop: "{{ my_array[1:] }}"
    - debug:
        var: my_list