<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="fr">
	<id>https://mediawiki.ajlsm.com/index.php?action=history&amp;feed=atom&amp;title=AJLSM-DEPLOY_%E2%80%94_Version_1.0.2</id>
	<title>AJLSM-DEPLOY — Version 1.0.2 - Historique des versions</title>
	<link rel="self" type="application/atom+xml" href="https://mediawiki.ajlsm.com/index.php?action=history&amp;feed=atom&amp;title=AJLSM-DEPLOY_%E2%80%94_Version_1.0.2"/>
	<link rel="alternate" type="text/html" href="https://mediawiki.ajlsm.com/index.php?title=AJLSM-DEPLOY_%E2%80%94_Version_1.0.2&amp;action=history"/>
	<updated>2026-11-06T19:23:31Z</updated>
	<subtitle>Historique des versions pour cette page sur le wiki</subtitle>
	<generator>MediaWiki 1.46.2</generator>
	<entry>
		<id>https://mediawiki.ajlsm.com/index.php?title=AJLSM-DEPLOY_%E2%80%94_Version_1.0.2&amp;diff=6501&amp;oldid=prev</id>
		<title>Jlarvers : Page créée avec « = AJLSM-DEPLOY — Version 1.0.2 =  Mise à jour : 19 octobre 2026. Ce guide décrit les scripts du dossier &#039;&#039;&#039;ajlsm-deploy-v1.0.2&#039;&#039;&#039;, à installer dans &#039;&#039;&#039;/opt/ajlsm-depl... »</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.ajlsm.com/index.php?title=AJLSM-DEPLOY_%E2%80%94_Version_1.0.2&amp;diff=6501&amp;oldid=prev"/>
		<updated>2026-10-19T07:36:46Z</updated>

		<summary type="html">&lt;p&gt;Page créée avec « = AJLSM-DEPLOY — Version 1.0.2 =  Mise à jour : 19 octobre 2026. Ce guide décrit les scripts du dossier &amp;#039;&amp;#039;&amp;#039;ajlsm-deploy-v1.0.2&amp;#039;&amp;#039;&amp;#039;, à installer dans &amp;#039;&amp;#039;&amp;#039;/opt/ajlsm-depl... »&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Nouvelle page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;= AJLSM-DEPLOY — Version 1.0.2 =&lt;br /&gt;
&lt;br /&gt;
Mise à jour : 19 octobre 2026. Ce guide décrit les scripts du dossier&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ajlsm-deploy-v1.0.2&amp;#039;&amp;#039;&amp;#039;, à installer dans &amp;#039;&amp;#039;&amp;#039;/opt/ajlsm-deploy/v1&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
Ce chemin est le répertoire définitif de lancement sur le nœud Proxmox ;&lt;br /&gt;
les anciennes copies de /usr/local/sbin ne sont pas remplacées implicitement.&lt;br /&gt;
Les lots NFS, Apache et Matomo précédents sont historiques. Garder scripts,&lt;br /&gt;
modules et modèles du même lot. Rotation des logs et update.sh hors périmètre.&lt;br /&gt;
&lt;br /&gt;
== Périmètre et architecture ==&lt;br /&gt;
&lt;br /&gt;
Les scripts tournent sur le nœud Proxmox. Ils configurent le clone depuis un&lt;br /&gt;
projet YAML strict, utilisent QEMU Guest Agent pour les opérations invitées,&lt;br /&gt;
et SSH pour certaines vérifications/postconfigurations. Le moteur principal&lt;br /&gt;
orchestre les phases ; les modules spécialisés traitent racine, postconfiguration,&lt;br /&gt;
NFS, Apache, SQL Matomo, activation Matomo et inventaire des tâches planifiées.&lt;br /&gt;
Les helpers communs valident le YAML et affichent les commandes suivantes.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Ce n&amp;#039;est pas un gestionnaire complet de l&amp;#039;infrastructure externe.&amp;#039;&amp;#039;&amp;#039; DNS,&lt;br /&gt;
OPNsense, Ansible, autorisation Eole3 et certificats publics ont leurs procédures.&lt;br /&gt;
Le script ne détruit pas la VM existante et ne modifie pas TEMPLATE3.&lt;br /&gt;
&lt;br /&gt;
== Répertoire définitif et exemple MERCURE3 ==&lt;br /&gt;
&lt;br /&gt;
Les cinq programmes affichent la version 1.0.2 avec --version.&lt;br /&gt;
Leur --help rappelle le même répertoire et le même exemple que cette page.&lt;br /&gt;
Ces valeurs sont centralisées dans ajlsm_deploy_version.py.&lt;br /&gt;
Les suggestions visent les programmes du dossier réellement exécuté :&lt;br /&gt;
utiliser le lot installé ci-dessous, pas un ancien dossier de recette.&lt;br /&gt;
&lt;br /&gt;
Sur Saturne3, après installation du lot complet selon INSTALLATION-V1.txt :&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd /opt/ajlsm-deploy/v1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Toutes les commandes ./ de cette page se lancent depuis ce répertoire.&lt;br /&gt;
Depuis un autre répertoire du même nœud, utiliser le chemin absolu du&lt;br /&gt;
programme sous /opt/ajlsm-deploy/v1 et celui du YAML.&lt;br /&gt;
Les YAML opérationnels restent sous /etc/ajlsm/deploy/projets/,&lt;br /&gt;
les journaux sous /var/lib/ajlsm-deploy/cycles/. Les archives/recettes&lt;br /&gt;
sous /root/ajlsm-deploy ne sont plus le répertoire de lancement v1.&lt;br /&gt;
Ne pas mélanger les modules ou changer de lot pendant un cycle.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;exemples/mercure3-exemple.yaml&amp;#039;&amp;#039;&amp;#039; est un exemple renseigné avec les IP&lt;br /&gt;
réelles de MERCURE3, pas une préconfiguration générique.&lt;br /&gt;
Les commandes MERCURE3 de ce guide sont des exemples à adapter au projet.&lt;br /&gt;
Le nom de la VM, ses DNS et ses fichiers YAML opérationnels existants ne sont&lt;br /&gt;
pas renommés. En particulier, conserver le chemin du YAML pour la reprise :&lt;br /&gt;
le journal est indexé par ce chemin absolu.&lt;br /&gt;
modeles/projet-vierge.yaml demeure le modèle générique sans valeurs.&lt;br /&gt;
&lt;br /&gt;
== Prérequis impératif : OS de TEMPLATE3 à jour ==&lt;br /&gt;
&lt;br /&gt;
Avant TOUT nouveau clonage, maintenir l’OS Ubuntu de TEMPLATE3 à jour.&lt;br /&gt;
La VM clonée hérite de cet état. Maintenance manuelle distincte : les scripts&lt;br /&gt;
de déploiement ne mettent pas le modèle à jour. Prévoir une sauvegarde&lt;br /&gt;
récupérable et une fenêtre sans conflit d’IP avec les clones existants.&lt;br /&gt;
Ne pas démarrer ni convertir à l’aveugle un modèle marqué template Proxmox.&lt;br /&gt;
&lt;br /&gt;
Dans la console de TEMPLATE3, après vérification de son identité :&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
hostname -f&lt;br /&gt;
cat /etc/os-release&lt;br /&gt;
sudo apt update&lt;br /&gt;
sudo apt upgrade&lt;br /&gt;
apt list --upgradable&lt;br /&gt;
if [ -f /var/run/reboot-required ]; then&lt;br /&gt;
  cat /var/run/reboot-required&lt;br /&gt;
  cat /var/run/reboot-required.pkgs 2&amp;gt;/dev/null || true&lt;br /&gt;
fi&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Examiner toutes les erreurs, messages APT et paquets retenus/différés.&lt;br /&gt;
apt update seul ne met pas les paquets à jour. Pas de -y, full-upgrade,&lt;br /&gt;
do-release-upgrade ou update.sh automatique. Si un redémarrage est demandé :&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo reboot&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Attendre le retour du modèle, puis dans sa console :&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
hostname -f&lt;br /&gt;
uname -r&lt;br /&gt;
systemctl --failed&lt;br /&gt;
apt list --upgradable&lt;br /&gt;
test ! -f /var/run/reboot-required&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Examiner les résultats, noter date/OS/noyau dans le registre de maintenance.&lt;br /&gt;
Après validation, arrêter proprement TEMPLATE3 :&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo shutdown -h now&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Puis sur Saturne3 :&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
qm status 506&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
506 correspond au template_vmid de cette recette : vérifier la valeur du YAML.&lt;br /&gt;
Le modèle doit être arrêté avant le clonage. Ni le lanceur ni les précontrôles&lt;br /&gt;
ne certifient automatiquement sa fraîcheur APT. Cette maintenance n’a pas&lt;br /&gt;
été réalisée par les scripts livrés. Saturne3 et HAProxy ont leur maintenance&lt;br /&gt;
distincte, non demandée ici.&lt;br /&gt;
Voir PREREQUIS-OS-ET-PUBLICATION.txt et les documentations Ubuntu :&lt;br /&gt;
[https://ubuntu.com/server/docs/how-to/software/package-management/ Gestion des paquets]&lt;br /&gt;
et [https://ubuntu.com/server/docs/how-to/software/automatic-updates/ Mises à jour automatiques].&lt;br /&gt;
&lt;br /&gt;
== Paramètres prévus avant la création ==&lt;br /&gt;
&lt;br /&gt;
* Identité projet, environnement et tags : interne, client, prod ; types YAML stricts.&lt;br /&gt;
* Ressources, template, stockage, IP privées/VPN/publique, passerelle et DNS.&lt;br /&gt;
* Domaines principal, préprod et Matomo définitifs, sans https:// ni chemin.&lt;br /&gt;
* NFS existant et droits accordés par l&amp;#039;administrateur du serveur.&lt;br /&gt;
* Activation des vhosts distincte de l&amp;#039;installation des logiciels.&lt;br /&gt;
* Noms SQL dédiés Matomo, sans secret dans le YAML.&lt;br /&gt;
&lt;br /&gt;
Référence MERCURE3 : hostname mercure3.ajlsm.com, VPN 10.0.0.43,&lt;br /&gt;
réseau données 192.168.123.27, publique 51.83.117.113. Matomo :&lt;br /&gt;
mercure3-matomo.pleade.com ; préprod : mercure3-preprod.pleade.com.&lt;br /&gt;
Ne pas conserver deux VM avec ces mêmes adresses.&lt;br /&gt;
&lt;br /&gt;
Chez OVH, principal A vers 51.83.117.113, domaines secondaires CNAME vers&lt;br /&gt;
mercure3.ajlsm.com dans la recette. Ne pas publier d&amp;#039;AAAA sans IPv6 opérationnel.&lt;br /&gt;
Pour un domaine secondaire sur la même IP, réutiliser la VIP/NAT existante si&lt;br /&gt;
elle et le filtrage traitent déjà le flux requis ; ne pas dupliquer OPNsense.&lt;br /&gt;
Le trafic public passe par la VIP HAProxy 10.0.0.32, nœuds .30 et .31.&lt;br /&gt;
&lt;br /&gt;
== Préconfiguration et contrôle ==&lt;br /&gt;
&lt;br /&gt;
modeles/projet-vierge.yaml contient des null, jamais une liste [à renseigner].&lt;br /&gt;
null est valide pour proxmox.vmid automatique, pas pour un champ obligatoire.&lt;br /&gt;
Les sections métier peuvent être omises, mais doivent être complètes si présentes.&lt;br /&gt;
exemples/mercure3-exemple.yaml prépare une recréation volontaire, pas une VM parallèle.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
./ajlsm-deploy-yaml ./modeles/projet-vierge.yaml --with-metier --output /etc/ajlsm/deploy/projets/mercure3-initial.yaml&lt;br /&gt;
./ajlsm-deploy-yaml /etc/ajlsm/deploy/projets/mercure3-initial.yaml --check&lt;br /&gt;
./ajlsm-deploy-cycle /etc/ajlsm/deploy/projets/mercure3-initial.yaml --plan&lt;br /&gt;
./ajlsm-deploy-check /etc/ajlsm/deploy/projets/mercure3-initial.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le parcours complet de l&amp;#039;assistant est désormais &amp;#039;&amp;#039;&amp;#039;--with-metier&amp;#039;&amp;#039;&amp;#039; :&lt;br /&gt;
NFS, domaines Matomo/Apache et SQL dédiés dans le même YAML initial.&lt;br /&gt;
Sans modèle, utiliser --new --with-metier avec un chemin inexistant.&lt;br /&gt;
Les valeurs valides existantes sont conservées ; --review les revoit aussi.&lt;br /&gt;
Le guide détaillé GUIDE-YAML.txt décrit les questions et les activations :&lt;br /&gt;
Drupal seulement si vérifié, Pleade préprod désactivé en son absence,&lt;br /&gt;
Matomo Apache false jusqu&amp;#039;à publication-matomo après pause externe.&lt;br /&gt;
Le mode --with-matomo-site reste une activation MANUELLE distincte,&lt;br /&gt;
incompatible avec --with-metier ; inutile au cycle guidé actuel.&lt;br /&gt;
OS du modèle, DNS, OPNsense, ACME sur les deux HAProxy, Ansible/whitelist&lt;br /&gt;
et autorisation NFS sont rappelés mais pas vérifiés ni enregistrés comme tels.&lt;br /&gt;
&lt;br /&gt;
Les options individuelles restent disponibles : --with-nfs, --with-matomo, --with-apache et&lt;br /&gt;
--with-matomo-sql ; --review revoit aussi les valeurs valides. --new crée un&lt;br /&gt;
nouveau chemin. Les fichiers existants ne sont pas écrasés. --check et&lt;br /&gt;
--yaml-only sont des contrôles locaux, pas une vérification d&amp;#039;infrastructure.&lt;br /&gt;
Prévoir apache.matomo.activer=false pour le cycle initial ; un projet&lt;br /&gt;
d&amp;#039;activation true est refusé par le cycle avant toute phase passant par Apache.&lt;br /&gt;
&lt;br /&gt;
== Cycle initial : dix-sept étapes ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Étape !! Simulation / lecture !! Exécution&lt;br /&gt;
|-&lt;br /&gt;
| clonage || --dry-run || --clone&lt;br /&gt;
|-&lt;br /&gt;
| ressources || --resources-dry-run || --configure-resources&lt;br /&gt;
|-&lt;br /&gt;
| premier-demarrage || --first-boot-dry-run || --first-boot-apply&lt;br /&gt;
|-&lt;br /&gt;
| extension-racine || --root-grow-dry-run || --root-grow-apply&lt;br /&gt;
|-&lt;br /&gt;
| identite || --system-dry-run || --system-apply&lt;br /&gt;
|-&lt;br /&gt;
| netplan || --network-dry-run || --network-apply&lt;br /&gt;
|-&lt;br /&gt;
| activation-reseau || --network-enable-dry-run || --network-enable&lt;br /&gt;
|-&lt;br /&gt;
| audit-ssh || --ssh-audit || audit, pas de simulation distincte&lt;br /&gt;
|-&lt;br /&gt;
| securisation-ssh || aucune || --ssh-secure&lt;br /&gt;
|-&lt;br /&gt;
| mot-de-passe || aucune || --password-ajlsm&lt;br /&gt;
|-&lt;br /&gt;
| tls || aucune || --tls-apply&lt;br /&gt;
|-&lt;br /&gt;
| nfs || --nfs-dry-run puis --nfs-check || --nfs-apply&lt;br /&gt;
|-&lt;br /&gt;
| apache || --apache-dry-run || --apache-apply&lt;br /&gt;
|-&lt;br /&gt;
| matomo-sql || --matomo-sql-dry-run || --matomo-sql-prepare&lt;br /&gt;
|-&lt;br /&gt;
| tomcat-cron || --scheduled-dry-run || --scheduled-apply&lt;br /&gt;
|-&lt;br /&gt;
| taches-planifiees || --scheduled-audit || aucune modification&lt;br /&gt;
|-&lt;br /&gt;
| publication-matomo || --matomo-guided-dry-run || --matomo-guided&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Le clone est isolé avant premier démarrage. L&amp;#039;extension racine suit le premier&lt;br /&gt;
démarrage et ne doit pas être confondue avec le disque virtuel déjà agrandi.&lt;br /&gt;
Puis identité, réseau, SSH, mot de passe et certificat interne sont traités.&lt;br /&gt;
Les phases métier non demandées sont ignorées explicitement.&lt;br /&gt;
&lt;br /&gt;
=== Attente réseau pendant l&amp;#039;isolation ===&lt;br /&gt;
&lt;br /&gt;
Le journal MERCURE3 transmis montre wait-online en attente 120 secondes avant&lt;br /&gt;
activation des carriers ; le réseau est ensuite online sur les deux cartes.&lt;br /&gt;
Le lot ajoute une dispense conditionnelle liée à l&amp;#039;UUID pendant l&amp;#039;isolation,&lt;br /&gt;
dès que QGA est disponible. Les phases first-boot et system l&amp;#039;installent après&lt;br /&gt;
les confirmations et gardes ; network-enable la retire après ses contrôles&lt;br /&gt;
puis vérifie le fonctionnement normal de wait-online avant onboot.&lt;br /&gt;
Le repli réseau remet la dispense après réisolation. Pas de mask/disable,&lt;br /&gt;
pas de changement Netplan optional ou de TEMPLATE3. Les simulations n&amp;#039;écrivent&lt;br /&gt;
aucun fichier. Ce correctif reste à recetter sur un clone ; il ne nécessite&lt;br /&gt;
pas de reconstruire la VM actuelle pour continuer les étapes métier.&lt;br /&gt;
Voir CORRECTIF-WAIT-ONLINE.txt pour les deux fichiers gérés, limites et reprise.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
./ajlsm-deploy-cycle /etc/ajlsm/deploy/projets/mercure3-initial.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Les confirmations OUI/NON, défaut NON, et saisies natives restent interactives.&lt;br /&gt;
Pas d&amp;#039;arrêt entre commandes réussies ; arrêt au premier refus ou erreur.&lt;br /&gt;
--agent-timeout est transmis aux phases, défaut 300 secondes, pas un timeout global.&lt;br /&gt;
Après diagnostic, --from reprend l&amp;#039;étape incluse sans refaire les précédentes.&lt;br /&gt;
Un --plan n&amp;#039;exécute rien mais ne garantit ni Proxmox ni l&amp;#039;infrastructure externe.&lt;br /&gt;
&lt;br /&gt;
== NFS : autorisation manuelle guidée ==&lt;br /&gt;
&lt;br /&gt;
Dépôt d&amp;#039;exemples : 192.168.123.202:/var/data/pleade.com-data/data,&lt;br /&gt;
point local identique, mode ro. Un autre dépôt est paramétrable ; plusieurs&lt;br /&gt;
dépôts de MERCURE3 restent une exception manuelle. Le script affiche le fichier&lt;br /&gt;
exports et la ligne à adapter sur Eole3, sans s&amp;#039;y connecter en administrateur.&lt;br /&gt;
L&amp;#039;autorisation de 192.168.123.27 en ro a été réalisée dans la recette.&lt;br /&gt;
Les autres exports et données doivent être conservés. Pas de chmod/chown récursif.&lt;br /&gt;
&lt;br /&gt;
== Apache, Drupal et Pleade ==&lt;br /&gt;
&lt;br /&gt;
Six fichiers gérés sous /etc/apache2/sites-available : HTTP et TLS pour Drupal,&lt;br /&gt;
préprod et Matomo ; fichier robots préprod séparé. Activation par symlinks selon&lt;br /&gt;
le YAML, manifeste, sauvegarde, syntaxe candidate et reload avec tentative de&lt;br /&gt;
restauration locale sur erreur. Une interruption brutale demande un diagnostic.&lt;br /&gt;
Un vhost préparé n&amp;#039;installe pas un logiciel et ne valide pas une application.&lt;br /&gt;
Les fichiers gérés modifiés hors déploiement provoquent un refus, pas un écrasement.&lt;br /&gt;
&lt;br /&gt;
Drupal hérité a été vérifié utilisable avec MariaDB et drupal_template ; son&lt;br /&gt;
vhost principal est actif dans la recette. Pas de personnalisation SQL Drupal&lt;br /&gt;
dédiée dans ce lot. Pleade n&amp;#039;est pas installé, sa préprod reste désactivée ;&lt;br /&gt;
pas d&amp;#039;appel à update.sh. Les futurs slecture et internet ne sont pas publiés.&lt;br /&gt;
&lt;br /&gt;
== Matomo : préparation SQL puis activation coordonnée ==&lt;br /&gt;
&lt;br /&gt;
Base et compte locaux dédiés : matomo_mercure3, sans adoption de matomo_template.&lt;br /&gt;
Configuration préparée root privée dans /var/lib/ajlsm-matomo-sql ; ne pas&lt;br /&gt;
transmettre ces fichiers. En fin de cycle, publication-matomo affiche la pause&lt;br /&gt;
externe, demande une attestation OUI/NON puis active Matomo avec le MÊME YAML.&lt;br /&gt;
Il passe activer=true en mémoire uniquement ; le YAML initial reste intact.&lt;br /&gt;
En mode manuel, après SQL :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
./ajlsm-deploy /etc/ajlsm/deploy/projets/mercure3-initial.yaml --matomo-guided-dry-run&lt;br /&gt;
./ajlsm-deploy /etc/ajlsm/deploy/projets/mercure3-initial.yaml --matomo-guided&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
L’activation coordonnée conserve Drupal/Pleade. Le mode historique reste&lt;br /&gt;
possible : --with-matomo-site crée une copie d’activation, ensuite utilisée par&lt;br /&gt;
--matomo-site-dry-run puis --matomo-site-apply.&lt;br /&gt;
Ne pas utiliser --apache-apply seul pour cette transition et ne pas relancer&lt;br /&gt;
le clonage avec la copie d&amp;#039;activation. Le module désactive les anciens vhosts&lt;br /&gt;
Matomo connus, sauvegarde le cache, installe la configuration privée et active&lt;br /&gt;
le projet avec contrôle HTTPS local. Les sauvegardes peuvent contenir des secrets.&lt;br /&gt;
&lt;br /&gt;
== Certificats en prérequis et pause avant activation ==&lt;br /&gt;
&lt;br /&gt;
Recommandation : DNS puis challenge ACME stateless prêts, émettre/déployer les&lt;br /&gt;
certificats publics en prérequis, avant même le clonage backend. Le challenge&lt;br /&gt;
HAProxy ne dépend pas de Matomo. Une pause reste obligatoire à publication-matomo&lt;br /&gt;
pour vérifier les certificats et le routage restreint sur LES DEUX nœuds.&lt;br /&gt;
NON arrête proprement le cycle ; --resume reprend après préparation externe.&lt;br /&gt;
Aucune commande ACME/Ansible n’est exécutée par le script et l’attestation&lt;br /&gt;
humaine ne constitue pas une vérification automatisée.&lt;br /&gt;
&lt;br /&gt;
Le certificat interne généré dans le clone n&amp;#039;est pas le certificat public.&lt;br /&gt;
Les certificats publics sont vérifiés/générés avec acme.sh sous l&amp;#039;utilisateur&lt;br /&gt;
acme sur les deux HAProxy, l&amp;#039;un après l&amp;#039;autre. Connexion hpr puis sudo -i,&lt;br /&gt;
pas root SSH. Conserver le challenge HTTP-01 stateless avant la whitelist.&lt;br /&gt;
Émission et déploiement Matomo ont réussi sur les deux nœuds lors de la recette.&lt;br /&gt;
Un certificat valide pour le même domaine n&amp;#039;est pas à refaire parce que le&lt;br /&gt;
backend est recréé ; revérifier validité, déploiement et renouvellement.&lt;br /&gt;
&lt;br /&gt;
Ansible ajoute ACL du domaine, refus hors whitelist, redirection HTTPS et&lt;br /&gt;
backend SNI vers 10.0.0.43:443. Matomo interne MERCURE3 : allowed_ajlsm uniquement.&lt;br /&gt;
Pour un client, prévoir AJLSM et whitelist client selon les règles préprod.&lt;br /&gt;
Le backend conserve ssl verify none : l&amp;#039;identité du backend n&amp;#039;est pas validée.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ansible-playbook -i inventory ./plays/deploy.haproxy.yml --syntax-check&lt;br /&gt;
ansible-playbook -i inventory ./plays/deploy.haproxy.yml --limit haproxy01.ajlsm.lan --check --diff&lt;br /&gt;
ansible-playbook -i inventory ./plays/deploy.haproxy.yml --limit haproxy02.ajlsm.lan --check --diff&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Examiner tous les diffs puis appliquer séparément en retirant --check, attendre&lt;br /&gt;
le succès du premier nœud avant le second. Aucun lancement Ansible automatique&lt;br /&gt;
depuis Proxmox. Le check-mode n&amp;#039;est pas l&amp;#039;application réelle.&lt;br /&gt;
Recette transmise : deux applications réussies, validation et restart signalés,&lt;br /&gt;
aucun failed/unreachable. Avertissement Python découvert /usr/bin/python3.10,&lt;br /&gt;
non bloquant dans ces exécutions. Aucun changement d&amp;#039;interpréteur ici.&lt;br /&gt;
&lt;br /&gt;
Tester HTTPS sans -k depuis l&amp;#039;IP autorisée puis hors whitelist. Résultats&lt;br /&gt;
transmis : 200 avec en-tête Matomo via VPN bureau, 403 hors whitelist.&lt;br /&gt;
Un HTTP 200 n&amp;#039;est pas une validation d&amp;#039;installation fonctionnelle.&lt;br /&gt;
&lt;br /&gt;
== Tâches planifiées : correction ciblée puis audit ==&lt;br /&gt;
&lt;br /&gt;
--scheduled-audit inventorie crontabs root/ajlsm/www-data, fichiers système,&lt;br /&gt;
noms des scripts périodiques, timers systemd et instances Tomcat. Les commandes&lt;br /&gt;
et arguments privés ne sont pas affichés. L&amp;#039;audit historique et l&amp;#039;inventaire&lt;br /&gt;
avant traitement confirment 13 lignes Tomcat et trois processus, sans Pleade détecté.&lt;br /&gt;
Après cycle du 18 octobre : zéro tâche Tomcat active pour les trois instances&lt;br /&gt;
vides ; processus déjà lancés conservés et archivage mensuel inchangé.&lt;br /&gt;
Les tâches des autres comptes, timers utilisateurs et contenus des scripts&lt;br /&gt;
restent hors audit. L&amp;#039;inventaire seul n&amp;#039;effectue aucune désactivation.&lt;br /&gt;
Code 0 = inventaire obtenu, pas tâches approuvées. Rotation des logs inchangée.&lt;br /&gt;
&lt;br /&gt;
La phase &amp;#039;&amp;#039;&amp;#039;tomcat-cron&amp;#039;&amp;#039;&amp;#039; a été autorisée pour ne pas reproduire ces tâches&lt;br /&gt;
inutiles sur les nouveaux clones. --scheduled-dry-run affiche les lignes&lt;br /&gt;
reconnues à commenter ; --scheduled-apply demande OUI/NON, sauvegarde la crontab&lt;br /&gt;
ajlsm et commente ces seules lignes avec un marqueur réversible. Elle ne lance&lt;br /&gt;
aucune commande de démarrage, arrêt ou nettoyage Tomcat. Le cycle l&amp;#039;exécute en&lt;br /&gt;
étape 15, puis audite le résultat en étape 16.&lt;br /&gt;
&lt;br /&gt;
Critères conservateurs : répertoire Pleade présent et entièrement vide,&lt;br /&gt;
webapps absent d&amp;#039;autre application et lien pleade vers le chemin attendu,&lt;br /&gt;
pas de contexte externe dans conf/Catalina/localhost. Une implantation non&lt;br /&gt;
vérifiable ou un contenu partiel conserve les tâches. Une commande inconnue&lt;br /&gt;
visant une instance vide bloque la phase, sans modification partielle.&lt;br /&gt;
Seules les formes exactes des commandes héritées auditées sont reconnues.&lt;br /&gt;
&lt;br /&gt;
Sauvegarde privée : /var/backups/ajlsm-scheduled/transaction-* ; journal :&lt;br /&gt;
/var/lib/ajlsm-scheduled/transaction.json. Vérification identité/UUID et&lt;br /&gt;
empreinte de la crontab avant application, relecture après installation.&lt;br /&gt;
Restauration tentée sur erreur contrôlée si elle n&amp;#039;écrase pas un changement&lt;br /&gt;
concurrent détecté. Sinon journal conservé et reprise bloquée pour examen manuel.&lt;br /&gt;
Le verrou ne protège pas contre crontab -e dans un autre terminal : ne pas&lt;br /&gt;
modifier simultanément les tâches ou déployer une application pendant la phase.&lt;br /&gt;
L&amp;#039;interface crontab ne fournit pas de comparaison-installation atomique face&lt;br /&gt;
aux outils extérieurs. Les @reboot des premiers démarrages du clone peuvent&lt;br /&gt;
déjà avoir lancé Tomcat : seuls les lancements futurs sont neutralisés.&lt;br /&gt;
Pas de réactivation automatique lors d&amp;#039;une installation Pleade ultérieure.&lt;br /&gt;
&lt;br /&gt;
== Finalisation fonctionnelle, hors déploiement piloté ==&lt;br /&gt;
&lt;br /&gt;
L&amp;#039;installateur Matomo a confirmé « Tables créées » dans la recette. Création&lt;br /&gt;
du superadministrateur, premier site, fin de l&amp;#039;assistant et intégration du suivi&lt;br /&gt;
restent manuelles. Ne pas laisser un installateur inachevé ouvert durablement.&lt;br /&gt;
Lire FINALISATION-MATOMO.txt : reprise directe tablesCreation et avertissement&lt;br /&gt;
sur systemCheck qui supprime la configuration locale préparée en version auditée.&lt;br /&gt;
Diagnostics applicatifs non annoncés comme faits. Ne pas partager de secrets.&lt;br /&gt;
&lt;br /&gt;
== Point d’arrêt et reprise depuis tout répertoire ==&lt;br /&gt;
&lt;br /&gt;
Le nouveau lanceur conserve un journal privé sur Saturne3 dans&lt;br /&gt;
/var/lib/ajlsm-deploy/cycles/, mode 600, historique par exécution.&lt;br /&gt;
Il n’enregistre ni mots de passe, ni sortie complète des phases.&lt;br /&gt;
Il suit étape courante, dernière réussite, dates UTC, codes de sortie,&lt;br /&gt;
empreintes du YAML/lot, hôte et identité VMID/UUID de la cible.&lt;br /&gt;
Un verrou protège ce journal, pas les interventions d’un autre administrateur.&lt;br /&gt;
&lt;br /&gt;
Avec chemins absolus, depuis n’importe quel répertoire &amp;#039;&amp;#039;&amp;#039;du même nœud&amp;#039;&amp;#039;&amp;#039; :&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
/opt/ajlsm-deploy/v1/ajlsm-deploy-cycle /etc/ajlsm/deploy/projets/mercure3-initial.yaml --status&lt;br /&gt;
/opt/ajlsm-deploy/v1/ajlsm-deploy-cycle /etc/ajlsm/deploy/projets/mercure3-initial.yaml --resume&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
--status ne contacte pas Proxmox et ne crée aucun journal. --resume reprend&lt;br /&gt;
la première étape non réussie, avec contrôles et confirmations habituels.&lt;br /&gt;
Une faute « ouii » à tls se reprend donc à tls sans reclonage.&lt;br /&gt;
La reprise refuse les changements de nœud, YAML, code/ordre ou d’identité&lt;br /&gt;
VM enregistrée. Elle ne relance pas un cycle déjà terminé.&lt;br /&gt;
Après coupure brutale, en_cours signifie résultat inconnu : examiner les&lt;br /&gt;
journaux transactionnels, l’état et les processus avant reprise.&lt;br /&gt;
Le journal n’est pas une preuve de conformité permanente de l’infrastructure.&lt;br /&gt;
&lt;br /&gt;
--from étape reste une reprise explicite après diagnostic, qui démarre un&lt;br /&gt;
nouveau journal et marque les étapes antérieures ignorées, pas vérifiées.&lt;br /&gt;
Ne pas effacer les journaux pour contourner une erreur.&lt;br /&gt;
Les anciens lots sans journal ne permettent pas --resume rétroactif :&lt;br /&gt;
consulter leur sortie console puis reprendre avec --from.&lt;br /&gt;
Pour la VM actuelle, l’application de la dernière simulation Matomo n’est&lt;br /&gt;
pas confirmée. Contrôler avant de reprendre à publication-matomo, sans clonage.&lt;br /&gt;
&lt;br /&gt;
== Détails de sécurité conservés de la documentation du 16 octobre ==&lt;br /&gt;
&lt;br /&gt;
L’audit SSH lit la clé ED25519 via QEMU, vérifie son format binaire, puis&lt;br /&gt;
compare indépendamment celle exposée par ssh-keyscan. Une divergence refuse&lt;br /&gt;
la suite. Après concordance seulement, sauvegarde et remplacement atomique&lt;br /&gt;
possible de /root/.ssh/known_hosts sur Saturne3 ; les autres hôtes sont conservés,&lt;br /&gt;
y compris traitement ciblé des anciennes entrées hachées de l’IP du clone.&lt;br /&gt;
--ssh-audit n’est donc pas entièrement sans écriture.&lt;br /&gt;
--ssh-secure vérifie la syntaxe/effectivité et les connexions par clé avant/après&lt;br /&gt;
reload ; le mot de passe local reste utile à sudo.&lt;br /&gt;
--password-ajlsm utilise passwd interactif masqué ; aucun secret dans le YAML.&lt;br /&gt;
&lt;br /&gt;
La personnalisation système conserve dans la VM&lt;br /&gt;
/var/lib/ajlsm/system-personalisation/state.json et backup/. Ce journal décrit&lt;br /&gt;
une transaction, pas le cycle global. Ne pas l’effacer pour forcer une reprise.&lt;br /&gt;
La phase TLS vérifie le certificat interne /etc/ssl/ajlsm/server.crt, utilise&lt;br /&gt;
si nécessaire /usr/local/sbin/ajlsm-init-tls.sh déjà présent dans le modèle,&lt;br /&gt;
puis contrôle Apache. Cela ne valide pas les applications ou le TLS public.&lt;br /&gt;
Le README applicatif /home/ajlsm/README ne doit pas être remplacé par le&lt;br /&gt;
README-ajlsm-deploy de l’outil. Le document README-TEMPLATE3.txt est proposé&lt;br /&gt;
séparément, pas installé automatiquement.&lt;br /&gt;
&lt;br /&gt;
Validation YAML stricte : clés inconnues/répétées et types incorrects refusés ;&lt;br /&gt;
environnement/tags interne, client, prod, sans doublons ; tags [] admis ;&lt;br /&gt;
entiers positifs, mémoire minimale &amp;lt;= maximale, booléens true/false ;&lt;br /&gt;
interfaces netN/ensN uniques, IPv4/CIDR, loopback /32, DNS sans préfixe.&lt;br /&gt;
Passerelle dans le sous-réseau de son interface et distincte de la VM.&lt;br /&gt;
Serveur, bridge et stockage sont à adapter à l’infrastructure, sans liste&lt;br /&gt;
fermée inventée. Les sections métier sont désormais prises en charge :&lt;br /&gt;
l’interdiction historique d’ajouter metier ne s’applique plus à ce schéma.&lt;br /&gt;
&lt;br /&gt;
== Manuels, reprise et validation du lot ==&lt;br /&gt;
&lt;br /&gt;
Pages section 8 de la version 1.0.2 du 19 octobre : deploy, cycle, yaml, check, resources.&lt;br /&gt;
Lecture locale avec man ./man8/ajlsm-deploy.8 ; sauvegarde et installation&lt;br /&gt;
optionnelle décrites dans INSTALLATION-MANUELS.txt, sans copier les scripts.&lt;br /&gt;
Le lancement définitif se fait dans /opt/ajlsm-deploy/v1, sans copier les&lt;br /&gt;
programmes du nœud dans /usr/local/sbin. La commande invitée&lt;br /&gt;
/usr/local/sbin/ajlsm-init-tls.sh reste distincte et n&amp;#039;est pas déplacée.&lt;br /&gt;
Conserver le lot complet, modules et modèles, sans mélanger les versions.&lt;br /&gt;
Une installation du lot ne remplace pas une recette complète sur Proxmox.&lt;br /&gt;
Tests locaux sous tests/, résultats dans RAPPORT-TESTS.txt ; QGA, SQL, PHP&lt;br /&gt;
et services simulés. Ils ne prouvent pas la réussite d&amp;#039;un déploiement distant.&lt;br /&gt;
Une restauration de phase n&amp;#039;annule pas SQL ni les actions web ultérieures.&lt;br /&gt;
Ne pas effacer un journal transaction.json pour forcer une reprise.&lt;br /&gt;
&lt;br /&gt;
== Réconciliation de la page reçue du 16 octobre et état de recette ==&lt;br /&gt;
&lt;br /&gt;
Cette procédure remplace les indications historiques « 11 étapes »,&lt;br /&gt;
« NFS/Apache/Matomo hors cycle » et « aucun journal global ». Le nouveau lot&lt;br /&gt;
compte 17 étapes avec publication protégée, mais la finalisation fonctionnelle&lt;br /&gt;
Matomo reste indépendante. L’ancien man reproduit intégralement dans la page&lt;br /&gt;
du 16 octobre n’est pas recopié ici : les cinq sources man8 de ce lot sont&lt;br /&gt;
la référence de version, sans procédure concurrente.&lt;br /&gt;
Les anciens chemins du 16 octobre restent des archives, pas le lot courant.&lt;br /&gt;
&lt;br /&gt;
Le cycle 16 étapes du lot consolide-taches a été exécuté sur un clone recréé&lt;br /&gt;
le 18 octobre, reprise TLS après faute de saisie incluse. Hostname et racine&lt;br /&gt;
ext4 97 Gio confirmés. Tâches Tomcat neutralisées pour les instances vides ;&lt;br /&gt;
les processus déjà lancés n’ont pas été arrêtés. Le correctif wait-online et&lt;br /&gt;
le nouveau cycle 17 étapes avec journal restent à valider sur Proxmox.&lt;br /&gt;
Les tests locaux ne sont pas une nouvelle recette distante.&lt;br /&gt;
La capture « Tables créées » et la première activation Matomo concernent le&lt;br /&gt;
clone antérieur : ne pas les attribuer automatiquement au clone actuel.&lt;br /&gt;
Le succès nominal ne valide pas le repli réseau après panne.&lt;br /&gt;
&lt;br /&gt;
Le modèle TEMPLATE3 n’a pas été modifié par ces scripts. Cela ne démontre&lt;br /&gt;
pas l’absence de toute autre intervention. Sa mise à jour OS demandée est&lt;br /&gt;
une maintenance à réaliser/valider séparément avant le prochain clonage.&lt;br /&gt;
Aucun nettoyage serveur ni envoi SVN n’est exécuté par cette livraison.&lt;br /&gt;
&lt;br /&gt;
[[Category:Proxmox]][[Category:AJLSM]][[Category:Déploiement]]&lt;/div&gt;</summary>
		<author><name>Jlarvers</name></author>
	</entry>
</feed>