Développeur FullStack & Devops

Outil permettant de déployer, modifier, maintenir la configuration (fichiers, services, etc.) d’un nombre important d’hôtes de façon centralisée (via ssh).Contenus6 Liens

Concepts et vocabulaire

Les concepts utilisés sont assez simple, on parle de :

  • nœuds : éléments du réseau: serveurs, matériel réseau, IOC etc.
  • nœud contrôleur ou nœud maitre : machine qui va exécuter les commandes ansible et ansible-playbook etc qui vont déclencher l’exécution des modules Ansible sur les nœuds enfants
  • nœuds gérés ou nœuds enfants
  • inventaire : liste structurée des nœuds à gérer
  • tache : unité d’exécution d’Ansible
  • playbooks : ensemble de taches Ansible a exécuter (fichier .yml)
  • modules : c’est là qu’on trouve la puissance de cet outil tant le nombre de modules fournis est important et permet de gérer des type de nœuds ou taches variés

Modules Ansible

Ansible dispose d’un système de collections de modules qui lui permettent d’agir sur les nœuds, a l’aide d’un outil dédié par module

On trouvera par exemple le module command qui permet d’exécuter une commande sur les machine distantes.

Installation

Ansible doit être pour utiliser Python 3 il faut effectuer une manip dans le fichier d’inventaire (ou spécifier l’argument -e des CLI) :

[all:vars]
ansible_python_interpreter=/usr/bin/python3

Commande ad-hoc

Il est possible d’exécuter une commande de façon unitaire, pour cela on utilisera la commande ansible:

ansible meswebservers -i inventaire.conf  -m copy -a "src=~/fichier dest=~/chemin/fichierdest" --check --diff

ansible meswebservers -i inventaire.conf -m service -a "name=wpa_supplicant state=stopped enabled=no" --become

ansible meswebservers -i inventaire.conf -m apt -a "update_cache=yes autoclean=yes" --become
  • -m : nom du module utilisé (ici copy)
  • -i : nom du fichier d’inventaire (possible d’utiliser localhost à la place)
  • -a : arguments du module
  • --check : dry run
  • --diff : montre les différences à l’exécution
  • --become : effectue un sudo

Playbooks

Le mode d’utilisation par yaml) permet réellement d’orchestrer, ordonnancer de façon synchrone ou asynchrone des ensemble de plays.

Voici un exemple de playbook (exemple.yml):

hosts: meswebservers
tasks:
  - copy:
      src: '~/fichier'
      dest: 'chemin/fichierdest'

et on exécute le contenu de ce fichier avec la commande:

ansible-playbook -i inventaire.cfg --check exemple.yml 

Modules

Les modules sont le cœur d’Ansible et permettent les exécutions sur les nœuds distants:

  • facts concernant des nœuds.
    Voirgather_subset et gather_facts

Liens

Configuration Management vs Provisioning

popularité des configuration management tools (Chef, Puppet, Ansible, et SaltStack)

Vidéo d’introduction sur Ansible

rédigé par behrouze le 04/04/2020
Cheat SheetsOutilsVidéosA propos