Prise en main : Terraform et la gestion du multi-cloud
Terraform permet de configurer le provisioning de ressources sur plusieurs plateformes cloud. Une traduction du multi-cloud et de l’infrastructure as code.
Une stratégie multi-cloud est un vrai casse-tête les équipes IT. S’il existe bien des outils de gestion open source capables d’entrer dans ce domaine, tels que Puppet, Chef et Ansible, l’outil qui apportera cette capacité de déploiement de services vers plusieurs fournisseurs à partir d'un seul point d'entrée est d’une grande aide.
Développé par HashiCorp, Terraform est une solution open source d’infrastructure as code (IaC) qui créé un workflow unique qui permet certes de modifier, de façon prévisible et reproductible, une infrastructure, mais de pouvoir le faire à travers plusieurs fournisseurs de cloud. Cet outil simplifie le déploiement des services sur plusieurs plateformes, ainsi que la gestion des VM et des dépendances. Cette approche d’infrastructure as code permet également de partager, réutiliser, déployer et annuler toute modification – comme cela est possible avec des outils de CI/CD et de versioning finalement.
Au commencement
Le code ci-dessous est un fichier de configuration Terraform qui provisionne à la fois une instance sur EC2 et une application Google App Engine.
provider "aws" {
access_key = "ACCESS_KEY_HERE"
secret_key = "SECRET_KEY_HERE"
region = "us-east-1"
}
provider "google" {
credentials = "${file("account.json")}"
project = "my-project-id"
region = "us-central1"
}
resource "aws_instance" "example" {
ami = "ami-123456789"
instance_type = "t2.micro"
}
resource "google_project" "my_project" {
name = "My Project"
project_id = "your-project-id"
org_id = "1234567"
}
resource "google_app_engine_application" "app" {
project = "${google_project.my_project.project_id}"
location_id = "us-central'
}
La configuration ci-dessus définit deux fournisseurs et trois ressources. Dans Terraform, un fournisseur est un service qui interagit avec une API spécifique - dans cet exemple, AWS et Google Cloud Platform (GCP). Si l'utilisation la plus intuitive consiste à configurer une ou plusieurs plateformes de cloud, il est également possible d’y associer un certain nombre d'autres ressources, telles que les pilotes de base de données, le réseau et les systèmes de contrôle de version.
Après avoir défini un fournisseur, il est nécessaire de déclarer des ressources. Dans l'exemple ci-dessus, trois ressources sont définies : une instance AWS EC2, un projet GCP et une application Google App Engine. Les ressources sont tous les outils ou services, tels que le stockage, les bases de données ou le calcul, proposés par une plateforme cloud. Cependant, une ressource pourrait aussi définir un fichier local ou même des générateurs de données aléatoires.
S'adapter au changement
Terraform reste un outil dynamique car il sait s’adapter aux changements d’exigences dans le temps. Cette fonctionnalité permet aux administrateurs d'appliquer des modifications au fichier de configuration sans doubler la quantité de travail pour chaque infrastructure. Dans l’exemple suivant, le fichier de configuration connait des modifications de ressources :
provider "aws" {
access_key = "ACCESS_KEY_HERE"
secret_key = "SECRET_KEY_HERE"
region = "us-east-1"
}
resource "aws_instance" "example" {
ami = "ami-123456789"
instance_type = "t2.micro"
}
Lors de l’ajout ou de la suppression de ressources, Terraform identifie ces changements et met à jour l’infrastructure en conséquence. Comme Terraform conserve l'état précédent de tout fichier, l’outil sait supprimer les ressources GCP précédemment provisionnées sans tenter de reprovisionner les ressources AWS.
Défis à relever
L'un des plus grands avantages de Terraform est également son plus grand risque. Parce qu'il est assez facile à utiliser, les coûts peuvent grimper rapidement. Avec une seule commande, un utilisateur peut appliquer n'importe quel fichier de configuration - ce qui peut entraîner le déploiement de dizaines de ressources vers un grand nombre de fournisseurs de cloud. Si Terraform demande de confirmer ses choix, des incidents peuvent toutefois survenir.