python - 从 ansible 文件中获取价值
问题描述
我需要从(ansible)文件中获取值。我的台词显示:
name01.server.com key1=val1 key2=val2 #comment
name02.server.com key1=val1 key2="val 2" key3=val3
一般来说,我只需要服务器名称 val1 和 val2,但如果我split
按空格分隔,第二行中的“val 2”将被分隔,我只会得到“val”。
这种情况可以用 python、bash 或其他语言来解决。有人可以帮我解决这个问题吗?
解决方案
问:“我只需要服务器名称 val1 和 val2 ”
A:使用所选数据创建字典。这应该可以解决问题,例如给定文件
shell> cat my_file
name01.server.com key1=val1 key2=val2 #comment
name02.server.com key1=val1 key2="val 2" key3=val3
剧本
shell> cat playbook.yml
- hosts: all
gather_facts: false
tasks:
- set_fact:
_dict: "{{ dict(ansible_play_hosts_all|zip(_keys1|zip(_keys2))) }}"
vars:
_keys1: "{{ ansible_play_hosts_all|map('extract', hostvars, 'key1')|list }}"
_keys2: "{{ ansible_play_hosts_all|map('extract', hostvars, 'key2')|list }}"
run_once: true
给
shell> ansible-playbook playbook.yml -i my_file
_dict:
name01.server.com:
- val1
- val2
name02.server.com:
- val1
- val 2