Si vous gérez plus de 3-4 serveurs, vous devriez utiliser de l'infrastructure as code. Les bénéfices se cumulent : déploiements reproductibles, infra versionnée, changements peer-reviewed, et la capacité de monter des environnements identiques pour staging ou test en minutes.
Installer Terraform
macOS : brew install terraform. Ubuntu/Debian :
wget -O- https://apt.releases.hashicorp.com/gpg | sudo gpg --dearmor -o /usr/share/keyrings/hashicorp-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/hashicorp.list
sudo apt update && sudo apt install terraform
Obtenir un token API
Dans le dashboard FranceVPS : Settings → API Tokens → Create new token. Donnez un nom descriptif et les scopes minimums requis. Copiez le token (affiché une fois). Stockez-le par variable d'environnement :
export FRANCEVPS_TOKEN="fra_..."
Votre première config Terraform
Créez main.tf :
terraform {
required_providers {
francevps = {
source = "francevps/francevps"
version = "~> 1.0"
}
}
}
provider "francevps" {}
resource "francevps_ssh_key" "deploy" {
name = "deploy-key"
public_key = file("~/.ssh/id_ed25519.pub")
}
resource "francevps_vps" "web" {
name = "web-01"
plan = "cloud-hp-2"
image = "ubuntu-24.04"
region = "fr-par-1"
ssh_keys = [francevps_ssh_key.deploy.id]
tags = {
environment = "production"
role = "web"
}
}
output "web_ip" {
value = francevps_vps.web.ipv4_address
}
Initialiser et appliquer
terraform init
terraform plan
terraform apply
Terraform télécharge le provider, plan les changements, applique sur confirmation. ~60 secondes plus tard, vous avez un VPS tournant avec l'IP en sortie.
Au-delà d'un serveur unique
La vraie puissance émerge avec plusieurs ressources. Ajoutons un load balancer devant trois serveurs web :
resource "francevps_vps" "web" {
count = 3
name = "web-${count.index + 1}"
plan = "cloud-hp-2"
image = "ubuntu-24.04"
region = "fr-par-1"
ssh_keys = [francevps_ssh_key.deploy.id]
}
resource "francevps_load_balancer" "main" {
name = "web-lb"
region = "fr-par-1"
algorithm = "round_robin"
forwarding_rule {
entry_protocol = "https"
entry_port = 443
target_protocol = "http"
target_port = 8080
certificate = francevps_certificate.main.id
}
health_check {
protocol = "http"
port = 8080
path = "/health"
interval = 30
}
targets = francevps_vps.web[*].id
}
Déploiement multi-régions
Ajoutez un miroir Marseille :
resource "francevps_vps" "web_mrs" {
count = 2
name = "web-mrs-${count.index + 1}"
plan = "cloud-hp-2"
image = "ubuntu-24.04"
region = "fr-mrs-1"
ssh_keys = [francevps_ssh_key.deploy.id]
}
Maintenant 5 VPS sur 2 régions. Combinez avec réplication DB cross-région et failover DNS, et vous avez du Tier 2 DR en code.
Modules pour la réutilisabilité
À mesure que votre infra grandit, copy-paste devient un handicap. Les modules vous laissent définir un pattern "tier web" une fois et l'instancier plusieurs fois.
Gestion d'état
Terraform suit l'état déployé dans un fichier d'état. Par défaut local, mais pour le travail d'équipe, stockez à distance via S3-compatible avec versioning activé.
Et après
- Ajoutez user_data pour bootstrap cloud-init
- Utilisez la data source
cloudinit_config - Ajoutez monitoring via
francevps_alert - Intégrez avec CI — Terraform Cloud, Atlantis, ou GitHub Actions
L'objectif : "changements d'infrastructure" deviennent commits git, reviewed via pull request, appliqués par CI.