Démarrer
L’utilisation de l’outil “automation-cli” nécessite de maîtriser :
- Le concept d’authentification SSH par clé.
- Le langage bash.
Limitations
Pour ne pas perdre votre temps, merci de bien lire le contenu de ce chapitre.
Ce programme utilise des méthodes internes (bash) chargées d’installer les paquets nécessaires à l’exécution d’une opération (notion de dépendance).
Ces méthodes ne sont applicables qu’aux systèmes d’exploitation DEBIAN© et dérivés (DEBIAN forever). Si vous utilisez une autre distribution, les méthodes internes devront être adaptées, et vous devrez soumettre une “PR” (git Push Request).
Par son concept, ce programme ne fonctionne pas et ne fonctionnera jamais sous “Windows©”.
Introduction
Ce programme est un outil d’automatisation open source, qui permet de gérer et de déployer des configurations sur des serveurs de manière simple et efficace sur des petites infrastructures. Il a été conçu pour :
-
L’automatisation des tâches : tâches répétitives, installation de logiciels (Ex: Préparation des postes et serveurs de travail Linux Debian).
-
Orchestration : Il permet de coordonner les processus sur plusieurs serveurs simultanément.
-
Gestion de la configuration : assurer la cohérence des configurations sur tous les serveurs gérés.
“automation-cli” prépare et envoie un script ‘bash’, au travers d’une connexions SSH (sans agent), pouvant être encapsulées dans un VPN Wireguard (espace utilisateur) sur un ou plusieurs noeuds qui l’exécute (Fonctionnement détaillé). “automation-cli” se charge de gérer les erreurs rencontrées.
“automation-cli” a été écrit dans le cadre du projet “MytinyDC”. Comme beaucoup de “sysadmins”, je disposais d’une quantité importante de shells écris en langage “bash”. L’effort à produire pour convertir toutes ces tâches vers Ansible était trop important. J’ai donc repris le schéma directeur de fonctionnement d’Ansible et défini mes “shells” en tant que “task”. La première version donne un moteur entièrement écrit en bash, qui est devenu trop compliqué à maintenir. Le projet a finalement évolué vers une architecture JavaScript (NodeJs).
Installation
“automation-cli” ne dispose pas de système d’installation. Téléchargez simplement le binaire adapté à votre plateforme :
Binaire | checksum sha256 |
---|---|
Linux Debian amd64 (X86_64) | sha256sum |
Linux Debian arm64 | sha256sum |
Téléchargez le binaire et le fichier de contrôle “sha253sum”. Une fois les fichiers téléchargés sur votre station (“un nœud de contrôle”) :
- Procédez au contrôle d’intégrité du binaire :
sha256sum -c ./automation-cli-[platform].txt
- Renommez le binaire :
mv automation-cli[platform] automation-cli
, - Rendre le fichier exécutable :
chmod +x ./automation-cli
Pour bénéficier de toute la souplesse de cet outil, déplacer le fichier dans un des répertoires inclus dans la valeur de votre variable d’environnement “PATH” : echo $PATH
.
Ex: sudo mv ./automation-cli /usr/local/bin
Nœuds (hôtes)
Dans un processus d’automatisation, il est important de déterminer les acteurs impliqués. Dans le contexte “automation-cli”, les acteurs sont des nœuds (hôtes, serveurs).
Nœud de contrôle
Hôte sur lequel “automation-cli” est installé, et qui exécute des opérations stockées dans un OPSDirectory
Noeud administré
Hôte administré par “automation-cli”. Le nœud administré exécute les scripts envoyés par le “nœud de contrôle” au travers d’une communication SSH.
Toutes les opérations sont réalisées par l’utilisateur “root”, “sudo” est supporté.
Hello world
Une opération sur le nœud de contrôle
Cette première opération permet de tester le bon fonctionnement de l’outil :
automation-cli run -h localhost -c 'echo "hello world"'
- Confirmation d’exécution, taper Y en majuscule (peut être contourné en ajoutant le paramètre “-y”)
- Résultat d’exécution
Une opération sur plusieurs serveurs
“automation-cli” utilise SSH pour ce connecter à un noeud administré. Par conséquent, la clé publique du noeud de contrôle doit être ajoutée sur le noeud administré.
Génération et utilisation d’une clé SSH
Si votre compte ne dispose pas de clé SSH, générez cette clé avec ssh-keygen
. “automation-cli” supporte la protection par mot de passe de cette clé.
Ajouter la clé publique générée sur un de vos serveurs (compte root: /root/.ssh/authorized_keys).
Exécution
Ceci permet de tester le fonctionnement au travers d’une connexion SSH. Nous allons lancer, simultanément, l’opération “hello world” sur le serveur “localhost” et sur le serveur qui dispose de votre clé publique SSH. Encadrez la valeur du paramètre “-h” avec des guillemets (”) ou apostrophes (’).
automation-cli run -h "localhost [Server IP Address]" -c 'echo "hello world"'
L’opération a été exécutée sur les deux serveurs simultanément.
Plusieurs opérations sur un serveur
L’opération va consister en l’exécution de deux opérations simples. Pour cela nous aurons besoin d’un composant nommé : “operationBook”.
Il s’agit d’un fichier YAML permettant de décrire les opérations à exécuter.
Nos deux opérations :
- Afficher “Hello World” :
echo "Hello World"
- Lister le contenu de la racine du disque local :
ls /
Créer le fichier fichier YAML (./test.yaml) comme suit :
comment: "Mon premier operationBook"operations: - command: 'echo "Hello world"' - command: "ls /"
Enregistrer, puis exécutez :
automation-cli run -h "localhost" -ob "./test.yaml" -y
Plusieurs opérations sur plusieurs serveurs
Dans le cadre d’une utilisation sur plusieurs serveurs, chaque opération de l‘“operationBook” va être exécutée dans l’ordre spécifié et sur chaque serveur.
Le programme attend que tous les serveurs aient complété chaque étape de l’opération pour passer à l’étape suivante.
Si l’opération est un échec pour un des serveurs, ce serveur est retiré de la liste d’exécution, les autres serveurs continuent d’exécuter les étapes suivantes.
En reprenant l‘“operationBook” précédent, sur deux serveurs simultanément :
automation-cli run -h "localhost [Server IP Address]" -ob "./test.yaml" -y
Types d’opérations
Les opérations exécutées précédemment sont des opérations simples. Avec le type “command”, les actions vont être très rapidement limitées.
C’est pourquoi cet outil dispose de 3 types d’opérations :
-
“command” (-c)
Vu auparavant, elle permet l’exécution d’une commande simple sur un serveur (supporte l’enchaînement avec ”;” ou ”&&”).
-
“operation” (-op)
L‘“operation” est constituée d’un manifeste qui permet de décrire une opération. Une “operation” peut être définie par l’attribut “command” ou bien “scripts”.
-
“operationBook” (-ob)
L‘“operationBook” est un fichier yaml qui décrit l’enchaînement d’opérations au travers de plusieurs types d’opérations :
- “command”
- “operation”
- “operationBook”
Un exemple très simple d‘“operationBook” a été présenté ci-avant. Un “operationBook” peut exécuter un ou plusieurs autres “operationBook”
Initialisation d’un dépôt d’opérations
Veuillez consulter ce chapitre
Secrets
Veuillez consulter ce chapitre
VPN Wireguard
Si vous souhaitez utiliser “automation-cli” au travers d’une connexion VPN Wireguard, veuillez consulter ce chapitre