1-02 Lancer une première recette Terraform
Objectifs
- Avoir une vue globale du fonctionnement de Terraform
Le dépôt git "fil rouge"
Un dépôt va vous fournir des exemples tout au long de la formation.
Accès au compte AMAZON AWS
Votre poste a été pré-configuré pour que l'utilitaire AWS trouve le fichier de configuration ad hoc.
$ cat ~/.aws/credentials
[default]
aws_access_key_id = <AWS_ACCESS_KEY_ID>
aws_secret_access_key = <AWS_SECRET_ACCESS_KEY>
On peut également utiliser des variables d'environnement pour s'identifier.
$ export AWS_ACCESS_KEY_ID=(your access key id)
$ export AWS_SECRET_ACCESS_KEY=(your secret access key)
Lancement du projet
Pour démontrer la capacité de Terraform à fonctionner sans connaissance, on va exécuter le projet.
$ git clone https://github.com/Uptime-Formation/terraform-code-projects
$ cd terraform-code-projects
$ cd <PROJET>
$ terraform init
$ terraform apply
Observons ce qui se passe !
Synthèse des grandes parties
- Existence d'un projet commun : J2
- Structuration du projet : J2
- Définition de la recette : J1
- Initialisation du projet : J1
- Planification : J1
- Passage de secrets : J2
- Utilisation de données entre modules : J2
- Stockage d'un état : J1
- Cycle de vie : J1
Terraform en résumé
Terraform est un outil open source créé par HashiCorp et écrit dans le langage de programmation Go.
Vous pouvez utiliser ce binaire pour déployer une infrastructure à partir de votre ordinateur portable ou d'un serveur de build ou à peu près n'importe quel autre ordinateur, et vous n'avez pas besoin d'exécuter une infrastructure supplémentaire pour y arriver.
En effet, sous le capot, le binaire terraform effectue des appels d'API en votre nom à un ou plusieurs fournisseurs, tels qu'AWS, Azure, Google Cloud, DigitalOcean, OpenStack, etc.
Cela signifie que Terraform peut tirer parti de l'infrastructure que ces fournisseurs utilisent déjà pour leurs serveurs d'API, ainsi que des mécanismes d'authentification que vous utilisez déjà avec ces fournisseurs (par exemple, les clés API que vous possédez déjà pour AWS).
Comment Terraform sait-il quels appels d'API à effectuer ?
La réponse est que vous créez des configurations Terraform, qui sont des fichiers texte qui spécifient l'infrastructure que vous souhaitez créer.
Ces configurations sont le « code » dans « l'infrastructure en tant que code ». Voici un exemple de configuration Terraform :
resource "aws_instance" "example" {
ami = "ami-0fb653ca2d3203ac1"
instance_type = "t2.micro"
}
resource "google_dns_record_set" "a" {
name = "demo.google-example.com"
managed_zone = "example-zone"
type = "A"
ttl = 300
rrdatas = [aws_instance.example.public_ip]
}
Cet extrait demande à Terraform d'effectuer des appels d'API vers AWS pour déployer un serveur, puis d'effectuer des appels d'API vers Google Cloud pour créer une entrée DNS (Domain Name System) pointant vers l'adresse IP du serveur AWS.
Terraform vous permet de déployer des ressources interconnectées sur plusieurs fournisseurs de cloud.
Vous pouvez définir l'ensemble de votre infrastructure (serveurs, bases de données, équilibreurs de charge, topologie du réseau, etc.) dans les fichiers de configuration Terraform et valider ces fichiers dans le contrôle de version.
Vous exécutez ensuite certaines commandes Terraform, telles que terraform apply, pour déployer cette infrastructure.
Le binaire terraform analyse votre code, le traduit en une série d'appels d'API aux fournisseurs de cloud spécifiés dans le code et effectue ces appels d'API aussi efficacement que possible en votre nom.
Rappel des objectifs
- Avoir une vue globale du fonctionnement de Terraform