YAML a gagné en popularité au cours des dernières années, car il est devenu une partie intégrante des outils, technologies et processus DevOps cruciaux tels qu'Ansible, Kubernetes, les pipelines CI/CD, etc.
Nous avons déjà couvert de nombreux tutoriels sur Ansible et Kubernetes. J'ai pensé à couvrir l'essentiel de YAML afin que vous deviez être conscient pour un travail plus fluide avec la configuration de vos outils DevOps.
Qu'est-ce que YAML ?
YAML signifie "YAML n'est pas un langage de balisage" était à l'origine un acronyme pour 'Yet Another Markup Language'. YAML est un langage de "sérialisation de données" et essentiellement un format de données structuré lisible par l'homme.
Il est conçu pour être lu et écrit facilement. La fonctionnalité de sérialisation d'objets de YAML se présente comme une alternative pratique à JSON. YAML est un sur-ensemble de JSON avec l'utilisation d'une portée basée sur l'indentation pour désigner la structure comme Python.
Voici un exemple d'exemple YAML :
---
Student-ID: 314159
First-Name: Linus
Last-Name: Torvalds
Phone-numbers:
- 281.555.7777
- 832.676.8888
- 937.996.9999
Addresses:
- Street: 123 Main St.
- City: Houston
- State: Tx
---
Règles de base de YAML dont vous devez toujours vous souvenir
Si vous ne voulez pas voir des erreurs répétées lors de l'analyse de votre fichier YAML, vous devez toujours garder à l'esprit ce qui suit lorsque vous travaillez sur YAML :
- Les onglets ne sont PAS autorisés dans YAML. Vous devez utiliser l'espace pour l'indentation.
- Bien que la quantité d'espace n'ait pas d'importance tant que l'indentation du nœud enfant est supérieure à celle du parent, il est recommandé de conserver le même nombre d'espaces.
- Il doit y avoir un espace entre les différents éléments de YAML (expliqué plus loin).
- YAML est sensible à la casse.
- Le fichier YAML doit se terminer par des extensions telles que
.yaml
ou.yml
. - YAML permet l'encodage UTF-8, UTF-16 et UTF-32.
Comprenons maintenant la syntaxe YAML.
Éléments d'un fichier YAML :syntaxe de base
Un fichier YAML est utilisé pour décrire les données. Dans un fichier YAML, le contenu concerne une collection de paires clé-valeur où la valeur peut être n'importe quoi allant d'une chaîne à un arbre.
Comprenons-le par un exemple. Il s'agit d'un fichier manifeste de service Kubernetes.
kind: Service
metadata:
name: web-app-svc
spec:
type: NodePort
ports:
- port: 8080 #service port
targetPort: 8080 #Pod Port
nodePort: 30012 #Node Port from the range - 30000-32767
selector:
app: web-app
Il s'explique d'eux-mêmes qu'il s'agit d'un ensemble d'éléments de paires de valeurs clés :Name: Value
.
Comme vous pouvez le voir dans le fichier ci-dessus, un fichier YAML est constitué d'un certain nombre d'éléments différents. Ensemble, ils peuvent être utilisés pour décrire une grande variété de structures.
1. Espaces ou indentation
Dans YAML, vous indentez avec des espaces blancs, pas des tabulations. Et il DOIT y avoir un espace entre les éléments.
Spécification correcte :
Kind:Service
Spécification incorrecte :
Kind:Service
Parce qu'il n'y a pas d'espace après les deux-points dans la déclaration ci-dessus !
2. Commentaires en YAML
Les commentaires peuvent être définis en plaçant un dièse devant un élément '#
'. Les commentaires peuvent être faits au début d'une ligne ou n'importe où dans la ligne.
Si vous parcourez notre fichier de configuration YAML, nous avons trois commentaires en ligne tels que "#service port", etc.
3. Scalaire (valeur-clé)
Les scalaires sont les chaînes et les nombres qui composent les données sur la page. En termes simples, ce sont les paires clé-valeur.
kind: Service
metadata:
name: web-app-svc
4. Collections et listes
Les éléments ou membres de liste et de collection sont les lignes qui commencent au même niveau d'indentation, commençant par un tiret suivi d'un espace.
- web-app-prod
- prod-deployments
- prom-monitored
Il s'agit d'une liste de base dans laquelle chaque élément de la liste est placé sur sa propre ligne avec un tiret d'ouverture.
5. Collections imbriquées
Si vous souhaitez créer une séquence imbriquée avec des éléments et des sous-éléments, vous pouvez le faire en plaçant un seul espace avant chaque tiret dans les sous-éléments.
-
- web-app-prod
- prod-deployments
- prom-monitored
-
- web-app-test
- staging-deployments
- not-monitored
6. Dictionnaires
Les dictionnaires comportent une key: value
format avec le contenu en retrait.
ports:
- port: 8080 #service port
targetPort: 8080 #Pod Port
nodePort: 30012 #Node Port from the range - 30000-32767
Vous pouvez fusionner et mélanger des collections de listes et de dictionnaires comme ceci :
ports:
- port: 8080 #service port
targetPort: 8080 #Pod Port
nodePort:
- 30012
- 30013
- 30014
Ce sont des concepts très basiques de YAML mais essentiels pour un ingénieur DevOps.
Vous n'avez pas besoin d'éditeur spécial pour YAML. Votre éditeur de texte préféré devrait déjà prendre en charge YAML ou utiliser un plugin si nécessaire.
Il y a beaucoup de choses que vous pouvez approfondir et apprendre. Pour cela, vous pouvez toujours vous référer à la documentation officielle de YAML.
Vous voulez être un meilleur administrateur système ou DevOps ? Devenez membre du Manuel Linux dès aujourd'hui.