Déployer une machine virtuelle avec Terraform et Ansible
Le déploiement d’infrastructures est une pratique courante dans le monde du Cloud. Cela peut se faire d’une façon manuelle ou automatisée. Nous allons nous intéresser, dans cet article, à la deuxième façon. Pour ce faire, nous aurons besoin d’un outil très puissant qu’est Terraform, ainsi que de Ansible pour la partie configuration de l’infra.
Qu’est-ce que Terraform ?
![terraform][def2]
- Terraform est un outil sous licence BSL utilisé pour automatiser le déploiement et la gestion d’infrastructures dans le cloud.
- Il permet de décrire l’infrastructure souhaitée dans des fichiers de configuration et de les exécuter pour créer et gérer les ressources nécessaires.
- Il utilise le langage HCL (HashiCorp Configuration Language, à ne pas confondre avec le chlorure d’hydrogen qui lui est un gaz :D ) .
- Il s’agit d’un langage simple et lisible par les humains conçu pour décrire les ressources et configurations de manière déclarative.
Qu’est-ce que Ansible ?
![ansible][def3]
Ansible est un logiciel open source qui, comme Terraform, permet le déploiement d’infrastructures, mais également la gestion et la configuration des applications. Il utilise le YAML (Yet Another Markup Language) pour décrire les tâches à effectuer, ainsi que l’utilisation de playbooks pour l’automatisation des opérations.
Prérequis
Pour notre petite aventure, nous aurons besoin de certains prérequis :
- Une souscription Azure
- Azure CLI
- Terraform
- Ansible
- Homebrew(MacOS)
- Une clé SSH
Installation
1. Terraform
Ici, je vais me concentrer sur une installation avec des packages manager (type Homebrew pour Mac, et Chocolatey pour Windows) car je trouve ça plus facile.
Terraform sur macOS
- Installer le repository de HashiCorp pour Homebrew :
brew tap hashicorp/tap- Puis installer Terraform :
brew install hashicorp/tap/terraform- Pour verifier que l’installation s’est bien déroulée, lancer la commande suivante sur un terminal:
terraform --version# résultatTerraform v1.4.6Terraform sur Linux(Ubuntu)
- Update le system et installer certains composants :
sudo apt-get update && sudo apt-get install -y gnupg software-properties-common- Installer HashiCorp GPG Key :
wget -O- <https://apt.releases.hashicorp.com/gpg> | \ gpg --dearmor | \ sudo tee /usr/share/keyrings/hashicorp-archive-keyring.gpg- Vérifier la GPG Key :
gpg --no-default-keyring \ --keyring /usr/share/keyrings/hashicorp-archive-keyring.gpg \ --fingerprint- Ajouter le repository de HashiCorp au système :
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- Et enfin installer terraform :
sudo apt update && apt install terraformPour d’autres types d’installations, je vous conseille de jeter un coup d’œil à la doc de Terraform
2. Ansible
Ansible sur macOS
- Générer une clé SSH, qui nous sera utile plus tard :
ssh-keygen- passer, Simplement, la commande :
brew install ansible- Vérifier l’installation :
ansible –version# résultatansible [core 2.13.1]Ansible sur Linux (Ubuntu)
- Générer une clé SSH :
ssh-keygen- Installer Ansible :
sudo apt update && apt install ansible- Même verification que pour MacOS :
ansible –version# résultatansible [core 2.13.1]Pour plus d’information, lisez la doc de Ansible
Ansible sur Windows
Hélas, il n’existe pas de Ansible sur Windows, la meilleure solution est donc soit d’utiliser une machine virtuelle sous linux, ou bien celle que je préfère, utiliser WSL 2. Afin de rester cohérent, nous allons aussi installer Terraform avec WSL :
- Ouvrir une commande d’invite autant qu’administrateur, et lancer la commande suivante :
wsl.exe –install- Une fois installé, et après avoir redémarré le système, vous pouvez lancer l’app
Ubuntudepuis le menuDémarrer - Vous voilà devant un terminal Ubuntu, et donc il suffit de faire les mêmes étapes vues plus haut pour l’installation de Terraform et Ansible pour Ubuntu
[def2]: . @/assets/images/blogpics/terraform-ansible/terraform-logo.png [def3]: . @/assets/images/blogpics/terraform-ansible/ansible-logo.jpg