Some checks are pending
verifier / verifier (push) Waiting to run
Quatre machines, zero echec, la forge repond (service actif, ecoute 3000, HTTP 200). forge-01 121 taches, infra-pki-01 109, infra-edge-01 92, infra-dns-01 84. 1. UN TIERS INTERMITTENT ARRETAIT TOUT. `packages.smallstep.com` repond une fois sur deux ; `get_url` abandonne a 10 s sans reprise. Mesure AVANT d'accuser le reseau : DNS resolvait, la poignee TLS aboutissait, 138 Ko depuis deb.debian.org passaient en 0,09 s, et le chemin acceptait 1450 octets en refusant 1500 — l'attendu exact en overlay. Le reseau n'y etait pour rien. Reprises posees sur les trois telechargements du chemin critique (serveur_step_ca, client_pki, serveur_forgejo). Une dizaine d'autres restent sans reprise : liste dans le CHANGELOG. 2. UN `register` A ECRASE UN CHEMIN DE FICHIER. En posant la reprise, j'ai enregistre dans `client_pki_cle`, nom que le role utilisait deja pour la cle privee. L'ecart s'est vu 70 taches plus loin : `step ca certificate` recevait un dict serialise a la place du fichier et refusait « too many positional arguments ». Un register ecrit dans l'espace de noms de TOUT le role. 3. LE SSO SE DECLARAIT AU LIEU DE SE DERIVER. `serveur_forgejo_oidc_actif: true` en dur faisait cabler une source OAuth2 vers un Keycloak inexistant. Derive desormais de l'inventaire. Quatrieme manifestation en deux jours de la meme hypothese — le moteur supposait l'ecosysteme COMPLET — apres les intrants (P32), les bases (P35) et les dependances causales. AUCUN de ces defauts n'etait visible sur Chezlepro, qui porte tout et tournait deja. Ils ne pouvaient apparaitre qu'au premier ecosysteme DIFFERENT. make verifier 41 OK, 0 echec, 0 saute ; make test inchange. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
145 lines
5.3 KiB
YAML
145 lines
5.3 KiB
YAML
---
|
|
- name: Exiger les secrets de l'AC (Vault)
|
|
ansible.builtin.assert:
|
|
that:
|
|
- serveur_step_ca_password | length > 0
|
|
- serveur_step_ca_provisioner_password | length > 0
|
|
fail_msg: >-
|
|
serveur_step_ca_password et serveur_step_ca_provisioner_password
|
|
sont requis (a fournir via Ansible Vault).
|
|
|
|
- name: Assurer le repertoire des trousseaux apt
|
|
ansible.builtin.file:
|
|
path: /etc/apt/keyrings
|
|
state: directory
|
|
owner: root
|
|
group: root
|
|
mode: "0755"
|
|
|
|
# Recuperee UNE FOIS. Sans garde, chaque deploiement recontactait le serveur du
|
|
# fournisseur : cinq cles x quatorze hotes = soixante-dix allers-retours externes pour
|
|
# des cles deja installees, et autant d'occasions qu'un tiers lent fasse tomber le
|
|
# deploiement. Arbitrage rendu le 2026-08-09 : une plateforme souveraine ne depend pas
|
|
# de six serveurs etrangers pour redeployer ce qu'elle possede deja.
|
|
#
|
|
# CONSEQUENCE ASSUMEE : une rotation de cle amont n'est plus recuperee toute seule. Elle
|
|
# ne passe pas inapercue pour autant — `apt` refuse alors le depot, bruyamment. Pour
|
|
# forcer le rafraichissement : supprimer le fichier et rejouer le role.
|
|
- name: Cette ressource est-elle deja recuperee ? (Telecharger la cle de signature Sm)
|
|
ansible.builtin.stat:
|
|
path: "{{ serveur_step_ca_depot_cle_fichier }}"
|
|
register: telecharger_la_cle_de_signature_smallste_present
|
|
|
|
- name: Telecharger la cle de signature Smallstep
|
|
# UN SERVEUR TIERS QUI REPOND UNE FOIS SUR DEUX NE DOIT PAS ARRETER UN DEPLOIEMENT DE
|
|
# QUARANTE MINUTES (mesure du 2026-08-23, premier deploiement de patient 0).
|
|
#
|
|
# `packages.smallstep.com` est intermittent : la meme URL pend au premier essai et rend
|
|
# 200 en 0,48 s au second. Le defaut de `get_url` est un delai de 10 secondes et AUCUNE
|
|
# reprise — le socle echouait donc sur la premiere machine, avant meme d'avoir pose le
|
|
# resolveur des autres.
|
|
#
|
|
# Mesure faite avant d'accuser : DNS resolvait, la poignee TLS aboutissait
|
|
# (`Verify return code: 0`), un transfert de 138 Ko depuis deb.debian.org passait en
|
|
# 0,09 s, et le chemin acceptait 1450 octets et refusait 1500 — exactement l'attendu en
|
|
# overlay. Le reseau n'y etait pour rien.
|
|
#
|
|
# Meme idiome que les roles Keycloak et Forgejo devant leurs propres tiers.
|
|
when: not telecharger_la_cle_de_signature_smallste_present.stat.exists
|
|
ansible.builtin.get_url:
|
|
url: "{{ serveur_step_ca_depot_cle_url }}"
|
|
dest: "{{ serveur_step_ca_depot_cle_fichier }}"
|
|
owner: root
|
|
group: root
|
|
mode: "0644"
|
|
timeout: 30
|
|
register: serveur_step_ca_cle
|
|
retries: 5
|
|
delay: 6
|
|
until: serveur_step_ca_cle is succeeded
|
|
|
|
- name: Ajouter le depot apt Smallstep
|
|
ansible.builtin.template:
|
|
src: smallstep.sources.j2
|
|
dest: /etc/apt/sources.list.d/smallstep.sources
|
|
owner: root
|
|
group: root
|
|
mode: "0644"
|
|
|
|
- name: Installer step-ca et step-cli
|
|
when: not ansible_check_mode # dry-run : le depot Smallstep n'est pas reellement ajoute
|
|
ansible.builtin.apt:
|
|
name: "{{ serveur_step_ca_paquets }}"
|
|
state: present
|
|
update_cache: true
|
|
|
|
- name: Creer l'utilisateur systeme step
|
|
ansible.builtin.user:
|
|
name: "{{ serveur_step_ca_utilisateur }}"
|
|
system: true
|
|
home: "{{ serveur_step_ca_steppath }}"
|
|
create_home: false
|
|
shell: /usr/sbin/nologin
|
|
|
|
- name: Creer le repertoire STEPPATH
|
|
ansible.builtin.file:
|
|
path: "{{ serveur_step_ca_steppath }}"
|
|
state: directory
|
|
owner: "{{ serveur_step_ca_utilisateur }}"
|
|
group: "{{ serveur_step_ca_utilisateur }}"
|
|
mode: "0700"
|
|
|
|
- name: Deployer le mot de passe de l'AC
|
|
ansible.builtin.copy:
|
|
content: "{{ serveur_step_ca_password }}"
|
|
dest: "{{ serveur_step_ca_steppath }}/password.txt"
|
|
owner: "{{ serveur_step_ca_utilisateur }}"
|
|
group: "{{ serveur_step_ca_utilisateur }}"
|
|
mode: "0600"
|
|
no_log: true
|
|
notify: Redemarrer step-ca
|
|
|
|
- name: Deployer le mot de passe du provisioner
|
|
ansible.builtin.copy:
|
|
content: "{{ serveur_step_ca_provisioner_password }}"
|
|
dest: "{{ serveur_step_ca_steppath }}/provisioner_password.txt"
|
|
owner: "{{ serveur_step_ca_utilisateur }}"
|
|
group: "{{ serveur_step_ca_utilisateur }}"
|
|
mode: "0600"
|
|
no_log: true
|
|
|
|
- name: Initialiser l'autorite de certification (une seule fois)
|
|
when: not ansible_check_mode # dry-run : le binaire step n'est pas encore installe
|
|
ansible.builtin.command:
|
|
cmd: >-
|
|
step ca init
|
|
--deployment-type standalone
|
|
--name "{{ serveur_step_ca_nom }}"
|
|
--dns "{{ serveur_step_ca_dns }}"
|
|
--address "{{ serveur_step_ca_adresse }}"
|
|
--provisioner "{{ serveur_step_ca_provisioner }}"
|
|
--password-file {{ serveur_step_ca_steppath }}/password.txt
|
|
--provisioner-password-file {{ serveur_step_ca_steppath }}/provisioner_password.txt
|
|
{{ '--acme' if serveur_step_ca_acme | bool else '' }}
|
|
creates: "{{ serveur_step_ca_steppath }}/config/ca.json"
|
|
become: true
|
|
become_user: "{{ serveur_step_ca_utilisateur }}"
|
|
environment:
|
|
STEPPATH: "{{ serveur_step_ca_steppath }}"
|
|
|
|
- name: Deployer l'unite systemd step-ca
|
|
ansible.builtin.template:
|
|
src: step-ca.service.j2
|
|
dest: /etc/systemd/system/step-ca.service
|
|
owner: root
|
|
group: root
|
|
mode: "0644"
|
|
notify: Redemarrer step-ca
|
|
|
|
- name: Activer et demarrer step-ca
|
|
when: not ansible_check_mode
|
|
ansible.builtin.systemd:
|
|
name: "{{ serveur_step_ca_service }}"
|
|
enabled: true
|
|
state: started
|
|
daemon_reload: true
|