Passing Variables to local_action Module in Ansible
In Ansible, the local_action
module allows you to execute tasks on the control node (the machine running the Ansible playbook) instead of the remote hosts. When using the local_action
module, you may need to pass variables to the tasks being executed on the control node. Here's how you can do that:
Using Registered Variables
One way to pass variables to the local_action
module is by using registered variables. When you run a task in Ansible, you can store the output of that task in a variable using the register
keyword. You can then use this registered variable in the local_action
module.
Here's an example:
- name: Get the current working directory
command: pwd
register: current_dir
- name: Print the current working directory
local_action:
module: debug
msg: "The current working directory is {{ current_dir.stdout }}"
In this example, the command
module is used to get the current working directory, and the output is stored in the current_dir
variable. The local_action
module then uses the current_dir.stdout
variable to print the current working directory.
Using Playbook Variables
You can also pass variables directly to the local_action
module by defining them in the playbook. These variables can be defined at the play level or the task level, depending on your needs.
Here's an example:
- hosts: localhost
vars:
my_variable: "Hello, World!"
tasks:
- name: Print the variable
local_action:
module: debug
msg: "The value of my_variable is {{ my_variable }}"
In this example, the my_variable
is defined at the play level and is then used in the local_action
module to print its value.
Using Extra-vars
Another way to pass variables to the local_action
module is by using the --extra-vars
(or -e
) option when running the Ansible playbook. This allows you to pass variables from the command line or through a JSON or YAML file.
Here's an example:
ansible-playbook my_playbook.yml -e "my_variable=Hello, World!"
In this example, the my_variable
is passed as an extra variable to the playbook, and it can then be used in the local_action
module.
Mermaid Diagram
Here's a Mermaid diagram that illustrates the different ways to pass variables to the local_action
module in Ansible:
By using these different methods, you can effectively pass variables to the local_action
module in your Ansible playbooks, allowing you to customize the behavior of tasks running on the control node.