如何获取远程主机的环境变量
How to get environment variables of remote host
我在使用远程主机的环境变量时遇到问题。例如,当我尝试 {{ lookup('env', 'PATH') }} 这个 return 是我的来宾机器的路径,而不是远程主机的路径。
如何获取/更改远程主机的环境变量?
我的剧本:
---
- name : playbook
hosts : webservers
gather_facts: yes
remote_user: user1
vars:
Path: "{{lookup('ansible_env','PATH')}}"
roles :
- task1
- task2
- task3
那是 return 我机器的路径,而不是名为 user1 的远程主机的路径 我是 ansible 的初学者,需要一些帮助。提前谢谢你。
根据文档 here,您不能对远程计算机使用 lookup
,该关键字仅适用于本地计算机。
相反,您想使用 {{ ansible_env.PATH}}
。
lookup
函数的行为是 documented explicitly:
plugins allow access of data in Ansible from outside sources. These plugins are evaluated on the Ansible control machine...
有一个关于访问远程环境变量的FAQ:
Ansible 1.4 will also make remote environment variables available via facts in the ‘ansible_env’ variable:
{{ ansible_env.SOME_VARIABLE }}
请注意,远程事实(如 ansible_env
)仅在启用事实收集时可用(这是 ansible 的默认行为,但可以在配置文件或您的剧本中禁用)。
如果你想修改远程主机的环境,你再次查看the documentation,它描述了environment
指令:
Ansible makes it easy for you to configure your environment by using the ‘environment’ keyword. Here is an example:
- hosts: all
remote_user: root
tasks:
- apt: name=cobbler state=installed
environment:
http_proxy: http://proxy.example.com:8080
这些设置了一个环境变量为此特定任务。不是持久化修改。
我在使用远程主机的环境变量时遇到问题。例如,当我尝试 {{ lookup('env', 'PATH') }} 这个 return 是我的来宾机器的路径,而不是远程主机的路径。
如何获取/更改远程主机的环境变量?
我的剧本:
---
- name : playbook
hosts : webservers
gather_facts: yes
remote_user: user1
vars:
Path: "{{lookup('ansible_env','PATH')}}"
roles :
- task1
- task2
- task3
那是 return 我机器的路径,而不是名为 user1 的远程主机的路径 我是 ansible 的初学者,需要一些帮助。提前谢谢你。
根据文档 here,您不能对远程计算机使用 lookup
,该关键字仅适用于本地计算机。
相反,您想使用 {{ ansible_env.PATH}}
。
lookup
函数的行为是 documented explicitly:
plugins allow access of data in Ansible from outside sources. These plugins are evaluated on the Ansible control machine...
有一个关于访问远程环境变量的FAQ:
Ansible 1.4 will also make remote environment variables available via facts in the ‘ansible_env’ variable:
{{ ansible_env.SOME_VARIABLE }}
请注意,远程事实(如 ansible_env
)仅在启用事实收集时可用(这是 ansible 的默认行为,但可以在配置文件或您的剧本中禁用)。
如果你想修改远程主机的环境,你再次查看the documentation,它描述了environment
指令:
Ansible makes it easy for you to configure your environment by using the ‘environment’ keyword. Here is an example:
- hosts: all remote_user: root tasks: - apt: name=cobbler state=installed environment: http_proxy: http://proxy.example.com:8080
这些设置了一个环境变量为此特定任务。不是持久化修改。