commit 4bb85f7606db3d3d86a5c945b7b84aa96b4d3d35f48c7486099220c21816a7ee Author: LathanDevers Date: Thu Aug 13 10:18:07 2026 +0200 first commit diff --git a/ansible/ReadMe.md b/ansible/ReadMe.md new file mode 100644 index 0000000..473a0f4 diff --git a/ansible/site.yml b/ansible/site.yml new file mode 100644 index 0000000..56af030 --- /dev/null +++ b/ansible/site.yml @@ -0,0 +1,7 @@ +- hosts: all + become: true + roles: + - role: common_hardening # Désactivation root SSH, UFW, Fail2ban + - role: wireguard_mesh # Tunnels chiffrés Zero-Trust + - role: docker_engine # Moteur de conteneurisation + - role: traefik_ingress # Reverse proxy dynamique \ No newline at end of file diff --git a/opentofu/ReadMe.md b/opentofu/ReadMe.md new file mode 100644 index 0000000..8656892 --- /dev/null +++ b/opentofu/ReadMe.md @@ -0,0 +1,44 @@ +OpenTofu est le fork 100 % open-source de Terraform (licence MPL 2.0, sous la *Linux Foundation*) servant de moteur de provisionnement d'infrastructure par code (IaC) pour la stack Aegis. Il conserve la même syntaxe (HCL), les mêmes commandes et la même compatibilité avec les *providers* du marché que Terraform, sans aucune contrainte de licence commerciale. + +**Rôle dans la Stack Aegis** + +* **Provisionnement IaaS** : Déclare et instancie de manière automatisée les machines virtuelles, conteneurs et ressources réseau sur Proxmox VE ou auprès du datacenter belge. +* **Gestion d'État (State Management)** : Stocke le fichier d'état (`.tfstate`) de manière centralisée, chiffrée et isolée dans un bucket S3 souverain pour chaque PME cliente. +* **Garantie Open Source** : Assure que le socle d'Aegis reste totalement libre de droits, auditable et aligné avec la promesse de souveraineté. + +**Exemple de Configuration (`opentofu/main.tf`)** + +```hcl +terraform { + required_providers { + proxmox = { + source = "telmate/proxmox" + version = "2.9.14" + } + } + backend "s3" { + bucket = "aegis-tfstate-souverain" + key = "clients/client-01.tfstate" + } +} + +resource "proxmox_vm_qemu" "client_node" { + name = var.client_name + target_node = "pve-belgium-01" + clone = "debian-12-template" + cores = 2 + memory = 4096 + + network { + model = "virtio" + bridge = "vmbr1" + } +} + +``` + +**Commandes Clés du Pipeline** + +* **`tofu init`** : Initialise le backend distant S3 et télécharge les *providers* nécessaires. +* **`tofu plan`** : Calcule le différentiel et affiche la séquence exacte des modifications d'infrastructure. +* **`tofu apply`** : Exécute le provisionnement de l'instance virtuelle avant le passage des playbooks Ansible. \ No newline at end of file diff --git a/opentofu/main.tf b/opentofu/main.tf new file mode 100644 index 0000000..047108b --- /dev/null +++ b/opentofu/main.tf @@ -0,0 +1,35 @@ +resource "proxmox_vm_qemu" "client_node" { + name = var.client_name + target_node = "pve-belgium-01" + clone = "debian-12-template" + agent = 1 + os_type = "cloud-init" + cores = var.vm_cores + memory = var.vm_memory + scsihw = "virtio-scsi-pci" + bootdisk = "scsi0" + + disks { + scsi { + scsi0 { + disk { + size = "50G" + storage = "local-lvm" + } + } + } + } + + network { + model = "virtio" + bridge = "vmbr1" + tag = var.vlan_tag # Isolation stricte du trafic du client + } + + # Configuration Cloud-Init (Injection de l'utilisateur Ansible et de la clé SSH) + ipconfig0 = "ip=dhcp" + ciuser = "ansible_admin" + sshkeys = <