Comparer les révisions

...

4 Révisions

Auteur SHA1 Message Date
Benjamin Boualam 149a50c491 docs: create Configuration/Terraform/Installation 2023-05-17 15:47:37 +00:00
Benjamin Boualam adb95015de docs: create Configuration/Terraform/Introduction 2023-05-17 14:31:08 +00:00
Benjamin Boualam bed3b01807 docs: update Configuration 2023-05-17 13:30:41 +00:00
Benjamin Boualam fbeb13a02d docs: update Configuration 2023-05-17 13:27:12 +00:00
3 fichiers modifiés avec 206 ajouts et 2 suppressions

Voir le fichier

@ -2,7 +2,7 @@
title: Gestionnaire de configuration
description: Comprendre et utiliser un gestionnaire de configuration !
published: true
date: 2021-07-10T19:35:34.412Z
date: 2023-05-17T13:30:39.012Z
tags:
editor: markdown
dateCreated: 2021-05-30T18:04:01.740Z
@ -28,4 +28,19 @@ dateCreated: 2021-05-30T18:04:01.740Z
# DSC
# Terraform
# Terraform
- [ Introduction *Présentation et définitions de cette solution*](/Configuration/Terraform/Introduction)
- [🌀 Installation et configuration *Mettre en place Terraform dans son environnement*](/Configuration/Terraform/Installation)
- [💎 CLI *Comprendre et utiliser les commandes Terraform*](/Configuration/Terraform/CLI)
- [🕹️ Les providers *La force de Terraform*](/Configuration/Terraform/Providers)
- [📜 Déployer ses premières machines avec le provider Proxmox *Provisionner sont infrastructure*](/Configuration/Terraform/Provisioning)
{.links-list}
# Kubespray
- [ Introduction *Présentation et définitions de cette solution*](/Configuration/Kubespray/Introduction)
- [🌀 Installation et configuration *Mettre en place Kubespray dans son environnement*](/Configuration/Kubespray/Installation)
- [💎 Playbook *Comprendre et modifier les playbook*](/Configuration/Kubespray/Playbook)
- [📜 Installer un cluster Kubernetes personnalisé *Provisionner sont infrastructure*](/Configuration/Kubespray/Provisioning)
{.links-list}

Voir le fichier

@ -0,0 +1,132 @@
---
title: Installation
description: Comment installer Terraform sur son environnement
published: true
date: 2023-05-17T15:47:34.634Z
tags: infrastructure as code, hashicorp, iac
editor: markdown
dateCreated: 2023-05-17T15:47:34.634Z
---
![external-content.google.com.png](https://upload.wikimedia.org/wikipedia/commons/thumb/0/04/Terraform_Logo.svg/1280px-Terraform_Logo.svg.png)
# Installation de Terraform et initialisation de son premier répertoire de travail
Avant de pouvoir profiter de ce merveilleux outil, il faut définir sur quel environnement de travail vous souhaitez l'utiliser.
Il existe plusieurs méthodes pour ce faire, je ne vais pas toutes les citer. Ici, il ne s'agira que de son installation sur un environnement Linux Debian/Ubuntu. Pour les autres systèmes, je vous invite à consulter la [documentation officielle](https://developer.hashicorp.com/terraform/tutorials/aws-get-started/install-cli)
# Installation sur une Debian 11
## Installation des paquets préliminaires
```bash
sudo apt-get update && sudo apt-get install -y gnupg software-properties-common
```
## Installation de la clef GPG de Hashicorp
```bash
wget -O- https://apt.releases.hashicorp.com/gpg | \
gpg --dearmor | \
sudo tee /usr/share/keyrings/hashicorp-archive-keyring.gpg
```
### Vérification de la clef de sécurité
```bash
gpg --no-default-keyring \
--keyring /usr/share/keyrings/hashicorp-archive-keyring.gpg \
--fingerprint
/usr/share/keyrings/hashicorp-archive-keyring.gpg
-------------------------------------------------
pub rsa4096 XXXX-XX-XX [SC]
AAAA AAAA AAAA AAAA
uid [ unknown] HashiCorp Security (HashiCorp Package Signing) <security+packaging@hashicorp.com>
sub rsa4096 XXXX-XX-XX [E]
```
### Ajout du repository d'Hashicorp
```bash
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
```
### Installation de Terraform
```bash
sudo apt-get update && sudo apt-get install terraform
```
### Valider l'installation
Une fois l'installation effectuée, nous vérifions que le binaire Terraform est fonctionnel :
```bash
terraform -help
Usage: terraform [-version] [-help] <command> [args]
The available commands for execution are listed below.
The most common, useful commands are shown first, followed by
less common or more advanced commands. If you're just getting
started with Terraform, stick with the common commands. For the
other commands, please read the help and docs before usage.
```
## Initialiser son premier répertoire de travail
Nous allons créer un dossier et l'initialiser avec le provider de notre étude de cas, [Proxmox](https://registry.terraform.io/providers/Telmate/proxmox/latest/docs) :
```bash
mkdir Terraform
touch provider.tf
```
Voici le contenu du fichier "provider.tf"
```hcl
terraform {
required_version = ">=1.0.11"
required_providers {
proxmox = {
source = "Telmate/proxmox"
version = "=2.9.11"
}
}
}
```
> Pour des raisons de compatibilité API, je n'utilise pas la dernière version du provider disponible à l'écriture de cet article (2.9.14)
{.is-info}
Une fois le fichier créé, initialisons le dossier afin qu'il puisse télécharger les composants nécessaires afin de communiquer avec l'API Proxmox :
```bash
terraform init
+ terraform init
Initializing the backend...
Initializing provider plugins...
- Finding telmate/proxmox versions matching "2.9.11"...
- Installing telmate/proxmox v2.9.11...
- Installed telmate/proxmox v2.9.11 (self-signed, key ID A9EBBE091B35AFCE)
Partner and community providers are signed by their developers.
If you'd like to know more about provider signing, you can read about it here:
https://www.terraform.io/docs/cli/plugins/signing.html
Terraform has created a lock file .terraform.lock.hcl to record the provider
selections it made above. Include this file in your version control repository
so that Terraform can guarantee to make the same selections by default when
you run "terraform init" in the future.
Terraform has been successfully initialized!
You may now begin working with Terraform. Try running "terraform plan" to see
any changes that are required for your infrastructure. All Terraform commands
should now work.
If you ever set or change modules or backend configuration for Terraform,
rerun this command to reinitialize your working directory. If you forget, other
commands will detect it and remind you to do so if necessary.
```
# Conclusion
Dans cet article, nous avons installé Terraform sur notre OS de travail, créer et initialiser un dossier avec le provider correspondant à notre étude de cas.
Dans les prochains articles, nous allons rédiger nos fichiers de déploiements de machine afin de pouvoir déployer notre infrastructure.

Voir le fichier

@ -0,0 +1,57 @@
---
title: Introduction
description: Introduction rapide à Terraform de Hashicorp
published: true
date: 2023-05-17T14:31:05.125Z
tags: provisioning, infrastructure as code, hashicorp
editor: markdown
dateCreated: 2023-05-17T14:31:05.125Z
---
![external-content.google.com.png](https://upload.wikimedia.org/wikipedia/commons/thumb/0/04/Terraform_Logo.svg/1280px-Terraform_Logo.svg.png)
# Liens pour Terraform
1. [Page Web](https://www.terraform.io/)
2. [Documentation du projet](https://developer.hashicorp.com/terraform/docs)
3. [Terraform Registry](https://registry.terraform.io/?product_intent=terraform) (Listing de tout les providers)
> Cette page est rédigée par Lucroz94 [mon GitHub personnel](https://github.com/Lucroz94)
La rédaction est inspirée en partie de la formation suivie sur la plateforme [Eazy-Training](https://eazytraining.fr/cours/terraform-les-bases-pour-devops/) réalisée par [Dirane Willy Tafen](https://www.linkedin.com/in/dirane-willy-tafen-254913b5/) ainsi que de mes expériences en entreprise et sur mon projet de homelab.
{.is-info}
# Présentation de la page
Suite à mon suivi de la formation Terraform, j'ai compris le potentiel de cet outil et cela a changé ma vision du provisionnement d'une infrastructure complète.
Terraform se veut relativement simple de prise en main avec une syntaxe très claire, mais peut vite complexifier vos déploiements lorsque vous souhaitez variabiliser le plus possible. "Easy to learn, hard to master".
Il est important de noter que Terraform est plutôt orienté "OPS" tandis que [Pulumi](https://www.pulumi.com/) se veut plutôt orienter "DEV". D'expérience, Pulumi est très minoritaire, je vous invite donc à favoriser l'apprentissage de Terraform pour obtenir les concepts fondamentaux.
Durant les prochains articles, et ce, afin d'avoir des exemples concrets, nous déploierons des machines Linux Debian 11 afin de permettre par la suite le déploiement d'un cluster Kubernetes avec l'outil [Kubespray](https://kubespray.io/#/)
L'idée derrière cette page est de vous expliquer, de manière synthétique et avec un cas concret, quelles sont certaines possibilités que peut offrir Terraform.
Si le sujet vous intéresse, vous pouvez toujours fouiller la documentation qui est très bien rédigée, suivre une formation gratuite et ensuite en acheter une afin d'explorer plus en profondeur.
Mais tout d'abord, présentons l'outil du jour, Terraform !
# Qu'est-ce que Terraform de Hashicorp ?
Tout d'abord, qu'est-ce que nous dit Internet ?
> HashiCorp Terraform is an infrastructure as code tool that lets you define both cloud and on-prem resources in human-readable configuration files that you can version, reuse, and share. You can then use a consistent workflow to provision and manage all of your infrastructure throughout its lifecycle. Terraform can manage low-level components like compute, storage, and networking resources, as well as high-level components like DNS entries and SaaS features.
>
**Une brève traduction en Français :**
> HashiCorp Terraform est un outil d'infrastructure as code qui vous permet de définir à la fois des ressources Cloud et OnPremise dans des fichiers de configuration lisibles, que vous pouvez versionner, réutiliser et partager. Vous pouvez ensuite utiliser un flux de travail cohérent pour provisionner et gérer l'ensemble de votre infrastructure tout au long de son cycle de vie. Terraform peut gérer des composants de bas niveau tels que le calcul, le stockage et les ressources réseau, ainsi que des composants de haut niveau tels que les entrées DNS et les fonctionnalités SaaS.
Désormais, avec de simples fichiers en HCL (si vous utilisez d'autres outils d'Hashicorp, vous ne serez pas perdu.), il est possible de déployer, modifier à chaud certains éléments et détruire un environnement complet de machines en un claquement de doigts. Le gain de temps et de granularité que permet cet outil devient une composante essentielle pour le déploiement d'infrastructure. De plus, il se marie parfaitement avec des pipelines de CI/CD permettant d'automatiser encore plus le déploiement et, par exemple, faciliter la QA de vos applications.
La très grande force de Terraform sont ses providers (À l'écriture de l'article : 3 182 providers, 13 433 modules), lui permettant d'être agnostique quant à l'infrastructure cible, dont je détaillerai l'importance plus tard.
## Conclusion :
Pour faire une petite comparaison avec Docker, Terraform est le comportement d'un Docker-compose, mais pour l'entièreté de vos machines virtuelles ! Vous pouvez ainsi, via la création d'un ou plusieurs fichiers Terraform, déclarer tout votre environnement virtuelles des couches les plus basses (combien de CPU/RAM, network, disques à partager...) jusqu'aux couches plus hautes. (VPC/déclarations de policies IAM AWS...)
Maintenant, allons un peu plus en détail concernant la force principale de Terraform : les providers.