从Ansible写入csv文件中的特定单元格
我试图找到是否有任何选项可以从Ansible写入CSV文件中的特定单元格。我可以使用Ansible lookup插件类型“csvfile”来查找csv文件中的值,但我需要向该文件添加文本。考虑下面的例子:从Ansible写入csv文件中的特定单元格,csv,module,ansible,lookup,Csv,Module,Ansible,Lookup,我试图找到是否有任何选项可以从Ansible写入CSV文件中的特定单元格。我可以使用Ansible lookup插件类型“csvfile”来查找csv文件中的值,但我需要向该文件添加文本。考虑下面的例子: empID,name,mark 111,user1 112,user2 113,user3 我需要为每个用户添加标记,运行playbook会提示输入empID和标记: --- - name: Update data hosts: localhost vars_prompt:
empID,name,mark
111,user1
112,user2
113,user3
我需要为每个用户添加标记,运行playbook会提示输入empID和标记:
---
- name: Update data
hosts: localhost
vars_prompt:
- name: empid
prompt: EMP_ID
private: no
- name: marks
prompt: MARKS
private: no
tasks:
- name: Lookup
debug:
msg: "{{ lookup('csvfile', '{{ empid }} file=data.csv delimiter=, col=2') }}"
需要帮助写入CSV文件C列第1、2、3行……ansible中似乎没有提供
写入CSV
机制,部分原因是ansible不是通用计算平台。但是,您可以很容易地选择您想要的行为,或者您可以在中找到一个现有的机制。ansible中似乎没有提供write\u csv
机制,部分原因是ansible不是通用计算平台。但是,您可以很容易地选择您想要的行为,或者您可以在中找到一个现有的,正如前面提到的,Ansible中没有现成的write_csv
模块。在不创建自己的模块的情况下,我能想到的唯一解决方法是:
read\u CSV
模块读入CSV文件,并将数据表注册为字典变量lineinfle
模块循环dict变量并将每一行输出到一个新文件。可以使用.csv
扩展名创建文件,并且在每一行中,值都用分隔符(、
或;
)分隔---
-主机:本地主机
收集事实:不
任务:
-名称:从CSV文件读取
community.general.read_csv:
路径:data.csv
关键字:empID
分隔符:','
寄存器:响应
-名称:从CSV文件创建dict变量
设定事实:
数据目录:“{response.dict}”
-名称:递归更新字典中的值
设定事实:
data_dict:{{data_dict|combine(new_item,recursive=true)}”
变量:
新的{u项:{{{item.key}}}:{'mark':'some_值'}}
带{u dict:{{data_dict}}”
-名称:调试
调试:
msg:“{data_dict}}”
-名称:将ddata_dict头保存到新的CSV文件
线条填充:
路径:new_data.csv
行:empID、名称、标记
创建:是
-名称:将数据保存到新的CSV文件
线条填充:
路径:new_data.csv
行:“{item.value.empID},{{item.value.name},{{item.value.mark}”
循环:{{data_dict}dict2items}
输出的CSV文件为:
empID,name,mark
111,user1,some_value
112,user2,some_value
113,user3,some_value
正如@mdaniel提到的,Ansible中没有现成的
write_csv
模块。在不创建自己的模块的情况下,我能想到的唯一解决方法是:
read\u CSV
模块读入CSV文件,并将数据表注册为字典变量lineinfle
模块循环dict变量并将每一行输出到一个新文件。可以使用.csv
扩展名创建文件,并且在每一行中,值都用分隔符(、
或;
)分隔---
-主机:本地主机
收集事实:不
任务:
-名称:从CSV文件读取
community.general.read_csv:
路径:data.csv
关键字:empID
分隔符:','
寄存器:响应
-名称:从CSV文件创建dict变量
设定事实:
数据目录:“{response.dict}”
-名称:递归更新字典中的值
设定事实:
data_dict:{{data_dict|combine(new_item,recursive=true)}”
变量:
新的{u项:{{{item.key}}}:{'mark':'some_值'}}
带{u dict:{{data_dict}}”
-名称:调试
调试:
msg:“{data_dict}}”
-名称:将ddata_dict头保存到新的CSV文件
线条填充:
路径:new_data.csv
行:empID、名称、标记
创建:是
-名称:将数据保存到新的CSV文件
线条填充:
路径:new_data.csv
行:“{item.value.empID},{{item.value.name},{{item.value.mark}”
循环:{{data_dict}dict2items}
输出的CSV文件为:
empID,name,mark
111,user1,some_value
112,user2,some_value
113,user3,some_value