YAML (YAML Ain’t Markup Language) est un langage de sérialisation de données lisible par l’homme, largement utilisé pour les fichiers de configuration.
📝 Syntaxe de base
📌 Type 🧠 Syntaxe 📄 Chaîne de caractères nom: "Jean Dupont" ou nom: Jean Dupont🔢 Nombre age: 25 ou prix: 19.99✅ Booléen actif: true ou actif: false🚫 Valeur nulle valeur: null💬 Commentaire # Ceci est un commentaire
📋 Listes et objets
📌 Action 🧠 Syntaxe 📄 Liste simple - item1- item2📋 Liste inline ports: [80, 443, 8080]🏗️ Objet simple serveur: nom: web-01 port: 80📊 Liste d’objets services:- nom: nginx port: 80
📄 Chaînes multilignes
📌 Action 🧠 Syntaxe 📝 Préserver sauts de ligne script: | echo "ligne 1" echo "ligne 2"🔄 Une seule ligne description: > Texte long replié sur une ligne
🔥 Exemples concrets
🐳 Docker Compose
services :
web :
image : nginx:alpine
ports :
- " 80:80 "
environment :
- ENV=production
db :
image : postgres:15
environment :
POSTGRES_DB : myapp
POSTGRES_PASSWORD : password
🤖 Ansible
---
- name : Installer nginx
hosts : webservers
become : yes
tasks :
- name : Installation nginx
apt :
name : nginx
state : present
- name : Démarrer nginx
service :
name : nginx
state : started
🔄 GitHub Actions
name : CI Pipeline
on :
push :
branches : [ main ]
jobs :
build :
runs-on : ubuntu-latest
steps :
- uses : actions/checkout@v3
- name : Run tests
run : npm test
- name : Build
run : npm run build
⚠️ Règles importantes
Indentation
2 espaces par niveau (pas de tabs !)
Même niveau = même indentation
Très strict sur l’alignement
Erreur fréquente
# ❌ MAUVAIS
web :
server : nginx # Manque indentation
port : 80 # Incohérent
# ✅ BON
web :
server : nginx
port : 80
🛠️ Outils utiles
📌 Outil 🧠 Usage 🔍 yamllint yamllint docker-compose.yml🔄 yq yq '.services.web.image' docker-compose.yml📝 Éditeurs VSCode, Vim avec plugins YAML 🌐 Validateurs online yamllint.com, yamlchecker.com
📋 Checklist YAML
✅ Indentation : 2 espaces, pas de tabs
✅ Structure : logique et cohérente
✅ Validation : tester avant déploiement
✅ Commentaires : expliquer les parties complexes