如何获取远程主机的环境变量

时间:2016-04-04 13:14:42

标签: linux environment-variables yaml ansible ansible-playbook

我在使用远程主机的环境变量时遇到问题。例如,当我尝试{{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的初学者需要一些帮助。提前谢谢你。

2 个答案:

答案 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}}