Set-OPS-Public/docs/setup.md
Daniel Allaire aab1bcc83a doc : rangee par lecteur, trois portes d'entree (architecture, setup, usage) et un index
README reduit au role du projet et au demarrage rapide. docs/architecture.md (schemas
Mermaid), docs/setup.md, docs/usage.md (154 cibles en 13 familles), docs/README.md (index).
Documents ranges en conception/, exploitation/, hebergement/, projet/ ; 598 chemins suivis.
QUICKSTART.md, SOLUTION.md, architecture-set-ops.md et la carte fondus puis retires.

Preuves : P48 lit l'index et conception/mecanismes.md ; les gardes parcourent docs/ sous-
dossiers compris (_documents) ; usage.md suit le Makefile dans les deux sens.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-15 01:01:54 -04:00

6.4 KiB

Installation et configuration

Pour qui : l'exploitant qui monte son premier écosystème sur une grappe Proxmox. Le résumé est dans le README ; ce document donne chaque étape, ses fichiers et ses pièges. Préparer le matériel d'un hébergeur est un autre parcours : hebergement/preparer-un-site-hebergeur.md.

Prérequis

Quoi Détail
Grappe Proxmox droits d'administration, API joignable depuis le poste
Jeton d'API Proxmox utilisateur ansible@pve ou équivalent
Poste de pilotage Linux, Python 3, Ansible, make, git ; node optionnel (garde JS du GUI)
Paire de clés SSH la publique est injectée dans les VM par cloud-init
Phrase de passe de voûte une par écosystème

1. Cloner le moteur

git clone <url-de-Set-OPS> Set-OPS && cd Set-OPS

2. Créer l'instance

Une instance est un dépôt frère du moteur, créé depuis un modèle. Le dépôt public fournit socle : PKI (step-ca), DNS interne (PowerDNS), edge TLS (nginx), magasin de courriel (Dovecot). Les modèles assemblés par offre sont dans le dépôt privé Set-OPS-modeles (SETOPS_MODELES les rend visibles).

make instance-modeles                          # modèles disponibles
make instance-creer NOM=OPS-MonOrg MODELE=socle   # crée ../OPS-MonOrg ; INDEX=<n> fixe le seed
ln -s ../OPS-MonOrg instance                   # l'instance active (ou : make instance-utiliser NOM=OPS-MonOrg)
make instances                                 # écosystèmes découverts, collisions d'index

instance-creer refuse un index déjà pris par un écosystème voisin : tout l'adressage en dérive. Il ne bascule pas le lien instance/ et ne fait pas git init.

3. Renseigner l'instance

<inventaire> est principal ou, à défaut, production (le nom que porte le modèle).

Fichier Valeur
instance/inventories/<inventaire>/group_vars/all/10-intrants.yml domaine_interne (ex. monorg.internal)
instance/plan/nomenclature.yml index (seed) et supernet
instance/plan/domaines.yml domaine public, autorite, edge
instance/plan/serveurs.yml placement Proxmox : nœud, stockage, disque, mémoire, cœurs

Le GUI (make inventaire-ui) édite les mêmes registres. Valeurs communes : conception/intrants-communs.md.

4. Proxmox

make config      # API, nœud, stockage, VMID et nom du gabarit

Chaque paramètre : exploitation/config-proxmox.md. Les identifiants Proxmox appartiennent à l'hébergeur : ils vivent dans sa voûte (celle de l'underlay), pas dans celle du locataire.

5. Voûtes et clés

Une voûte par dépôt, chiffrée par ansible-vault, depuis le gabarit exemples/vault.exemple.yml : instance/inventories/<inventaire>/group_vars/all/vault.yml.

Une clé par voûte, dans un fichier nommé d'après le dossier de l'écosystème, en minuscules :

install -m 600 /dev/null ~/.config/setops-vault-ops-monorg
$EDITOR ~/.config/setops-vault-ops-monorg      # la phrase de passe, une ligne
python3 scripts/voutes.py etat                  # le moteur trouve-t-il chaque clé ?

Rien à exporter : le Makefile construit ANSIBLE_VAULT_IDENTITY_LIST avec scripts/voutes.py. Créer une VM ouvre deux voûtes dans la même exécution (locataire et hébergeur) : un seul ANSIBLE_VAULT_PASSWORD_FILE ne suffit pas.

Les clés n'existent que sur le poste. Les sortir sur un support chiffré : exploitation/sortir-les-cles-du-poste.md.

6. Gabarit Debian 13 (une fois par grappe)

Créer une VM Debian 13 minimale, joignable par SSH avec clé, puis :

make preparer-modele
make verifier-modele
make nettoyer-modele CONFIRMER=true

Convertir la VM en gabarit Proxmox sous le nom enregistré par make config (proxmox_clone_source_nom, modeleSetOPS par défaut). Un autre nom fait échouer le clonage. Machine q35/OVMF : ne jamais convertir depuis i440fx.

Procédure : exploitation/procedure-template-debian13-proxmox.md ; contenu justifié : exploitation/gabarit-debian13-justification.md.

7. Générer l'inventaire

make instancier                    # ce que le plan produit, en diff
make instancier-appliquer FORCE=1  # première génération seulement
make serveurs                      # VMID / IP dérivés

Les hôtes naissent en etat: planifie.

8. Créer et déployer

make creer-vm HOTE=infra-dns-01          # clone + cloud-init, attend que la VM réponde
# passer l'hôte en etat: actif dans instance/plan/serveurs.yml, puis :
make instancier-appliquer
make deployer HOTE=infra-dns-01          # couche par couche, dans l'ordre du graphe

Toute la flotte : make flotte-creer CONFIRMER=true puis make deployer-tout CONFIRMER=true, ou make reconstruire CONFIRMER=true (créer puis déployer). Les déploiements ne visent que les hôtes actifs.

9. Vérifier

make inventaire-verifier   # registres, inventaire, gardes
make verifier              # lint, tests, inventaire, ordre, flux, syntaxe, puis les preuves
make valider               # recette sur la flotte déployée

Configuration de référence

Élément Rôle Défaut
instance/ lien vers le dépôt du locataire actif —
underlay.yml lien vers l'underlay du site actif underlay.yml à la racine
ansible.cfg configuration Ansible du moteur dans le dépôt
.ansible/ répertoires temporaires d'Ansible créé par make

Variables d'environnement et de make : usage.md.

Pannes connues au premier montage

Symptôme Cause Remède
Attempting to decrypt but no vault secrets found clé de voûte absente ou mal nommée étape 5, python3 scripts/voutes.py etat
make instancier-appliquer refuse d'écrire diff non vide, première génération FORCE=1 la première fois seulement
le clonage ne trouve pas sa source nom du gabarit ≠ proxmox_clone_source_nom renommer le gabarit ou refaire make config
une sortie d'Ansible vide, sans erreur Ansible exige un tube sur sa sortie set -o pipefail; make … < /dev/null 2>&1 | cat