Summary
This context provides a guide on how to pass or override an Ansible Playbook variable from the command line in plaintext, JSON, or YAML.
Abstract
The content of this context revolves around the concept of passing variables to Ansible Playbooks via the command line. This is a powerful and flexible way to customize playbook execution based on dynamic inputs. The command line parameter for passing extra variables is --extra-vars
, followed by the variable-value pair. The context provides examples of how to use this feature, such as changing the value of a variable from "banana" to "apple" or "raspberry". This capability opens up endless possibilities for dynamic playbook executions, making automation workflows even more powerful.
Bullet points
--extra-vars
, followed by the variable-value pair.In today’s episode of Ansible Pilot, we’ll delve into the practical aspect of passing variables to Ansible Playbooks via the command line. This can be a powerful and flexible way to customize your playbook execution based on dynamic inputs. I’m Luca Berton, and let’s jump right into the world of Ansible extra variables.
Ansible extra variables provide a means to pass values to your playbook from the command line. This flexibility is particularly valuable when you need to integrate Ansible into existing automation scripts or workflows. Extra variables can be specified in various formats, and today, we’ll explore a few options.
The command line parameter for passing extra variables is --extra-vars
, followed by the variable-value pair. Here are some examples:
--extra-vars "fruit=apple"
--extra-vars '{"fruit":"apple"}'
--extra-vars "@file.json"
--extra-vars "@file.yml"
Let’s illustrate this concept with a real-life example. Consider the following Ansible Playbook:
---
- name: Extra variable demo
hosts: all
vars:
fruit: "banana"
task:
- name: Print message
ansible.builtin.debug:
msg: "fruit is {{ fruit }}"
In this playbook, we have a variable named fruit
with a default value of "banana
." The playbook then prints a message using the value of this variable.
If we run the playbook without any extra variables, it uses the default value:
$ ansible-playbook -i inventory --extra-vars="fruit=apple" example.yml
PLAY [Extra variable demo] ************************************************************************
TASK [Gathering Facts] ****************************************************************************
ok: [demo.example.com]
TASK [Print message] *****************************************************************************
ok: [demo.example.com] => {
"msg": "fruit is apple"
}
PLAY RECAP ****************************************************************************************
demo.example.com : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
Now, let’s provide a plain extra variable:
$ ansible-playbook -i inventory --extra-vars="fruit=apple" example.yml
PLAY [Extra variable demo] ************************************************************************
TASK [Gathering Facts] ****************************************************************************
ok: [demo.example.com]
TASK [Print message] *****************************************************************************
ok: [demo.example.com] => {
"msg": "fruit is apple"
}
PLAY RECAP ****************************************************************************************
demo.example.com : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
Lastly, let’s use a JSON-formatted extra variable:
$ ansible-playbook -i inventory --extra-vars='{"fruit":"raspberry"}' example.yml
PLAY [Extra variable demo] ************************************************************************
TASK [Gathering Facts] ****************************************************************************
ok: [demo.example.com]
TASK [Print message] *****************************************************************************
ok: [demo.example.com] => {
"msg": "fruit is raspberry"
}
PLAY RECAP ****************************************************************************************
demo.example.com : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
In summary, passing extra variables to an Ansible Playbook through the command line is a straightforward process. Whether you choose a plain variable, a JSON-formatted one, or even reference a file, Ansible provides the flexibility to cater to your specific needs. This capability opens up endless possibilities for dynamic playbook executions, making your automation workflows even more powerful.