How to include external variables yaml file in ansible playbook

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

Leave a Reply

Your email address will not be published. Required fields are marked *