我遇到的情况是,在一个csv文件中,我有如下两列
var elems = document.querySelector('.collapsible');
var instances = M.Collapsible.init(elems);
instances.open(1);
现在我要使用粗体字行。
每个列将是ansible角色之一的输入。
它应该像
cat report.csv
Field1,Field2,Field3
name3,3,5
name4,5,6
答案 0 :(得分:1)
我相信您可以通过两种(一半)方式想到:
按照您所说的做,并通过cut
或python -c "import csv;..."
或其他“手动”处理运行文件,然后将输出捕获到变量中
将任何类似JSON的东西输入vars:
或set_fact:
时,都会变成list
或dict
,因此您只想将文本放入看起来像CSV的工具,而看起来像JSON的工具
lookup("csvfile")
通过“批准的”机制实际读取文件
fetch:
将其拉到您的控制计算机上,然后 在其上运行lookup("csvfile")
答案 1 :(得分:0)
read_csv模块是最近添加到ansible中的,现在可以从ansible 2.8中使用。升级ansible后,您可以按以下方式逐行阅读:
- name: read the csv file
read_csv:
path: "{{ report.csv }}"
delimiter: ','
register: report_csv
然后您可以使用report_csv.list
作为列表来访问它,它会将值保存为字典列表:
[{'Field1': 'name3', 'Field2': 3, 'Field3': 5}, {'Field1': 'name4', 'Field2': 5, 'Field3': 6}]
答案 2 :(得分:0)
这里是一个例子:
this
和CSV:
- name: "Sending email"
hosts: localhost
gather_facts: no
tasks:
- name: "Reading user information"
read_csv:
path: users.csv
register: users
- name: "Sending an e-mail using Gmail SMTP servers"
mail:
host: smtp.gmail.com
port: 587
username: <email>
password: <pass>
to: "{{ user.email }}"
subject: Email Subjet
body: |
Hi {{ user.first_name }},
How are you?
loop: "{{ users.list }}"
loop_control:
loop_var: user
first_name,last_name,email
Joel,Zamboni,joel.zamboni@example.com
以两种格式返回数据,分别为read_csv
或dict
,在这种情况下,我将“循环”到列表中以发送电子邮件。
最好
乔尔
答案 3 :(得分:0)
也分享我的 ansible 代码,这对我有用https://stackoverflow.com/a/56910479/1679541
playbook.yaml
---
- name: Read Users
gather_facts: True
hosts: localhost
tasks:
- read_csv:
path: users.csv
register: userlist
- debug:
msg: "{{ user.username }} and password is {{ user.password }}"
loop: "{{ userlist.list }}"
loop_control:
loop_var: user
users.csv
username,password
user0,test123
user1,test123
Ansible 输出
PLAY [Read Users] *************************************************
TASK [Gathering Facts] *********************************************************
ok: [127.0.0.1]
TASK [read_csv] ****************************************************************
ok: [127.0.0.1]
TASK [debug] *******************************************************************
ok: [127.0.0.1] => (item={u'username': u'user0', u'password': u'test123'}) => {
"msg": "user0 and password is test123"
}
ok: [127.0.0.1] => (item={u'username': u'user1', u'password': u'test123'}) => {
"msg": "user1 and password is test123"
}
PLAY RECAP *********************************************************************
127.0.0.1 : ok=3 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0