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 $

`