Dans le monde de DevOps, Ansible est l’une des principales solutions d’automatisation informatique open source. L’automatisation informatique n’a pas besoin d’exiger un diplôme supérieur. Avec Ansible, le plus grand fournisseur indépendant de solutions d’automatisation informatique, les équipes DevOps et informatiques sont trois fois plus productives et passent trois fois moins de temps sur leurs projets d’automatisation informatique. Qu’il s’agisse de cloud, hybride, physique ou virtuel, Ansible offre une automatisation informatique simple qui met fin aux tâches répétitives et libère les équipes DevOps pour un travail plus stratégique.

Ansible est une plate-forme d’automatisation informatique simple utilisée par plus de 100 000 organisations dans le monde. Il permet aux équipes informatiques d’exécuter des commandes et de gérer les applications, les appareils et l’infrastructure de manière fiable et répétée. Ansible travaille aux côtés des équipes informatiques pour exécuter des commandes et automatiser les applications, les appareils et l’infrastructure avec des playbooks simples et éprouvés. Ce blog examinera ce qu’est Ansible, comment il fonctionne et comment cet outil d’automatisation informatique simple met fin aux tâches répétitives.

Conditions préalables

Si vous n’utilisez pas de plate-forme de gestion cloud, vous devez vous assurer que vous utilisez une machine pouvant exécuter Ansible. Ansible fonctionne avec de nombreuses machines et systèmes d’exploitation, mais Windows n’est pas pris en charge. Vous pouvez utiliser n’importe quelle machine avec Python 3.8 ou une version plus récente, y compris celles de Red Hat, Debian, CentOS et macOS. (Bien qu’il soit également possible d’utiliser Ansible avec Python 2.7, mais Python 3.8 est maintenant le système par défaut.)

Installation et configuration

Pour commencer à expérimenter avec Ansible pour gérer votre infrastructure de serveur, vous devez installer le logiciel Ansible sur la machine qui servira de nœud de contrôle. Vous pouvez installer la dernière version avec le gestionnaire de packages de votre système d’exploitation, comme apt sur Ubuntu ou yum sur RHEL, etc. ou simplement utiliser le gestionnaire de packages PIP.

Mais d’abord, bien que ce ne soit pas nécessaire, nous devrions installer un environnement virtuel qui nous permettrait d’installer les bibliothèques Python séparément, sans interférer avec quoi que ce soit. Pour installer ou mettre à jour votre environnement virtuel avec :

sudo pip install -U virtualenv

Une fois l’installation terminée avec succès, nous pouvons obtenir Ansible à l’intérieur d’un environnement virtuel, d’abord créer un environnement virtuel puis l’activer.

virtualenv .venv
source .venv/bin/activate

Maintenant, si nous installons quoi que ce soit, ce sera à l’intérieur de cet environnement virtuel. Installez maintenant ansible avec la commande suivante :

pip install -U ansible

Configuration de l’inventaire

Étant donné que nous utilisons un environnement virtuel dans ce didacticiel, nous n’aurons pas de fichiers de configuration fournis avec Ansible, mais nous n’en aurons pas besoin non plus. Nous allons continuer sur cette voie – nous pouvons créer les fichiers de configuration dans notre répertoire local si nécessaire. Par conséquent, nous n’aurons pas besoin de fichiers de configuration dans /etc ou à d’autres emplacements.

Avec Ansible, nous pouvons créer un fichier d’inventaire et l’utiliser pour définir les serveurs ou les systèmes qu’il gérera. Cela peut être nommé n’importe quoi, mais il est généralement nommé « hôtes ». Ansible peut être exécuté à la fois sur des serveurs distants et localement, j’utilise Ansible pour gérer le même serveur sur lequel j’utilise Ansible, ce qui est un moyen valide d’utiliser Ansible. Ce n’est pas son principal cas d’utilisation, mais cela ne le rend pas invalide.

Maintenant, définissons le fichier hosts pour pointer vers une machine locale sous local et vers un serveur distant sous remote :

# Ansible/hosts
[local]
127.0.0.1

[remote]
192.168.1.2

Et pour nous assurer que tout cela fonctionne, exécutons une tâche sur le serveur.

# Run against localhost
ansible -i ./hosts --connection=local local -m ping

Si tout fonctionnait avec succès, vous obtiendriez un résultat comme celui-ci :

La sortie que nous avons récupérée d’Ansible est un document JSON, qui nous indique si nous avons pu envoyer un ping à l’appareil et s’il a agi différemment ou non.

Nous vérifions également notre serveur distant avec la commande suivante :

# Run against remote server
ansible -i ./hosts remote -m ping

Il s’agit d’une configuration simple des fichiers d’inventaire Ansible ; ils sont simples à écrire et à comprendre, mais vous avez la possibilité de créer des configurations plus complexes en définissant des plages d’hôtes, plusieurs groupes, des variables, etc. vous devez donc continuer et essayer de les personnaliser par vous-même. Vous pouvez en savoir plus ici.

Configuration des playbooks

Passons maintenant aux Playbooks. Les playbooks sont l’essence même d’Ansible. Les playbooks peuvent exécuter plusieurs tâches et fournir des fonctionnalités plus avancées qui nous manqueraient en utilisant des commandes ad hoc. C’est ici que vous créez les instructions que vous écrivez afin de définir un plan pour votre infrastructure matérielle. C’est ce que vous passerez la plupart de votre temps à travailler avec Ansible.

Pour commencer, nous pouvons créer un simple playbook, nous vérifierons si une application est présente dans notre système ou non ; copiez et collez simplement la ligne suivante dans un fichier avec une extension .yml :

---
- name: playbook to install software  #name the playbook itself
  become: true  #this is to give root privileges to the playbook
  hosts: all  #this is the user on the machine on which this playbook will work on
  connection: local

  tasks:  #this is a task schema under which we define the tasks to perform, a playbook can also handle multiple tasks
    - name: ensure software is installed  #define the tasks for the playbook
      apt:  #define the module you want to use
        name: ansible  #name of the application to work on
        state: present  #check the state of the application
        update_cache: true  #this is to cache the information performed by the playbook

    - debug: var=output.stdout_lines

Remarque : Dans ce playbook, j’ai défini la configuration principale de ce playbook dans la moitié supérieure et les tâches dans la moitié inférieure. De plus, la variable connection: ne doit être définie que lors d’une exécution locale.

I have commented on what each line is used for in the code itself. So after seeing the code example above, we can understand that the playbook is really just a set of instructions that configure the different nodes that you have, and each of those sets of instructions is written in a language called YAML. 

Maintenant, vérifions si cela fonctionne, exécutez la commande suivante :

ansible-playbook -i hosts -K playbook.yml

Remarque : Ici, j’exécute Ansible uniquement sur mon système. Si vous souhaitez l’exécuter sur un serveur distant, vous pouvez uniquement les hôtes spécifiquement.

Et comme vous pouvez le voir, cela fonctionne parfaitement. Nous recevons des commentaires utiles sous la forme des tâches qu’Ansible accomplit et de leur résultat. Ici, nous voyons que tout fonctionnait bien, mais rien n’a été changé.

Conclusion

Dans ce didacticiel, nous avons examiné ce qu’est Ansible, son fonctionnement et la manière dont cet outil d’automatisation informatique simple met fin aux tâches répétitives. Ansible est un outil relativement nouveau qui facilite plus que jamais l’automatisation des tâches et la gestion de la configuration. Il existe de nombreuses méthodes et outils différents pour vous aider à gérer vos configurations, mais Ansible se distingue par sa simplicité d’apprentissage et d’utilisation. Il existe également une excellente documentation à consulter et si cela vous intéresse, je vous le recommande vivement!