我正在嘗試從 CSV 檔案中獲取輸入,然后將其添加為戲劇的動態庫存,下面是 ansible 劇本:
---
- hosts: localhost
vars:
ansible_user: root
ansible_password: "User@123"
csv_file: "/var/lib/awx/projects/patching/server.csv"
tasks:
- read_csv:
key: servername
path: "{{ csv_file }}"
register: list
- debug:
msg: "{{ item.value.servername }}"
loop: "{{ list.dict|dict2items }}"
- add_host:
name: "{{ item.value.servername }}"
ansible_user: "{{ ansible_user }}"
ansible_password: "{{ ansible_password }}"
groups: patching
loop: "{{ list.dict|dict2items }}"
- name: test
hosts: patching
tasks:
- shell: hostname
register: hostname
- debug: "{{ hostname }}"
該劇本作業正常,但我想將 read_csv 模塊中的引數“key”作為如下變數并將其與專案值合并,如下所示,它會拋出錯誤“因為錯誤是:'dict object' has no attribute '柱子'”
---
- hosts: localhost
vars:
ansible_user: root
ansible_password: "user@123"
csv_file: "/var/lib/awx/projects/patching/server.csv"
column: servername
tasks:
- read_csv:
key: "{{ column }}"
path: "{{ csv_file }}"
register: list
- debug:
msg: "{{ item.value.column }}"
loop: "{{ list.dict|dict2items }}"
- add_host:
name: "{{ item.value.column }}"
ansible_user: "{{ ansible_user }}"
ansible_password: "{{ ansible_password }}"
groups: patching
loop: "{{ list.dict|dict2items }}"
- name: test
hosts: patching
tasks:
- shell: hostname
register: hostname
- debug: "{{ hostname }}"
需要了解如何將變數“column”合并到 item.value.servername 更改為 item.value.column 下面是 CSV 檔案:
#cat server.csv
servername,ip
172.17.92.60,172.17.92.60
172.17.92.38,172.17.92.38
172.17.92.39,172.17.92.39
172.17.92.70,172.17.92.70
uj5u.com熱心網友回復:
試試這個劇本:
tasks:
- read_csv:
key: "{{ column }}"
path: "{{ csv_file }}"
register: list
- debug:
msg: "{{ item.value[column] }}"
loop: "{{ list.dict|dict2items }}"
- add_host:
name: "{{ item.value[column] }}"
ansible_user: "{{ ansible_user }}"
ansible_password: "{{ ansible_password }}"
groups: patching
loop: "{{ list.dict|dict2items }}"
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/494942.html
上一篇:linux三劍客(grep、sed、awk)基本使用
下一篇:可變存盤位置-最佳實踐?