Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
terraform_proxmox [2022/12/02 11:18] – [Installation de Terraform] ps | terraform_proxmox [2023/12/23 18:11] (Version actuelle) – [1 - init] ps | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
====== Terraform & Proxmox ====== | ====== Terraform & Proxmox ====== | ||
- | Le 2022-12-02 | + | Le 2023-12-07 |
===== Avant-Propos ===== | ===== Avant-Propos ===== | ||
**Terraform** est un outil IAC (Infrastructure As Code) développé par Hashicorps. | **Terraform** est un outil IAC (Infrastructure As Code) développé par Hashicorps. | ||
- | Il permet grâce à une syntaxe déclarative relativement simple de créer une infrastructure dans le cloud ou en on premise. Terraform dispose de nombreux fournisseurs (providers) adaptés aux principaux environnements du marché (kubernetes, | + | Il permet grâce à une syntaxe déclarative relativement simple de créer une infrastructure dans le //cloud// ou en //on-premise//. Terraform dispose de nombreux fournisseurs (providers) adaptés aux principaux environnements du marché (kubernetes, |
Il est habituellement utilisé pour créer des VM ensuite configurées par des **playbooks** **Ansible** | Il est habituellement utilisé pour créer des VM ensuite configurées par des **playbooks** **Ansible** | ||
Ligne 11: | Ligne 11: | ||
===== Installation de Terraform ===== | ===== Installation de Terraform ===== | ||
- | Sur une Debian | + | Sur une Debian |
<code bash> | <code bash> | ||
sudo apt install software-properties-common | sudo apt install software-properties-common | ||
Ligne 20: | Ligne 20: | ||
... | ... | ||
terraform --version | terraform --version | ||
- | Terraform v1.3.5 | + | Terraform v1.6.5 |
on linux_amd64 | on linux_amd64 | ||
</ | </ | ||
- | ===== Mise en oeuvre de Terraform avec le provider Proxmox ===== | + | ===== Mise en oeuvre de Terraform avec le provider |
L' | L' | ||
- | 3 étapes : **init**, **plan**, **apply** | + | 4 étapes : **init**, **plan**, **apply**, **destroy** |
+ | |||
+ | {{: | ||
Les commandes de base **Terraform** : | Les commandes de base **Terraform** : | ||
Ligne 35: | Ligne 37: | ||
* **plan** : montre les changements requis par la configuration | * **plan** : montre les changements requis par la configuration | ||
* **apply** : crée ou met à jour l' | * **apply** : crée ou met à jour l' | ||
- | * **destroy** : Destroy previously-created | + | * **destroy** : détruit l'infrastructure |
==== 1 - init ==== | ==== 1 - init ==== | ||
Ligne 44: | Ligne 46: | ||
</ | </ | ||
- | le fichier **main.tf** (minimal) | + | le fichier **provider.tf** (minimal) - On utilise ici le provider Telmate/ |
<code terraform> | <code terraform> | ||
terraform { | terraform { | ||
Ligne 50: | Ligne 52: | ||
proxmox = { | proxmox = { | ||
source = " | source = " | ||
- | version = "2.9.11" | + | version = "2.9.14" |
} | } | ||
} | } | ||
Ligne 87: | Ligne 89: | ||
</ | </ | ||
- | ==== 2 - Plan ==== | + | ==== 2 - Validate |
- | le fichier **main.yml** | + | le fichier **main.tf** |
<code terraform> | <code terraform> | ||
provider " | provider " | ||
Ligne 107: | Ligne 109: | ||
memory | memory | ||
- | ipconfig0 = " | + | ipconfig0 = " |
- | ssh_user | + | ssh_user |
sshkeys = <<EOF | sshkeys = <<EOF | ||
ssh-rsa somekey user@host | ssh-rsa somekey user@host | ||
- | EOF:x | + | EOF |
network { | network { | ||
# id = 0 | # id = 0 | ||
model = " | model = " | ||
- | bridge = " | + | bridge = " |
} | } | ||
Ligne 129: | Ligne 131: | ||
} | } | ||
} | } | ||
+ | </ | ||
+ | |||
+ | Pour valider la configuration du fichier: | ||
+ | <code bash> | ||
+ | terraform validate | ||
+ | </ | ||
+ | |||
+ | Pour afficher les changements qui seront réalisés : | ||
+ | <code bash> | ||
+ | terraform plan | ||
+ | </ | ||
+ | |||
+ | ==== 3. Apply ==== | ||
+ | |||
+ | Pour lancer : | ||
+ | <code bash> | ||
+ | terraform apply | ||
</ | </ |