How to read an environment variable on Ansible Controller with Ansible?
I'm going to show you a live Playbook with some simple Ansible code.
I'm Luca Berton and welcome to today's episode of Ansible Pilot.
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
``yaml
---
- name: environment Playbook
hosts: all
tasks:
- name: display HOME
ansible.builtin.debug:
msg: "{{ lookup('env', 'HOME') }}"
`
execution
`bash
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 $
`