我在目标机器上的/etc/environment
中设置了几个全局环境变量,我需要在运行一些Ansible任务时提供这些变量。 E.g。
MY_VAR=Some global variable
Ansible知道这些全局变量的值不,因此我无法使用environment
功能。
示例任务:
- shell: echo MY_VAR is $MY_VAR
register: my_var
- debug: msg={{ my_var.stdout }}
我得到的输出是MY_VAR is
,我希望它是MY_VAR is Some global variable
。我知道这种情况正在发生,因为非交互式Bash shell(Ansible使用)不会从/etc/environment
加载环境,但有没有办法在该环境的上下文中执行我的命令?
注意:我实际上并不想检索环境变量的值(如上所示),我只是希望它出现在我执行{{1}的上下文中任务在。
答案 0 :(得分:1)
使用ansible_env
变量,可以通过事实获得远程环境变量。
这会将用户Ansible日志的所有变量打印到远程主机中:
- debug: var=ansible_env
如果Ansible用户无法使用全局环境变量,则可以在运行命令之前在任务中获取它们:
- shell: . /etc/environment && commandhere