Ansible variables, Lists, Dictionaries
There are many boring tasks in your daily job which can be automated easily if you know some of the tools like here, Ansible. Let's explore more on how to use the variables in the playbooks.
In this post we will be covering :
- Basic datatypes
- List variables and using them
- Dictionary variable and accessing them
Variables and Datatypes in Ansible
In Ansible variables can be defined under global tasks or they can be defined at local to a task level. support all the Python supported datatypes.---
# Filename: varibles_datatypes.yml
- name: varibles in ansible
hosts: localhost
gather_facts: false
vars:
a: "Vybhava Technologies"
b: yes
n: 100
m: 500.99
tasks:
- debug:
msg:
- "a= {{ a }} a type: {{ a |type_debug }}"
- "b= {{ b }} b type: {{ b |type_debug }}"
- "n= {{ n }} n type: {{ n |type_debug }}"
- "m= {{ m }} m type: {{ m |type_debug }}"
The execution output is :
ansible-playbook varibles_datatypes.yml
Screenshot
Ansible Lists
In Ansible List object is similar to the Python list. Which can be assigned alist variable within a single line or lease it can be represented in the column which will start by using "-" for each element. Here I've experimented with two options.
# File: hello.yml
- name: List variables from ansible playbook
hosts: localhost
gather_facts: no
vars:
mylearning_list: ['Linux','git','Jenkins','Docker','Kubernetes','Ansible']
tasks:
- name: printing list
debug:
msg:
- "mylearning_list:"
- "{{ mylearning_list }}"
- name: Concatenate a list to string
set_fact:
my_string: "{{ mylearning_list | join(',') }}"
- name: Print the String
debug:
msg: "{{ my_string }}"
- name: printing list element
debug:
msg: "mylearning_list: {{ mylearning_list[1] }}"
- name: printing list range of elements
debug:
msg:
- "mylearning_list[3:5]:"
- "{{ myle
| Ansible list of element usage |
hosts: localhost
gather_facts: no
vars:
devops_team:
- srinu
- rajshekhar
- arun
- charan
- suresh
- elavarsi
tasks:
- name: Display all elements of List
debug:
msg: "{{ devops_team }}"
- name: Display a elements of List
debug:
msg: "{{ devops_team[3] }}"
- name: Display rage of elements from List
debug:
msg: "{{ devops_team[3:6] }}"
~
Ansible Dictionaries
The python dictionaries can be used in the Ansible plays. The representation is within {} when we have few key:value
The data item will be stored with key and value
We can dfine a dictionary variable as two forms : 1. single line
osfam_web: {"el": "httpd", "ubuntu": "apache2"}
2. multiline form
osfam_web: el: httpd ubuntu: apache2Example Execution
[ansible@master qa]$ cat mydict.yml
---
# Filename: mydict.yml
- name: Dictionaries in ansible
hosts: localhost
gather_facts: false
vars:
osfam: {"el":"httpd","ubuntu":"apache2"}
tasks:
- debug:
msg:
- "osfam.keys {{ osfam.keys() }}"
- "osfam {{ osfam }}"
- "osfam type {{ osfam |type_debug }}"
- "osfam[el] {{ osfam['el'] }}"
Execution output
ansible-playbook mydict.yml
Comments