How to include and use extra_vars as in external yaml file in ansible playbook?

In Ansible, you can use extra_vars to pass additional variables to your playbook. One way to use extra_vars is by passing them in an external YAML file. Here’s an example of how to include and use extra_vars from an external YAML file in an Ansible playbook:

  1. Create an external YAML file with your variables. For example, you can create a file called vars.yml with the following content:
---
my_var1: value1
my_var2: value2
  1. Modify your Ansible playbook to include the vars.yml file and reference the variables using extra_vars. Here’s an example:
- name: Example of using extra_vars from external YAML file
  hosts: all
  vars_files:
    - vars.yml
  tasks:
    - name: Print the values of my_var1 and my_var2
      debug:
        msg: "my_var1={{ my_var1 }}, my_var2={{ my_var2 }}"

In this example, we include the vars.yml file using the vars_files keyword. This makes the variables in the file available to the playbook. We then reference the variables in the debug module using the my_var1 and my_var2 variables.

  1. When running the playbook, pass the vars.yml file using the --extra-vars option. Here’s an example:
ansible-playbook my_playbook.yml --extra-vars "@vars.yml"

In this example, we pass the vars.yml file using the --extra-vars option and prefix the filename with the @ symbol. This tells Ansible to read the variables from the file and make them available to the playbook.

When you run this playbook, Ansible will print out the values of my_var1 and my_var2 using the values from the vars.yml file:

ok: [localhost] => {
    "msg": "my_var1=value1, my_var2=value2"
}

Create a ansible config file as ansible.cfg file in your project directory:

[defaults]
inventory = hosts

 

Create a hosts file as hosts in the project directory

[webservers]
 ansnode1 ansible_ssh_host=192.168.56.202 ansible_python_interpreter=/usr/bin/python
 ansnode2 ansible_ssh_host=192.168.56.203 ansible_python_interpreter=/usr/bin/python

 [webservers:vars]
 ansible_port=22
 http_port=8080

 [dbservers]
 ansnode3 ansible_ssh_host=192.168.56.204 ansible_python_interpreter=/usr/bin/python
 ansnode4 ansible_ssh_host=192.168.56.205 ansible_python_interpreter=/usr/bin/python

[dev:children]
 webservers
 dbservers

Create a file named as external_extra_vars.yml in your project directory which has extra vars included in yaml file

---
 # YAML documents begin with the document separator ---
 # The minus in YAML this indicates a list item. The Playbook contains a list
 # of plays, with each play being a dictionary
 - name: 'create and access variables inside the playbook'

  # Target: where our play will run and options it will run with
  hosts: ansnode1
  gather_facts: true

  # Task: the list of tasks that will be executed within the playbook
  tasks:
    - name: Displaying groupvars and hostvars from the directory structure
      debug:
        msg: "{{ extra_vars_key }}"
# Three dots indicate the end of a YAML document
...

Create file named as extra_vars_file.yml in your project directory which contains extra variables in yml format

---
 extra_vars_key: this is extra var value from external yml
 ...

 {
   "extra_vars_key": "this is the extra var value from external json"
 }



Become a Subscriber
Get the Notify on latest Videos in your Desktop and Mobile . We never spam!
Popular Videos
Read next

Get Esxi host name by vm name using pyvmomi

Get Esxi host name by vm name using pyvmomi Import necessary modules from pyVim and pyVmomi libraries. SmartConnect is used for connecting to the ESXi host or vCenter, and vim contains the VMware Infrastructure (vSphere) model. Complete Code

December 13, 2023