How to include external variables yaml file in ansible playbook

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

[defaults]
inventory = hosts

Create a hosts file as hosts in the same 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 name called as external_vars.yml which you include into the main ansible playbook to access variables in the same directory

---
external_example_key: example value
external_dict:
dict_key: This is a dictionary example value
external_inline_dict:
  { inline_dict_key: This is an inline dictionary value }
external_named_list:
  - item1
  - item2
  - item3
  - item4
external_inline_named_list:
  [ item1, item2, item3, item4 ]
-  name: 'create and access variables inside the playbook'
   #Target: where our play will run and options it will run with
   hosts: ansnode1
   gather_facts: false
   #Variable: variables that will apply to the play, on all target systems
   vars_files:
     - external_vars.yml
# Task: the list of tasks that will be executed within the playbook
 tasks:
   - name: Displaying external dictionary key value
     debug:
       msg: "{{ external_example_key }}"
   - name: Displaying external named dictionary dictionary
     debug:
       msg: "{{ external_dict}}"
   - name: Displaying name dictionary dictionary key value with dictionary dot notation
     debug:
       msg: "{{ external_dict.dict_key}}"
   - name: Displaying name dictionary dictionary key value with dictionary dot notation
     debug:
       msg: "{{ external_dict.dict_key}}"
   - name: Displaying named dictionary dictionary key value with brackets notation
     debug:
       msg: "{{ external_dict['dict_key']}}"
   - name: Displaing external named inline dictionary key value
     debug: msg="{{ external_inline_dict}}"
   - name: Displaying external named inline dictionary key value with dot notation
     debug:
       msg: "{{ external_inline_dict.inline_dict_key }}"
   - name: Displaying external named inline dictionary key value with brackets notation
     debug:
       msg: "{{ external_inline_dict['inline_dict_key'] }}"
   - name: Displaying external named inline dictionary key value with brackets notation
     debug:
       msg: "{{ external_inline_dict['inline_dict_key'] }}"
   - name: Display external named list
     debug:
       msg: "{{ external_named_list }}"
   - name: Display external named list first item dot notation
     debug:
       msg: "{{ external_named_list.0 }}"
   - name: Display external named list first item with brackets notation
     debug:
       msg: "{{ external_named_list[0]}}"
   - name: Display external inline named list first item with brackets notation
     debug:
       msg: "{{ external_inline_named_list}}"
   - name: Display external inline named list first item dot notation
     debug:
       msg: "{{ external_inline_named_list.0 }}"
   - name: Display external inline named list first item with brackets notation
     debug:
       msg: "{{ external_inline_named_list[0]}}" 
# Three dots indicate the end of a YAML document
...

Full Source Code Also Available in : https://github.com/tamiltutera/example-ansible-variables

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