Quand la réactivité et la montée en charge comptent, automatiser l'infrastructure et le déploiement web rend les livraisons fiables et reproductibles. Ce guide couvre le provisionnement, la configuration, la sécurité et l'intégration continue.
Plan de l'article
- Prérequis et architecture cible
- Provisionnement et validation avec Terraform
- Configuration des serveurs avec Ansible
- Déploiement continu et tests idempotents
- Backend, outputs et inventaire dynamique
- Sécurisation des secrets
- CI/CD complet (validate + deploy)
- Supervision et monitoring
- Conclusion
Prérequis et architecture cible
Avant de débuter :
- Compte cloud (AWS, Azure ou GCP) avec droits d'administration
- Terraform installé (version ≥ 1.0)
- Ansible installé (version ≥ 2.9)
- Clé SSH configurée pour accès serveur
Astuce : Stockez vos clés sensibles dans un coffre-fort (Vault, Sealed Secrets) et ne les partagez pas en clair.
Provisionnement et validation avec Terraform
Initialisation du projet
mkdir infra && cd infra
terraform init
Plan et application
terraform plan -out=tfplan
terraform apply tfplan
Attention : Toujours valider le plan avant d'appliquer pour éviter les changements imprévus.
Configuration du backend distant
terraform {
backend "s3" {
bucket = "mon-etat-terraform"
key = "infra/terraform.tfstate"
region = "eu-west-1"
}
}
Configuration des serveurs avec Ansible
Inventaire dynamique depuis Terraform
plugin: aws_ec2
regions:
- eu-west-1
filters:
tag:Role: web
Playbook de configuration
# site.yml
- hosts: web
become: true
roles:
- role: nginx
- role: nodejs
Astuce : Utilisez ansible-playbook --check --diff pour un run en mode test.
Déploiement continu et tests idempotents
Intégrez Ansible à votre pipeline CI/CD :
stages:
- validate
- deploy
validate:
script:
- terraform init
- terraform validate
- ansible-playbook -i inventory.ini site.yml --check --diff
deploy:
stage: deploy
script:
- terraform apply -auto-approve
- ansible-playbook -i inventory.ini site.yml
Backend, outputs et inventaire dynamique
Outputs Terraform
output "web_ips" {
value = aws_instance.web[*].public_ip
}
Ces outputs alimentent votre inventaire dynamique.
Sécurisation des secrets
Chiffrez vos variables sensibles avec ansible-vault :
ansible-vault encrypt group_vars/all/vault.yml
CI/CD complet (validate + deploy)
Le job CI complet vérifie l'intégrité du code et automatise la chaîne de bout en bout.
Supervision et monitoring
Installez et configurez un exporter Node Exporter :
- name: Installer node_exporter
ansible.builtin.apt:
name: prometheus-node-exporter
state: present
Configurez Prometheus pour scrapper les métriques des serveurs.
Conclusion
Terraform et Ansible couplés à la validation, au backend distant, à l'inventaire dynamique et à un CI/CD complet donnent une infrastructure as code reproductible, dont chaque changement reste tracé et chiffré côté secrets.


