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