Mise en place

Dans un environnement Windows, il est possible d’utiliser Terraform de différentes façons. La plus simple est de passer par Azure Cloud Shell, qui ne nécessite pas de prérequis en dehors du compte Azure. Il est également possible de faire une installation manuelle, d’utiliser une image Docker, Chocolatey, ou de passer par Windows Subsystem for Linux (WSL). Cette dernière méthode a pour avantage d’être rapide, performante et de permettre l’utilisation des applications Windows en parallèle des outils en ligne de commande Linux sur le même ensemble de fichiers.

Prérequis

  • Windows 10 versions 2004 et ultérieures

  • VS Code

WSL

Le Sous-système Windows pour Linux permet d’exécuter un environnement GNU/Linux (et notamment la plupart des utilitaires, applications et outils en ligne de commande) directement sur Windows, sans modification et tout en évitant la surcharge d’une machine virtuelle traditionnelle. La version WSL 2 embarque un véritable noyau Linux s’exécutant dans une machine virtuelle légère.

Installation des prérequis et d’une distribution Ubuntu
$ wsl --install
Vérification de l’installation
$ wsl -l -v

La version 2 de WSL est à privilégier car plus performante.

Installer une nouvelle distribution
$ wsl --install -d <distribution>
Assigner la distribution par défaut
$ wsl --set-default <distribution>

A l’issue de l’installation, il faut renseigner les informations du compte utilisateur de la distribution.

Exécuter la distribution par défaut
$ wsl
Il est possible d’accéder rapidement aux fichiers de la distribution WSL courante, en tapant \\wsl$ dans l’explorateur Windows.

Azure CLI

Azure CLI est une interface en ligne de commande multiplateforme permettant de se connecter à Azure et d’exécuter des commandes d’administration sur les ressources Azure. Elle est installée Azure CLI localement. Même si elle est déjà installé sur le poste, il est préférable de faire également l’installation pour l’environnement WSL.

Installation d'Azure CLI pour Ubuntu
$ curl -sL https://aka.ms/InstallAzureCLIDeb | sudo bash

Installer Terraform

Les packages Ubuntu sont disponibles sur les serveurs HashiCorp. Depuis une fenêtre de commande WSL, exécuter les commandes suivantes :

Ajout du repository HashiCorp
$ sudo apt-add-repository "deb [arch=amd64] https://apt.releases.hashicorp.com $(lsb_release -cs) main"
Ajout de la clé HashiCorp
$ curl -fsSL https://apt.releases.hashicorp.com/gpg | sudo apt-key add -
Mise à jour du dépôt de packages
$ sudo apt-get update
Installation de Terraform
$ sudo apt-get install terraform
Vérifier l’installation
$ terraform -v

VS Code

Avec Visual Studio Code installé et depuis une sessions WSL, exécuter la commande code . pour démarrer l’installation de VS Code Server.

En l’absence d’éditeur de code, il est possible d’utiliser l’éditeur en ligne Github en appuyant sur la touche . depuis le repo.

Pour pouvoir développer avec VS Code dans WSL, il faut installer l’extension Remote - WSL. La barre de statut de VS Code indique ensuite en bas à gauche que l’exécution s’effectue dans WSL: WSL : Ubuntu.

L’extension VS Code HashiCorp Terraform n’est pas obligatoire, mais permet d’ajouter des fonctionnalités utiles, telles que : la coloration du code, l’IntelliSense…​

J’ai rencontré des soucis à l’utilisation de l’extension Terraform, il arrivait que le binaire Linux soit remplacé par une exe. Pour éviter cela, il faut installer l’extension via l’option Install in WSL: Ubuntu (Do not sync).

Authentification Azure

Quand Terraform est exécuté localement, il est nécessaire de lui octroyer l’autorisation de manipuler les ressources Azure en s’identifiant.

Se connecter avec Azure CLI
$ az login
Lister les subscriptions disponibles
$ az account list -o table
Spécifier la subscription par défaut
$ az account set --subscription <subscription id>

Quand Terraform s’exécute sur un server d’intégration, l’authentification est réalisé par un Service Principal ou une identité managée.

L’authentification est implicite lorsque l’on utilise le Cloud Shell.

Git

Comme pour tous les types de projets, certains fichiers ne doivent pas être gérés en configuration. Le plus simple est d’utiliser le git ignore proposé.