Ansible For Devops
Ansible For Devops
Ansible For Devops
• Ansible est semi-déclaratif c’est à dire qu’il s’exécute séquentiellement mais idéalement de
façon idempotente.
• Il permet d’avoir un état descriptif de la configuration:
• qui soit auditable
• qui peut évoluer progressivement
• qui permet d'éviter que celle-ci ne dérive vers un état inconnu
Ansible pour le déploiement et l’orchestration
Plus récemment avec l’arrivé d‘ Ansible Container il est possible de construire et déployer des
conteneurs docker avec du code ansible. Cette solution fait partie de la stack Red Hat Openshift.
Concrètement le langage ansible remplace (avantageusement ?) le langage Dockerfile pour la
construction des images Docker.
Installation, configuration et commandes ad hoc.
• Il s’agit d’une liste de machines sur lesquelles vont s’exécuter les modules Ansible. Les
machines de cette liste sont:
• Classées par groupe et sous groupes pour être désignables collectivement (exp executer telle
opération sur)
• La méthode connexion est précisée soit globalement soit pour chaque machine.
• Des variables peuvent être définies pour chaque machine ou groupe pour contrôler
dynamiquement par la suite la configuration ansible.
• Classées par groupe et sous groupes pour être désignables collectivement (exp executer telle
opération sur)
• La méthode connexion est précisée soit globalement soit pour chaque machine.
• Des variables peuvent être définies pour chaque machine ou groupe pour contrôler
dynamiquement par la suite la configuration ansible.
Exemple
Les inventaires peuvent également être au format
[all:vars] YAML (plus lisible mais pas toujours intuitif) ou
ansible_ssh_user=elie JSON (pour les machines).
ansible_python_interpreter=/usr/bin/python3
[awx_nodes]
awxnode1 node_state=started ansible_host=10.164.210.101 container_image=centos_ansible_20190901
[dbservers]
pgnode1 node_state=started ansible_host=10.164.210.111 container_image=centos_ansible_20190901
pgnode2 node_state=started ansible_host=10.164.210.112 container_image=centos_ansible_20190901
[appservers]
appnode1 node_state=started ansible_host=10.164.210.121 container_image=centos_ansible_20190901
appnode2 node_state=started ansible_host=10.164.210.122 container_image=centos_ansible_20190901
Configuration
• Ansible se configure classiquement au niveau global dans le dossier /etc/ansible/ dans lequel
on retrouve en autre l’inventaire par défaut et des paramètre de configuration.
• Ansible est très fortement configurable pour s’adapter à des environnement contraints. Liste
des paramètre de configuration:
• Alternativement on peut configurer ansible par projet avec un fichier ansible.cfg présent à la
racine. Toute commande ansible lancée à la racine du projet récupère automatiquement cette
configuration.
•
Les commandes Ansible
Ansible fonctionne grâce à des modules python téléversés sur sur l’hôte à configurer puis
exécutés. Ces modules sont conçus pour être cohérents et versatiles et rendre les tâches
courantes d’administration plus simples.
Il en existe pour un peu toute les tâches raisonnablement courantes : un slogan Ansible
“Batteries included” ! Plus de 1300 modules sont intégrés par défaut.
• ping: un module de test Ansible (pas seulement réseau comme la commande ping)
• yum/apt: pour gérer les paquets sur les distributions basées respectivement sur Red Hat ou Debian.
• ... -m yum -a "name=openssh-server state=present"
• systemd (ou plus générique service): gérer les services/daemons d’un système.
• ... -m systemd -a "name=openssh-server state=started"
• user: créer des utilisateurs et gérer leurs options/permission/groupes
• file: pour créer, supprimer, modifier, changer les permission de fichiers, dossier et liens.
• shell: pour exécuter des commandes unix grace à un shell
Option et documentation des modules