我是 Ansible 新手。我想知道如何在 Ansible 中读取 excel 或 csv 文件,将信息存储在变量中并使用这些变量。
实际上我想创建虚拟机。我将使用 csv 文件获取虚拟机的详细信息(如主机名、分区详细信息、IP 详细信息)。
如果有人能在这方面帮助我。
答案1
使用read_csv – 读取 CSV 文件模块。例如剧本
- hosts: localhost
tasks:
- read_csv:
path: vms.csv
key: hostname
register: vms
- debug:
msg: "{{ item.key }}:
{{ item.value.hostname }},
{{ item.value.partition }},
{{ item.value.ip }}"
loop: "{{ vms.dict|dict2items }}"
使用文件
$ cat vms.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
给出
msg: 'hostname1: hostname1, /dev/sda1, 10.1.0.21'
msg: 'hostname2: hostname2, /dev/sda1, 10.1.0.22'
msg: 'hostname3: hostname3, /dev/sda1, 10.1.0.23'
答案2
分享我的 ansible 代码。这对我有用
剧本.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
用户.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