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