How to read an environment variable on Ansible Controller with Ansible?

Ansible read an environment variable

  • ansible.builtin.env
  • Read the value of environment variables

Let's deep dive into the Ansible lookup plugin env. Plugins are a way to expand the Ansible functionality. With lookup plugins specifically, you can load variables or templates with information from external sources. The full name is ansible.builtin.env, it's part of ansible-core and is included in all Ansible installations. The purpose of the env lookup plugin is to read the value of environment variables.

Parameters and Return Value

Parameters

  • _terms string - Environment variable

Return Values

  • _raw list - Values from the environment variables

The parameters of plugin env.

The only required parameter is the default "_terms", with the name of the environment variable to read. The normal usage is to assign the lookup plugin to a variable name but you could use it in your Ansible task directly.

Playbook

Read an environment variable with Ansible Playbook.

code

---
- name: environment Playbook
  hosts: all
  tasks:
    - name: display HOME
      ansible.builtin.debug:
        msg: "{{ lookup('env', 'HOME') }}"

execution

ansible-pilot $ printenv | grep HOME
HOME=/Users/lberton
ansible-pilot $ ansible-playbook -i virtualmachines/demo/inventory ansible\ statements/environment.yml
PLAY [environment Playbook] ***************************************************************************
TASK [Gathering Facts] ****************************************************************************
ok: [demo.example.com]
TASK [display HOME] *******************************************************************************
ok: [demo.example.com] => {
    "msg": "/Users/lberton"
}
PLAY RECAP ****************************************************************************************
demo.example.com           : ok=2    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0
ansible-pilot $

idempotency

ansible-pilot $ printenv | grep HOME
HOME=/Users/lberton
ansible-pilot $ ansible-playbook -i virtualmachines/demo/inventory ansible\ statements/environment.yml
PLAY [environment Playbook] ***************************************************************************
TASK [Gathering Facts] ****************************************************************************
ok: [demo.example.com]
TASK [display HOME] *******************************************************************************
ok: [demo.example.com] => {
    "msg": "/Users/lberton"
}
PLAY RECAP ****************************************************************************************
demo.example.com           : ok=2    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0
ansible-pilot $

Conclusion

Now you know how to read an environment variable with Ansible. You know how to use it based on your use case.