Homelab/terraform/pve3/main.tf
Tellsanguis 351183e52e
All checks were successful
CI - Validation / Terraform Validation (push) Successful in 12s
CI - Validation / Ansible Validation (push) Successful in 1m2s
CI - Validation / Kubernetes Validation (push) Successful in 6s
CI - Validation / Security Scan (push) Successful in 13s
feat: Automatisation gestion ressources LINSTOR et améliorations VMs
- Ajout script Python (v1.0) pour gestion automatique des ressources LINSTOR
  * Vérifie et crée les ressources si nécessaires
  * Redimensionne les volumes (augmentation uniquement)
  * Lecture automatique depuis fichiers Terraform
  * Opérations idempotentes

- Intégration dans pipeline CI/CD pour pve1 et pve2
  * Copie et exécution du script sur chaque noeud
  * Lecture dynamique de la config Terraform

- Améliorations configuration Terraform pour toutes les VMs
  * Ajout Standard VGA (résout "No Bootable Device")
  * Configuration CPU type "host" pour meilleures performances
  * BIOS et boot order explicites
  * Gestion VMs existantes (force_create approprié)
  * Lifecycle simplifié pour permettre mises à jour

Auteur script: BENE Maël
2025-11-27 12:31:26 +01:00

79 lines
1.6 KiB
HCL

terraform {
required_version = ">= 1.6.0"
required_providers {
proxmox = {
source = "telmate/proxmox"
version = "3.0.2-rc05"
}
local = {
source = "hashicorp/local"
version = "~> 2.1"
}
}
}
provider "proxmox" {
pm_api_url = var.proxmox_api_url
pm_api_token_id = var.proxmox_token_id
pm_api_token_secret = var.proxmox_token_secret
pm_tls_insecure = var.proxmox_tls_insecure
}
# etcd Witness VM on thinkpad
resource "proxmox_vm_qemu" "etcd_witness" {
vmid = 1002
name = "etcd-witness"
target_node = "thinkpad"
clone = var.ubuntu_template
full_clone = true
# Gère les VMs existantes - force recréation si VM existe déjà
force_create = true
cpu {
cores = var.etcd_witness_config.cores
sockets = 1
type = "host"
}
memory = var.etcd_witness_config.memory
agent = 1
bios = "seabios"
boot = "order=scsi0"
# Utilise Standard VGA pour la compatibilité
vga {
type = "std"
}
scsihw = "virtio-scsi-single"
onboot = true
network {
id = 0
model = "virtio"
bridge = var.k3s_network_bridge
}
disk {
slot = "scsi0"
size = var.etcd_witness_config.disk_size
type = "disk"
storage = var.etcd_witness_storage_pool
iothread = true
}
ipconfig0 = "ip=${var.etcd_witness_config.ip},gw=${var.k3s_gateway}"
cicustom = "user=${var.snippets_storage}:snippets/cloud-init-etcd-witness.yaml"
nameserver = join(" ", var.k3s_dns)
lifecycle {
ignore_changes = [
clone
]
}
depends_on = [local_file.etcd_witness_cloud_init]
}