0

Ansible : mes premiers pas

Ansible est un logiciel libre qui permet le déploiement ou l’automatisation de tâches d’administrations vers plusieurs serveurs distant en même temps, quelque soit leur système d’exploitation. Ce qui est intéressent avec Ansible, pas besoin d’installer d’agent sur les serveurs, seul le déploiement de la clé public du serveur Ansible est nécessaire, car les connexions se font via ssh.

Installation d’Ansible sous Debian 9

Rien de bien compliqué pour l’installation d’Ansible sous Debian, car le paquet est disponible dans les dépôts en version 2.2 sous Stretch.

apt install ansible

Configuration de Ansible

Les fichiers de configuration d’Ansible se trouvent dans le répertoire /etc/ansible.
Dans cet article, je ne rentrerais pas dans les détails du fichier de configuration ansible.cfg car de base il est fonctionnel, ça sera un sujet d’un futur article.

Le premier fichier renseigné est /etc/ansible/hosts. Dans ce fichier se trouvera tous les serveurs qui seront administrés par Ansible. Dans ce fichier, il est possible de créer des groupes d’hôtes, ce qui facilite la gestion multiple.
Plusieurs façon de faire pour renseigner les hôtes gérés par Ansible, soit renseigner les adresses IP, soit le FQDN ou un nom d’hôte. Si le choix est le nom d’hôte, il faut qu’il soit connu du système, donc il faudra aussi renseigner le fichier /etc/hosts.

  • Exemple du fichier renseigné :
    nano /etc/ansible/hosts
    • Création de groupes de serveurs
  • Génération clefs privée/publique à faire sur le serveur Ansible :
  • ssh-keygen
  • Copier la clef publique vers les serveurs cibles :
  • ssh-copy-id -i ~/.ssh/id_rsa.pub root@serveur-cible

    A partir de maintenant, Ansible est prêt pour exécuter des actions sur les serveurs cibles.

    Mes premiers test avec Ansible

    • test de ping sur le groupe poller-centreon :
    • ansible -m ping poller-centreon --one-line

    • Installation du paquet debian-goodies sur mes Proxmox du groupe pve_v5
    • ansible -m apt -a 'name=debian-goodies' pve_v5

    Playbooks

    Dans l’exemple précédant, seul la commande ping a été exécutée. Si l’on souhaite exécuter un ensemble de commande ou de script, il faut passer par des playbooks. Ces playbooks sont au format YAML. Les playbboks peuvent être placés dans un sous répertoire, qui n’a pas été créé lors de l’installation d’Ansible.

    • Création d’un sous répertoire pour les playbooks :
    • mkdir /etc/ansible/playbooks
    • Création d’un playbooks :
      nano  /etc/ansible/playbooks/mon_premier_playbooks.yml
      • Pour reprendre un exemple de ping :
      • - hosts: all
          tasks:
            - action: ping
        
      • Exécution du playbook :
      • ansible-playbook  /etc/ansible/playbooks/mon_premier_playbooks.yml
    • Exemple d’un playbook un peu plus complexe, dédié à la mise à jour de mes pollers Centreon :
    • - hosts: poller-centreon
        tasks:
          - name: version du moteur centengine
            shell: centengine -V | awk '{print $5}' | head -n 1
            register: release
      
          - name: Mise à jour des paquet
            yum: name=* state=latest
      
          - name: Vérification de la version de Centengine après mise à jour
            shell:  centengine -V | awk '{print $5}' | head -n 1
            register: new_release
      
          - name: Affichage de la version de Centengine
            debug: msg="Version de Centengine {{ new_release.stdout_lines }}"
      
          - name: Notification de la mise à niveau de la version de Centengine
            debug: msg="PVE à changé de version {{ release.stdout }} à {{ new_release.stdout }}"
            when: release.stdout != new_release.stdout
      
          - name: vérification des services à redémarrer
            shell: needs-restarting | awk '{print $3}'
            register: services
      
          - name: Liste des service à redémarrer
            debug: msg="{{ services.stdout_lines | count }} services à redémarrer ({{ services.stdout_lines | join (', ') }})"
      
    • Exécution d’un playbook :
    • ansible-playbook monplaybook.yml

    Ce playbook va seulement s’exécuter sur les serveurs membres du goupe poller-centreon. A savoir, le système d’exploitation de mes poller est CentOS.

    Partager l'article :





    fred

    Administrateur Système autodidacte et utilisateur au quotidien de GNU/Linux (Debian, Ubuntu, Manjaro et un peu de CentOS).

    Laisser un commentaire

    Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *