Cet article est une vue générale sur ce qu’est Terraform.

Il ne peut évidemment pas être complet, des formations de plusieurs jours existent sur ce sujet.

Présentation

Infra as code

L’infrastructure as code est une méthode permettant d’automatiser le déploiement d’une infrastructure en la codant comme on code la partie logicielle de l’application.

Le code va décrire l’infrastructure cible puis en exécutant ce code, l’infrastructure sera déployée.

Ce principe est souvent utilisé dans le monde de la virtualisation, des containers, du cloud, du Devops.

Les technos/langages d’IaC les plus connus sont :

Provisioning

Il faut distinguer les outils d’IaC des outils de provisioning (Ansible, Chef, Puppet, …) même si les deux peuvent se confondre.

Le provisioning permet de configurer et d’installer les systèmes d’exploitation et les logiciels.

Les deux se combinent facilement pour avoir un déploiement d’application complètement automatisé de la couche infrastructure à la couche applicative.

Providers

Terraform permet de coder l’infrastructure de différentes cibles (providers).

Parmi les providers les plus habituels, il y a :

  • les hébergeurs comme AWS, GCP, Azure, OVH, Alibaba, …
  • les plateformes (PaaS), ochestrateurs, gestionnaires de conteneurs : Kubernetes, Docker, Nomad, …
  • les infrastructures (IaaS), gestionnaires de VMs : VSphere, KVM, Proxmox, …
  • les logiciels et middlewares (SaaS) : Redis, ELK, Gitlab, la liste est longue.

Installation

L’installation de Terraform est bien documentée par Hashicorp, pas besoin d’en dire plus.

https://developer.hashicorp.com/terraform/install

Préparation

Créer un répertoire et en faire un dépôt Git pour bénéficier du versionning et de la synchronisation notamment.

mkdir monprojet && cd monprojet && git init

Ajouter un fichier .gitignore pour éviter de versionner des fichiers inutiles :

cat <<EOF > .gitignore
**/.terraform/*
# .tfstate files
*.tfstate
*.tfstate.*
crash.log
crash.*.log
*.tfvars
*.tfvars.json
override.tf
override.tf.json
*_override.tf
*_override.tf.json
.terraformrc
terraform.rc
EOF

Configuration d’un provider (GCP)

Comme dit plus haut, Terraform utilise des providers.

Vous allez voir ici un exemple avec GCP.

En ce qui me concerne, la partie authentification se fait avec la CLI gcloud.

Je vous renvoie aussi vers la doc officielle de Google.

Une fois installé, on peut lancer une authentification avec :

gcloud init

Dans notre répertoire Terraform, on va créer un premier fichier indiquant le provider et la région :

# provider.tf
provider "google" {
    project     = "mon-projet"
    region      = "europe-west9"
    zone        = "europe-west9-a"
}

Enfin on initialise Terraform :

terraform init

Voilà, vous êtes prêts à créer une infra sur GCP avec Terraform.