我在使用远程主机的环境变量时遇到问题。例如,当我尝试{{lookup('env','PATH')}}时,这将返回我的来宾机器的路径,而不是远程主机的路径。
如何获取/更改远程主机的环境变量?
我的剧本:
---
- name : playbook
hosts : webservers
gather_facts: yes
remote_user: user1
vars:
Path: "{{lookup('ansible_env','PATH')}}"
roles :
- task1
- task2
- task3
返回我的机器的路径而不是名为user1的远程主机的路径我是ansible的初学者需要一些帮助。提前谢谢你。
答案 0 :(得分:9)
lookup
函数的行为是documented explicitly:
插件允许从外部源访问Ansible中的数据。这些插件在Ansible控制机器上进行评估......
有关于访问远程环境变量的FAQ:
Ansible 1.4还将通过'ansible_env'变量中的事实提供远程环境变量:
{{ ansible_env.SOME_VARIABLE }}
请注意,远程事实(如ansible_env
)仅在启用事实收集时可用(这是ansible的默认行为,但可以在配置文件或播放簿中禁用)。
如果您想修改远程主机的环境,请再次查看描述environment
指令的the documentation:
Ansible使您可以使用'environment'关键字轻松配置环境。这是一个例子:
- hosts: all remote_user: root tasks: - apt: name=cobbler state=installed environment: http_proxy: http://proxy.example.com:8080
这些为此特定任务设置了环境变量 。这不是一个持久的修改。
答案 1 :(得分:1)
根据文档here,您不能将lookup
用于远程计算机,该关键字仅适用于本地计算机。
相反,您想使用{{ ansible_env.PATH}}
。