YAML: Difference between revisions

From Omnia
Jump to navigation Jump to search
Line 3: Line 3:
YAML Syntax — Ansible Documentation - https://docs.ansible.com/ansible/2.5/reference_appendices/YAMLSyntax.html#yaml-syntax
YAML Syntax — Ansible Documentation - https://docs.ansible.com/ansible/2.5/reference_appendices/YAMLSyntax.html#yaml-syntax


Comment:
== Comment ==
 
<pre>
<pre>
# this is a comment
# this is a comment
</pre>
</pre>
== --- ==


All YAML files (regardless of their association with Ansible or not) can optionally begin with --- and end with ... This is part of the YAML format and indicates the start and end of a document.
All YAML files (regardless of their association with Ansible or not) can optionally begin with --- and end with ... This is part of the YAML format and indicates the start and end of a document.
Line 20: Line 23:


</pre>
</pre>
== List ==
Python Note: This is equivalent to Pythons List: fruits = ['Apple', 'Orange', '''].


All members of a list are lines beginning at the same indentation level starting with a "- " (a dash and a space):
All members of a list are lines beginning at the same indentation level starting with a "- " (a dash and a space):
List:
<pre>
<pre>
---
---
# A list of tasty fruits
# A list of tasty fruits
fruits:
fruits:
    - Apple
  - Apple
    - Orange
  - Orange
    - Strawberry
  - Strawberry
    - Mango
  - Mango
...
...
</pre>
</pre>
== Dictionary ==
Python note: This is equivalent to Python Dictionary: martin = {'name': 'Martin', 'job': 'Dev': 'skill': 'Elite'}


Dictionary:
Dictionary:
Line 37: Line 50:
# An employee record
# An employee record
martin:
martin:
    name: Martin D'vloper
  name: Martin D'vloper
    job: Developer
  job: Developer
    skill: Elite
  skill: Elite
</pre>
</pre>


Abbreviated list / dictonary:
Compact Abbreviated list / dictonary:
<pre>
<pre>
martin: {name: Martin D'vloper, job: Developer, skill: Elite}
martin: {name: Martin D'vloper, job: Developer, skill: Elite}
Line 48: Line 61:
</pre>
</pre>


Boolean values:
== Boolean Values ==
 
<pre>
<pre>
create_key: yes
create_key: yes
Line 56: Line 70:
uses_cvs: false
uses_cvs: false
</pre>
</pre>
== Block Text ==


Literal Block Scalar: (indentation ignored)
Literal Block Scalar: (indentation ignored)
Line 63: Line 79:
             will appear these three
             will appear these three
             lines of poetry
             lines of poetry
</pre>


Literal Block Scalar - folded to one line: (indentation ignored)
<pre>
fold_newlines: >
fold_newlines: >
             this is really a
             this is really a
Line 70: Line 89:
</pre>
</pre>


Variables:
== Injected Variables - NOT YAML ==
 
This is not a YAML standard, but is a common theme used by things applications like Ansible.
 
Injected Variables:
<pre>
<pre>
foo: "{{ variable }}"
foo: "{{ variable }}"
foo: {{ variable }}
</pre>
</pre>



Revision as of 20:54, 25 February 2024

YAML

YAML Syntax — Ansible Documentation - https://docs.ansible.com/ansible/2.5/reference_appendices/YAMLSyntax.html#yaml-syntax

Comment

# this is a comment

---

All YAML files (regardless of their association with Ansible or not) can optionally begin with --- and end with ... This is part of the YAML format and indicates the start and end of a document.

# file test.yaml - yamllint doesn't care if there is a comment before ---
---
test:
  name: big test
# yamllint will check for --- by default
# yamllint likes an empty new line at end of file, ??most of the time??, even after ...
# yamllint will NOT check for ... by default
...

List

Python Note: This is equivalent to Pythons List: fruits = ['Apple', 'Orange', ].

All members of a list are lines beginning at the same indentation level starting with a "- " (a dash and a space):

List:

---
# A list of tasty fruits
fruits:
  - Apple
  - Orange
  - Strawberry
  - Mango
...

Dictionary

Python note: This is equivalent to Python Dictionary: martin = {'name': 'Martin', 'job': 'Dev': 'skill': 'Elite'}

Dictionary:

# An employee record
martin:
  name: Martin D'vloper
  job: Developer
  skill: Elite

Compact Abbreviated list / dictonary:

martin: {name: Martin D'vloper, job: Developer, skill: Elite}
fruits: ['Apple', 'Orange', 'Strawberry', 'Mango']

Boolean Values

create_key: yes
needs_agent: no
knows_oop: True
likes_emacs: TRUE
uses_cvs: false

Block Text

Literal Block Scalar: (indentation ignored)

include_newlines: |
            exactly as you see
            will appear these three
            lines of poetry

Literal Block Scalar - folded to one line: (indentation ignored)

fold_newlines: >
            this is really a
            single line of text
            despite appearances

Injected Variables - NOT YAML

This is not a YAML standard, but is a common theme used by things applications like Ansible.

Injected Variables:

foo: "{{ variable }}"
foo: {{ variable }}

yamllint

See yamllint

Install:

apt install yamllint

Use:

yamllint file.yaml

Note:

  • Defaults to max lines 80 limit

Doc:

https://yamllint.readthedocs.io/en/stable/

keywords