How to get environment variables of remote host
Solution 1
The behavior of the lookup
function is documented explicitly:
plugins allow access of data in Ansible from outside sources. These plugins are evaluated on the Ansible control machine...
There is a FAQ regarding access to remote environment variables:
Ansible 1.4 will also make remote environment variables available via facts in the ‘ansible_env’ variable:
{{ ansible_env.SOME_VARIABLE }}
Note that remote facts (like ansible_env
) are only available if fact gathering is enabled (which is the default behavior of ansible, but can be disabled in the config file or in your playbooks).
If you want to modify the environment of the remote host, you again look to the documentation which describes the environment
directive:
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
These sets an environment variable for this specific task. It is not a persistent modification.
Solution 2
According to the documentation here, you can't use lookup
for remote machines, that keyword only works for the local machine.
Instead, you want to use {{ ansible_env.PATH}}
.
mndhr
Updated on June 05, 2022Comments
-
mndhr almost 2 years
I am having problems working with the environment variables of a remote host. For example, when I try {{ lookup('env', 'PATH') }} this returns the path of my guest machine not of the remote host.
How to pick up / change environment variables of the remote host?
my playbook :
--- - name : playbook hosts : webservers gather_facts: yes remote_user: user1 vars: Path: "{{lookup('ansible_env','PATH')}}" roles : - task1 - task2 - task3
that's return the path of my machine not the path of remote host named user1 i'm a beginner in ansible need some help . thank you in advance.
-
mndhr about 8 yearsi tried to use
{{ ansible_env.PATH}}
but still return to me the same Path of my local machine . i tried to get other variable like still return emty "" or return the value of the variable if it defined in my local machine . -
mndhr about 8 yearsi tried to use
{{ ansible_env.PATH}}
but still return to me the same Path of my local machine . i tried to get other variable like still return emty "" or return the value of the variable if it defined in my local machine . and i tried to discover all the ansible_env variables in the remote host with the commandansible all -m setup
i can't find all the variable defined in the remote host