在Ansible任务中加载全局环境变量

时间:2016-10-31 20:49:08

标签: bash environment-variables ansible

我在目标机器上的/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}的上下文中任务在。

1 个答案:

答案 0 :(得分:1)

使用ansible_env变量,可以通过事实获得远程环境变量。

这会将用户Ansible日志的所有变量打印到远程主机中:

- debug: var=ansible_env

如果Ansible用户无法使用全局环境变量,则可以在运行命令之前在任务中获取它们:

- shell: . /etc/environment && commandhere