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

mnd*_*dhr 8 linux yaml environment-variables 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 
Run Code Online (Sandbox Code Playgroud)

返回我的机器的路径而不是名为user1的远程主机的路径我是ansible的初学者需要一些帮助.先感谢您.

lar*_*sks 11

明确记录lookup函数的行为:

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

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

Ansible 1.4还将通过'ansible_env'变量中的事实使远程环境变量可用:

{{ ansible_env.SOME_VARIABLE }}
Run Code Online (Sandbox Code Playgroud)

请注意远程事实(例如ansible_env,仅在启用事实收集时才可用(这是ansible的默认行为,但可以在配置文件或播放簿中禁用).

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

Ansible使您可以使用'environment'关键字轻松配置环境.这是一个例子:

- hosts: all
  remote_user: root

  tasks:

    - apt: name=cobbler state=installed
      environment:
        http_proxy: http://proxy.example.com:8080
Run Code Online (Sandbox Code Playgroud)

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