Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ansible:仅打印用户定义的变量_Ansible - Fatal编程技术网

Ansible:仅打印用户定义的变量

Ansible:仅打印用户定义的变量,ansible,Ansible,如何打印仅在组变量,主机变量中声明的变量,而不打印可解释的事实 这样的代码很好: - name: "Ansible | List all known variables and facts" debug: var: hostvars[inventory_hostname] 但我不需要主机IP、磁盘等 我的意思是在继续执行播放之前再次检查所有变量。有3类变量:,和用户变量。从hostvars中删除ansible事实和特殊变量,剩下的是用户的变量。ansible事实

如何打印仅在
组变量
主机变量
中声明的变量,而不打印可解释的事实

这样的代码很好:

- name: "Ansible | List all known variables and facts"
  debug:
    var: hostvars[inventory_hostname]
但我不需要主机IP、磁盘等


我的意思是在继续执行播放之前再次检查所有变量。

有3类变量:,和用户变量。从hostvars中删除ansible事实和特殊变量,剩下的是用户的变量。ansible事实列表可在变量ansible_facts中找到。我认为必须创建特殊变量的列表

创建特殊变量列表

如果运行下面的playbook,您将看到特殊变量和用户变量的列表

-hosts:localhost
任务:
-调试:
msg:“{{hostvars[inventory_hostname]|
差异(可解释的事实)}”
消除用户的变量并将特殊变量列表放入文件中。比如说

shell>cat特殊变量.yml
特殊变量:
-ansible_python_解释器
-ansible_连接
-目录\u主机名
...
此特殊变量列表可能不完整,仅用于此主机

从主机变量中删除可解析事实和特殊变量

-hosts:localhost
vars_文件:
-特殊变量yml
任务:
-设定事实:
用户_var1:AAA
-调试:
msg:“{{hostvars[inventory_hostname]|
差异(可解释的事实)
差异(特殊变量)}”
仅提供用户变量的列表

msg:
-用户_var1
用户变量还包括用户设置的配置变量(例如:ansible_user或:ansible_been)


名称空间

更好的做法是使用“名称空间”变量。比如说

-hosts:localhost
变量:
prj51_var1:AAA
prj51_var2:BBB
任务:
-调试:
msg:{{item}}:{{query('vars',item)|first}
循环:“{query('varnames',prj51.+$)}”
给予

msg:'prj51_var1:AAA'
msg:'prj51_var2:BBB'