Ansible Contd
YAML
- It is a Data Description Format.
-
It is widely used to store
- Data
- Configurations
-
Data can be categorized into 2 types
- Simple/Scalar:
- Text
name: Ansible
- Number
version: 2.13
- Boolean
opensource: yes
- Text
- Complex
- list/array (plural)
“`yaml
colors:</li>
<li>red</li>
<li>blue</li>
<li>green
“` - object/map/dictionary
yaml
address:
flatno: 407
building: mythrivanam
city: Hyderabad
- list/array (plural)
- Simple/Scalar:
- JSON/YAML use Key-Value (Name Value) pairs.
- YAML Basic key value syntax is
key: value
- Sample YAML (Quality Thought)
---
name: QualityThought
contact:
email:
- support@qualitythought.in
- qualitythought.in@gmail.com
phone:
- 999999999
- 888888888
address:
- flat: 407
building: mythrivanam
city: Hyderabad
- flat: 302
building: Nilgiri
city: Hyderabad
- Good books to read
---
Purpose: Good Books to Read
Books:
- Title: Your Brain at Work
Author: David Rock
ISBN: 978-0062312822
Language: English
- Title: Rich Dad Poor Dad
Author: Robert Kiyosaki
ISBN: 978-1612680194
Language: English
- Title: Who moved my cheese
Author: Spencer Johnson
ISBN: 978-0091883768
Language: English
- Write a yaml describing your favorite movies/holiday destinations
---
movies:
- name:
starcast:
-
-
technical:
director:
producer:
release:
-
-
destinations:
- name:
modeoftransport:
spots:
-
-
-
- YAML files are generally stored with extensions .yaml or .yml
Ansible Playbook
- Refer Here for official docs
- The structure of the YAML is defined by Ansible
---
- name: <purpose>
hosts: <where to execute>
become: yes # whether to run the tasks with sudo
tasks:
- name: <task description> # individual step
<module-name>:
<param-1>: <value-1>
..
<param-n>: <value-n>
- name: <task description>
<module-name>:
<param-1>: <value-1>
..
<param-n>: <value-n>
state: <desired-state>
Lets write a playbook for Apache installation
- Manual steps
sudo apt update
sudo apt install apache2 -y
- Google
apt in ansible
Refer Here for the module page - Go through parameters and fill in the necessary parameters
- Playbook: Refer Here for the changes done
- Executing ansible playbook: Refer Here
- Now re-execute the same command and ansible will not install apache2 but since apache2 exists it doesn’t change any thing