如何获取远程主机的环境variables

我在使用远程主机的环境variables时遇到问题。 例如,当我尝试{{lookup('env','PATH')}}这将返回我的客机的path而不是远程主机的path。

如何提取/更改远程主机的环境variables?

我的剧本:

--- - name : playbook hosts : webservers gather_facts: yes remote_user: user1 vars: Path: "{{lookup('ansible_env','PATH')}}" roles : - task1 - task2 - task3 

这是返回我的机器的path而不是名为user1远程主机的path我是一个初学者需要一些帮助。 先谢谢你。

lookup函数的行为是明确记录的 :

插件允许从外部来源访问Ansible中的数据。 这些插件在Ansible控制器上进行评估。

有关于访问远程环境变量的常见问题解答 :

Ansible 1.4还将通过“ansible_env”变量中的事实来提供远程环境变量:

 {{ ansible_env.SOME_VARIABLE }} 

请注意,远程事实(如ansible_env只有在启用事实收集时才可用(这是默认的行为,但可以在配置文件或剧本中禁用)。

如果要修改远程主机的环境,请再次查看描述environment指令的文档 :

Ansible使您可以轻松地使用“环境”关键字来配置您的环境。 这里是一个例子:

 - hosts: all remote_user: root tasks: - apt: name=cobbler state=installed environment: http_proxy: http://proxy.example.com:8080 

这些为这个特定的任务设置了一个环境变量。 这不是一个持久的修改。

根据这里的文档,你不能使用lookup远程机器,该关键字只适用于本地机器。

相反,您要使用{{ ansible_env.PATH}}