Accueil Technologies Ansible – Automatisation des tâches récurrentes (machine SSH, cloud, VM, …)
Ansible - Automatisation des tâches récurrentes (machine ssh, cloud, VM, ...)

Ansible – Automatisation des tâches récurrentes (machine SSH, cloud, VM, …)

par Jérémy PASTOURET
Publié : Mis à jour le

Ce n’est peut-être pas la première fois que vous entendez parler d’Ansible. Pour ma part, cela faisait un moment que je souhaitais apprendre à l’utiliser, à force d’en entendre parler dans différentes conférences. Bien que n’étant pas encore expert en la matière, je vous propose néanmoins une présentation et un petit exemple.

Qu’est ce qu’Ansible ?

Red Hat Ansible

C’est une plateforme libre qui permet de configurer ou de gérer un parc d’ordinateurs, en exécutant une succession d’opérations décrites dans un fichier. Ansible gère les différentes machines en passant par le protocole SSH, ce qui ne nécessite pas d’installation complémentaire sur les machines cibles. En partant de ce principe-là, on peut réaliser plein de chose. Par exemple, on peut faire un script de déploiement d’application Web : je récupère le code source, je l’envoie sur un serveur distant, je mets à jour la base de données, etc. On peut aussi s’amuser à créer un script qui va automatiquement préparer la machine d’un nouvel arrivant dans une société.

Qui utilise Ansible ?

J’ai été surpris en consultant la liste des utilisateurs de cet outil : HP, AIRBUS, La Poste, la Société Générale et bien d’autres. De bien jolies références.

Open Source et Ansible

GitHub Ansible

La plateforme étant libre, vous pouvez retrouver le code sur GitHub. Le projet est plutôt actif. Au moment où j’écris l’article, il y a eu plus de 41 000 commits, + de 42 branches, + de 252 versions et + de 4 000 contributeurs. La licence est GPL-3.0 ce qui veut dire que vous pouvez faire ce que vous souhaitez. Les deux limitations sont qu’il n’y a pas de garanties du service et pas de responsable, c’est tout.

Qui développe Ansible ?

La communauté d’Ansible et surtout RedHat a développé Ansible Tower. Ce service web permet de simplifier l’utilisation d’Ansible par des utilisateurs qui développent moins. L’outil devient une console centrale de gestion automatisée des tâches. Ansible Tower n’est pas gratuit. Cependant, il est disponible en version d’essai si cela vous intéresse. Pour en savoir plus sur son prix, voici la page que vous cherchez. De toute façon, l’objectif de cet article est de vous montrer la puissance d’Ansible, et par conséquent la partie gratuite de cet outil fabuleux.

Un exemple simple d’utilisation

Je vous propose de monter automatiquement une machine Ubuntu. Puis d’installer Git, et de cloner le projet Ansible sous GitHub. Commençons par notre ami Vagrant (si vous ne le connaissez pas je vous conseille de lire cet article) pour créer notre machine virtuelle Ubuntu.

Commençons par la partie Script Ansible

Il est commun d’appeler le fichier playbook.yml. Mais pour ce tutoriel, je vais l’appeller git.yml. Ainsi, si vous souhaitez réaliser le vôtre, vous ne vous mélangerez pas avec celui créé pendant l’article.

Vous devez donc créer un fichier git.yml et y copier le code suivant :

- hosts: all
  become: yes
  become_method: sudo
  tasks:
    - name: install git
      apt:
        name: git
        update_cache: yes

    - name: git clone shell classic
      shell: git clone https://github.com/ansible/molecule.git

    - name: git ansible
      git:
        repo: https://github.com/ansible/ansible.git
        dest: /home/vagrant/ansible

Petite explication par mot-clés:

  • hosts: all permet de cibler sur quel host nous allons effectuer les opérations. On pourrait tout aussi bien mettre hosts : mail.example.com. Mais dans notre cas, on ne se prend pas la tête : on fait all pour tout cibler. Pour plus d’informations, vous pouvez accéder à la documentation.
  • become: yes permet d’activer l’escalade des privilèges. C’est-à-dire appartenir à un groupe d’utilisateurs similaires. Par exemple être root (administrateur) sans avoir le compte root mais en ayant les même droits. Voici la documentation.
  • become_method: sudo indique que l’on veut exécuter les commandes en tant qu’ administrateur.
  • tasks: liste les tâches à accomplir.
  • name: <un nom> vous pouvez mettre ce que vous voulez. Cela vous servira quand vous exécuterez le script pour savoir où en est Ansible.
  • apt: signifie que l’on demande l’installation d’un programme en utilisant la commande apt.
  • name: le nom du programme en question. Dans notre cas : git.
  • update_cache: permet de mettre à jour le cache. Ainsi, à chaque fois que vous exécuterez ce script, la commande sera vraiment relancée. Si vous n’utilisez pas ce mot-clé, l’outil peut se servir de son cache et donc prendre une version ancienne de git.
  • shell: permet d’exécuter simplement une commande bash. Ceci à titre d’exemple, pour vous montrer qu’on peut faire ce que l’on veut et que l’installation de git a fonctionné.
  • git: permet d’utiliser git directement car Ansible connaît bien le programme.
  • repo: permet de dire à Ansible quel est le lien du projet git à récupérer.
  • dest: permet d’indiquer le répertoire qui va recevoir le code provenant de GitHub.

Partie Script Vagrant

Maintenant il faut créer un petit script Vagrant. L’objectif : créer une machine virtuelle de test, puis exécuter le script d’installation d’Ansible. Je vous demande de créer un fichier Vagrantfile et d’y copier le contenu ci-dessous.

Vagrant.configure('2') do |config|
  config.vm.box = 'ubuntu/trusty64'
  config.vm.network :private_network, ip: '10.10.10.10'
  config.vm.provision 'ansible' do |ansible|
    ansible.playbook = 'git.yml'
  end
end

Puisque vous avez lu le précédent article, je n’ai que deux nouvelles lignes à vous expliquer.

  • config.vim.provision ‘ansible’ do |ansible| : le mot-clé provision permet d’installer un programme, et do d’exécuter le programme. Voici la documentation Vagrant.
  • ansible.playbook : on indique le chemin ou le nom du fichier qu’Ansible doit exécuter.

Si vous avez lu le précédent article sur Vagrant, vous devez connaître la commande que nous allons maintenant utiliser.

vagrant up

A ce moment là, Vagrant va construire la machine virtuelle et lancer Ansible, afin qu’il initialise la machine comme on le souhaite. Vous devriez avoir à peu près les mêmes écrans que moi :

Vagrant up with Ansible

On arrive au moment intéressant : le déclenchement d’Ansible. Vous allez maintenant comprendre à quoi sert la propriété name pour le débogage en console.

Dès que le traitement est terminé, lancez la commande :

vagrant ssh
Vagrant ssh

Pour vérifier que tout fonctionne, vous pouvez faire un petit ls puis naviguer dans les répertoires.

Vérification de la structure avec Ansible

J’espère que vous y verrez plus clair grâce à cet exemple, et que vous aurez des idées d’utilisation. N’oubliez pas que pour Ansible vous pouvez cibler directement une machine distante connectable en SSH. Je vous recommande de lire l’article suivant. Dans cet article, je vous montre comment monter un site WordPress avec la sécurité de base grâce à Ansible. A la fin de ce nouveau chapitre, vous pourrez donc monter tout seul votre site WordPress en une seule commande.

Vous pourriez aussi aimer

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.