我想知道Ansible是否有办法访问本地环境变量。
文档引用访问目标机器上的变量:
{{ lookup('env', 'SOMEVAR') }}
有没有办法在源计算机上访问环境变量?
答案 0 :(得分:79)
我在osx上运行Linux vm,对我来说:
lookup('env', 'HOME')
返回" / Users / Gonzalo" (来自osx的HOME
变量),而ansible_env.HOME
返回" / root" (来自vm的HOME
变量。)
值得一提的是,如果变量不存在,ansible_env.VAR
会失败,而lookup('env', 'VAR')
不会失败。
答案 1 :(得分:17)
使用ansible lookup
:
- set_fact: env_var="{{ lookup('env','ENV_VAR') }}"
答案 2 :(得分:7)
这些变量在管理机器中,我认为是你机器中的源机器。
请检查:http://docs.ansible.com/faq.html#how-do-i-access-shell-environment-variables
它说:If you just need to access existing variables, use the ‘env’ lookup plugin. For example, to access the value of the HOME environment variable on management machine:
现在,如果您需要在远程计算机中访问它,您只需在远程计算机中本地运行ansible脚本即可。 或者你可以只是ansible事实变量。如果它不在ansible事实中,你可以运行一个shell命令来获取它。