我在使用远程主机的环境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}}
。