Formation PUB420 : Système domotique DIY, 2020 Home Assistant

6.25 Le format YAML


YAML est un format de représentation des données semblable à XML ou JSON.

Originalement, cet acronyme venait de Yet Another Markup Language. Ironiquement, il signifie maintenant YAml ain't Markup Language.

Le format YAML ressemble énormément au JSON. En fait, YAML est un sur-ensemble de JSON.

Alors que JSON est le champion comme format d'échange de données, YAML est le préféré pour les fichiers de configuration.

En effet, contrairement à JSON, le format YAML permet :

  • l'ajout de commentaires
  • les chaînes sur plusieurs lignes
  • une lecture plus facile puisqu'il utilise l'indentation plutôt que les délimiteurs
  • la référence à une autre section du même fichier à l'aide d'ancres
  • etc.

Structure d'un fichier YAML

Dans un fichier YAML, on retrouve une série de blocs de configuration.

On donnera un nom à chacun des blocs.

Le nom d'un bloc doit respecter ces conditions :

  • Être unique
  • Utiliser seulement des lettres minuscules, des chiffres et des barres de soulignement

Dans un bloc, on peut retrouver des collections dans lesquelles chaque item débute par un trait d'union.

On peut également retrouver des paires clé-valeur au format cle: valeur.

YAML

nom_du_bloc:
  - item1: valeur1
    autrecleitem1: autrevaleuritem1
  - item2: valeur2
    autrecleitem2: autrevaleuritem2

Il est possible d'imbriquer les collections et les paires clé-valeur. L'indentation est la seule façon pour indiquer une imbrication.

Les fichiers YAML doivent répondre à ces exigences :

  • utiliser des espaces (les tabulations ne fonctionnent pas)
  • délimiter le code à l'aide d'indentations (généralement 2 ou 4 espaces pour une indentation)
  • la valeur booléenne vrai peut être entrée avec une de ces valeurs : True, On, Yes
  • la valeur booléenne faux peut être entrée avec une de ces valeurs: False, Off, No

Configuration sur plusieurs lignes

Lorsqu'une configuration comporte plusieurs lignes, il faut utliser l'un de ces caractères :

  • | : signifie que les sauts de lignes sont importants dans ce qui suit
  • > : signifie que les sauts de lignes sont remplacés par des espaces. Autrement dit, la configuration pourrait être entrée sur une seule ligne et donner le même résultat.

Dans les deux cas, on peut ajouter un trait d'union après le caractère afin d'indiquer qu'il faut enlever les sauts de ligne à la fin de la chaîne.

YAML

value_template: >-
  {% if is_state('input_boolean.porte_virtuelle', 'on') %}
    Ouverte
  {% else %}
    Fermée
  {% endif %}

Quelques exemples

Voici quelques exemples de fichiers de configuration YAML.

configuration.yaml

Ce fichier est utilisé par le logiciel domotique Home Assistant.

Fichier configuration.yaml

# Configure a default setup of Home Assistant (frontend, api, etc)
default_config:

# SMTP
notify:
  - name: courriel_administrateur
    platform: smtp
    sender: homeassistant@mondomaine.com
    server: mail.mondomaine.com
    timeout: 15
    port: 587
    encryption: starttls
    username: homeassistant@mondomaine.com
    password: mot_de_passse_en_clair
    sender_name: Home Assistant
    recipient: destinataire@sondomaine.com

# Text to speech
tts:
  - platform: google_translate

group: !include groups.yaml
automation: !include automations.yaml
script: !include scripts.yaml
scene: !include scenes.yaml

Homestead.yaml

Ce fichier est utilisé par les développeurs Laravel pour configurer leur environnement Homestead.

Fichier Homestead.yaml

---
ip: "192.168.10.10"
memory: 2048
cpus: 1
provider: virtualbox

authorize: ~/.ssh/id_rsa.pub

backup: true

keys:
    - ~/.ssh/id_rsa

folders:
    - map: ~/Documents/CodeLaravel
      to: /home/vagrant/code

sites:
    - map: monsite.test
      to: /home/vagrant/code/monsite/public
      php : "7.4"
    - map: autresite.test
      to: /home/vagrant/code/autresite/public

databases:
    - homestead

Pour plus d'information

« YAML ». Wikipédia. https://fr.wikipedia.org/wiki/YAML

« YAML ». yaml.org. https://yaml.org/

« Why JSON isn't a good configuration language ». Lucidchart. https://www.lucidchart.com/techblog/2018/07/16/why-json-isnt-a-good-configuration-language/

« YAML idiosyncrasies ». SaltStack. https://docs.saltstack.com/en/latest/topics/troubleshooting/yaml_idiosyncrasies.html

« YAML Style Guide ». Home Assistant. https://developers.home-assistant.io/docs/documenting/yaml-style-guide/

« YAML Multiline ». YAML Multiline. https://yaml-multiline.info/

« YAML Ain’t Markup Language (YAML™) version 1.2 - Scalars ». yaml.org. https://yaml.org/spec/1.2.2/#23-scalars

▼Publicité

Veuillez noter que le contenu de cette fiche vous est partagé à titre gracieux, au meilleur de mes connaissances et sans aucune garantie.
Merci de partager !
Soumettre