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>
This commit is contained in:
Adam Belkacemi 2026-09-16 22:11:31 +02:00
parent 5dbd3b96f6
commit 2fa16083c3
17 changed files with 427 additions and 1 deletions

40
tofu/README.md Normal file
View file

@ -0,0 +1,40 @@
# 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 :
```bash
export HCLOUD_TOKEN=...
export OVH_ENDPOINT=ovh-eu
export OVH_APPLICATION_KEY=...
export OVH_APPLICATION_SECRET=...
export OVH_CONSUMER_KEY=...
```
## Lancer
```bash
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.