Ansible通过CLI命令行获取所有自定义变量,包括inventory清单和group_vars

1 ansible -i inventory.ini localhost -m debug \
2     -a 'msg="{% set filtered_var = {} %} {% for key in _my_vars %} {{ filtered_var.update({key: lookup(\"vars\", key)}) }} {% endfor %} {{ filtered_var | to_json }}"' \
3     -e '_hostvars="{{ hostvars[inventory_hostname].keys() }}"' \
4     -e '_special_vars=["ansible_check_mode","ansible_connection","ansible_config_file","ansible_diff_mode","ansible_facts","ansible_forks","ansible_inventory_sources","ansible_playbook_python","ansible_python_interpreter","ansible_run_tags","ansible_skip_tags","ansible_verbosity","ansible_version","ansible_dependent_role_names","ansible_play_batch","ansible_play_hosts","ansible_play_hosts_all","ansible_play_name","ansible_play_role_names","ansible_role_names","environment","group_names","ungrouped","hostvars","inventory_hostname","inventory_hostname_short","omit","play_hosts","playbook_dir","role_names"]' \
5     -e '_my_vars="{{ vars.keys() | difference(_special_vars) | reject(\"match\", \"^_.*$\") | list | sort }}"' \
6     | sed -E 's/localhost \| (FAILED|SUCCESS) => //g' \
7     | /usr/bin/python3 -c "import sys, json; data = json.load(sys.stdin); print(json.dumps(json.loads(data['msg']), indent=2));"

 

https://stackoverflow.com/a/79713716/31137666

posted on 2025-07-25 01:16  圣上有喜  阅读(7)  评论(0)    收藏  举报