tripoli.cloud/tofu/README.md
Adam Belkacemi 2fa16083c3 Phase 1 : socle & sécurité (WireGuard, Ansible, OpenTofu)
- Reconnaissance : le serveur héberge déjà 6 autres projets derrière un
  Caddy partagé (80/443) ; tripoli-edge sera un service interne (décision
  prise avec l'utilisateur), pas un second frontal.
- WireGuard : canal admin Mac <-> serveur (10.100.0.0/24, port 58212/udp
  après avoir découvert que 51820 était filtré par le pare-feu Hetzner
  Cloud, distinct de ufw).
- Ansible : rôle base (confirme fail2ban/unattended-upgrades/ufw déjà en
  place, sans toucher aux règles des autres projets) + rôle wireguard
  (clé privée générée sur la cible, jamais stockée dans ce dépôt).
- OpenTofu : serveur Hetzner référencé en data source lecture seule
  (jamais recréé/détruit - serveur partagé et déjà en prod) ; DNS
  tripoli.cloud géré via le provider OVH.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-16 22:11:31 +02:00

1.3 KiB

OpenTofu — serveur & DNS en code

Ce que ça gère

  • data "hcloud_server" : référence en lecture seule le serveur Hetzner existant (tripoli-cloud). Volontairement pas une resource : ce serveur héberge six autres projets en production, et le gérer comme une ressource Tofu ferait courir le risque qu'un apply mal aligné le recrée ou le détruise. Cette IaC documente le serveur, elle ne le pilote pas.
  • ovh_domain_zone_record : les enregistrements A de tripoli.cloud et www.tripoli.cloud, pointés sur l'IP du serveur ci-dessus. Seule la zone tripoli.cloud est touchée — les autres domaines du même compte OVH (lecheminvert.tech, etc.) ne sont pas dans le champ de ce projet.

Identifiants

Aucun token dans ce dépôt ni dans un .tfvars. Les providers lisent directement l'environnement :

export HCLOUD_TOKEN=...
export OVH_ENDPOINT=ovh-eu
export OVH_APPLICATION_KEY=...
export OVH_APPLICATION_SECRET=...
export OVH_CONSUMER_KEY=...

Lancer

tofu init
tofu plan
tofu apply

tofu init et tofu validate ont déjà été exécutés dans cette session (sans toucher à l'infra réelle) pour vérifier la syntaxe. plan/apply nécessitent les identifiants ci-dessus, qui n'ont pas été demandés ni extraits automatiquement.