Aller au contenu

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 :

Binairechecksum sha256
Linux Debian amd64 (X86_64)sha256sum
Linux Debian arm64sha256sum

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 :

Fenêtre de terminal
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”) alt text
  • Résultat d’exécution alt text

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 (’).

Fenêtre de terminal
automation-cli run -h "localhost [Server IP Address]" -c 'echo "hello world"'

alt text

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 :

Fenêtre de terminal
automation-cli run -h "localhost" -ob "./test.yaml" -y

alt text

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 :

Fenêtre de terminal
automation-cli run -h "localhost [Server IP Address]" -ob "./test.yaml" -y

alt text

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”.

    Tous les détails pour “operation”

  • “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”

    Tous les détails pour “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