Introduction to YAML

From CDOT Wiki
Jump to: navigation, search

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:
name: 'Name A'
id: '12345678'
name: 'Name B'
id: '98765432'

Some examples: file written in YAML

YAML File and Python

File name: students.yaml

  - 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'}]}


Ansible playbooks

File Name: get_os_version.yaml

- hosts: all
  remote_user: rchan
  - name: Print Linux distribution and version
       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'}]}]