Exécution d'une opération en détails
Ce chapitre permet de mieux comprendre comment sont préparées et exécutées les opérations par le nœud de contrôle sur les nœuds administrés.
Présentation
La commande pour exécuter une opération est “run”. L’outil dispose d’autres commandes, consulter la section “Outillage”.
Canaux d’exécution (shell/SSH/Wireguard)
“automation-cli” peut utiliser deux canaux pour exécuter des opérations sur un serveur, directement dans une console (localhost) ou bien par SSH pouvant être encapsulé dans un VPN WireGuard.
Le choix est automatique et déterminé selon l’hôte cible :
- Si l’hôte est “localhost” ou “127.0.0.1”, les opérations sont exécutées dans une console locale, avec votre compte utilisateur. Vous pouvez ajouter le préfixe “sudo”, qui permettra d’exécuter des opérations réservées au compte “root” sur le nœud de contrôle.
- Dans l’autre cas, il y aura une connexion SSH, pouvant être encapsulée dans un tunnel VPN Wireguard. Toutes les opérations réalisées au travers d’une connexion SSH sont exécutées avec le compte “root”, sudo est cependant supporté.
Clé ssh
La clé ssh et son mot de passe peuvent-être fournis au moyen des commutateurs : sshpk et sshpass, ou bien par l’intermédiaire d’un fichier d’inventaire. Quand ces informations ne sont pas spécifiées, essaiera d’utiliser votre clé privée SSH, située dans votre “home directory” (`ls ~/.ssh).
Nœud administré
Ce nœud reçoit du nœud de contrôle, un script bash et un environnement d’exécution. Une fois arrivés sur le nœud administré, l’environnement préparé sera ajouté à l’environnement système (environnement du compte “root”), puis finalement utilisé dans le processus d’exécution du script bash.
Nœud de contrôle
Les rôles de ce nœud sont :
- Lire la description d’une opération pour préparer :
- L’environnement d’exécution.
- Le script bash.
- Envoyer au nœud administré :
- L’environnement d’exécution.
- Le script bash.
- Les ressources associées à une opération : templates, binaires, etc
- L’ordre d’exécution.
- Récupérer, lorsque le nœud administré exécute une opération :
- Les sorties standard et erreur (stdOut/stdErr)
- Le code de sortie (exit code).
- Construire le rapport de Post-exécution
Préparation de l’environnement d’exécution
Le but de cette préparation est de fournir aux nœuds administrés un environnement d’exécution avec des valeurs finies.
Pour construire ces dernières, vous pouvez utiliser l’environnement système du nœud de contrôle et/ou un fichier d’inventaire.
Le nœud de contrôle n’envoie pas son environnement système aux nœuds administrés. Seules les variables requises, optionnelles (spécifiées dans les manifestes) et éventuellement “register” sont envoyées aux nœuds administrés.
Si vous stipulez le commutateur ‘-e’ (‘-e [VAR]=“valeur”’) avec un nom de variable non spécifié dans le manifeste, cette variable ne sera pas injectée dans l’environnement d’exécution, vous travaillez dans un environnement contrôlé.
Par contre, vous pouvez utiliser cette variable non référencée pour préparer l’environnement d’exécution du nœud administré. Je vous conseille de vous référer aux exemples situés dans le chapitre Autoformation.
L’environnement d’exécution final pour le nœud administré, seront :
- Les variables requises (parameters.required) avec obligatoirement une valeur.
- Les variables optionnelles (parameters.optional) avec ou sans valeur. L’important pour ce type de variable, est qu’elle soit déclarée pour bash (utilisation de “set -u” pour l’exécution). Optionnel veut dire : “une variable déclarée avec ou sans valeur”.
Préparation du script bash
Déroulement de la construction d’un script bash :
- Retrait du “Shebang”.
- Récupération du template interne.
- Concaténation des shells de l’opération
Le shell est auto-détruit à son exécution, vous pouvez voir l’intégralité du shell exécuté dans les logs d’exécution.
Rapport de pré-exécution
Exécuter une opération sur un serveur peut entraîner de graves dysfonctionnements. Un rapport de pré-exécution est systématiquement présenté afin que vous confirmiez l’exécution sur le ou les hôtes désirés.
Vous pouvez outrepasser cet affichage en utilisant le commutateur “-y”.
Rapport de post-exécution
Les rapports d’exécution présentent toujours l’association ‘hôte demandé par l’utilisateur’ et ‘hôte utilisé pour la connexion SSH’.
Pour ne pas afficher ce rapport, par exemple dans le cadre d’une exécution par tâche ordonnancée (cron), utiliser le commutateur “-s” (mode silencieux).