Introduction to YAML
Contents
What is YAML?
- YAML stands for "YAML Ain’t markup language"
- It is a human-readable data serialization language that is used in Ansible to package output and its playbooks
What are the major components in YAML?
- declarations: name: 'yum'
- lists:
- - 'item_a'
- - 'item_b'
- - 'item_c'
- associative arrays:
- item_a:
- name: 'Name A'
- id: '12345678'
- item_b:
- name: 'Name B'
- id: '98765432'
- item_a:
Some examples: file written in YAML
YAML File and Python
File name: students.yaml
students: - name: David id_number: 012345678 program: CTY - name: Raymond id_number: 112001987 program: CNS
The above file contains data equivalent to the following dictionary data object in Python:
{'students': [{'id_number': '012345678', 'name': 'David', 'program': 'CTY'}, {'id_number': 112001987, 'name': 'Raymond', 'program': 'CNS'}]}
The contents of students.yaml can be created by the following python code:
#!/usr/bin/env python3 import yaml students = {'students': [{'name': 'David', 'id_number': '012345678', 'program': 'CTY'}, {'name': 'Raymond', 'id_number': 112001987, 'program': 'CNS'}]} print(yaml.dump(students))
Ansible playbooks
File Name: get_os_version.yaml
--- - hosts: all remote_user: rchan tasks: - name: Print Linux distribution and version debug: msg: '{{ ansible_distribution }} {{ ansible_distribution_version }}'
The file above contains data equivalent to the following data object in Python:
[{'hosts': 'all', 'remote_user': 'rchan', 'tasks': [{'debug': {'msg': '{{ ansible_distribution }} {{ ansible_distribution_version }}'}, 'name': 'Print Linux distribution and version'}]}]