Ansible - Appending values to a variable using set_fact
by
Jeremy Canfield |
Updated: September 20 2022
| Ansible articles
Let's say you are using the vars plugin to set the "foo" variable to contain a value of "bar". The debug module can be used to confirm that the foo variable contains bar.
---
- hosts: localhost
vars:
foo: "bar"
tasks:
- debug:
var: foo
...
Something like this should be returned.
ok: [localhost] => {
"foo": "bar"
}
The set_fact module can be used to update the foo variable. Here is how you could append "Hello" and "World" to the foo variable.
---
- hosts: localhost
vars:
foo: "bar"
tasks:
- set_fact:
foo: "{{ foo }} Hello"
- set_fact:
foo: "{{ foo }} World"
- name: output the 'foo' variable
debug:
var: foo
...
Which should now output the following.
ok: [localhost] => {
"foo": "bar Hello World"
}
Sometimes you will find yourself creating two tasks, one when a condition evaulates to true, another when a condition evaulates to false.
---
- hosts: localhost
vars:
foo: "bar"
tasks:
- set_fact:
foo: "{{ foo }} Hello"
when: bar is defined
- set_fact:
foo: "{{ foo }} World"
when: bar is undefined
...
Jinja2 if statements can be used to consolidate this to one task.
---
- hosts: localhost
vars:
foo: "bar"
tasks:
- set_fact:
foo: "{% if foo is defined %}{{ foo }} Hello{% else %}{{ foo}} World{% endif %}"
...
Did you find this article helpful?
If so, consider buying me a coffee over at