2021-07-08 18:16:28 +02:00
---
title: Ansible - Introduction
description: Présentation et définitions de cette solution
published: true
2021-08-19 09:56:30 +02:00
date: 2021-07-08T16:55:49.993Z
2021-07-08 18:16:28 +02:00
tags: ansible, configuration
editor: markdown
dateCreated: 2021-07-08T16:16:25.971Z
---
2021-07-08 18:55:50 +02:00
![](https://blog.dbi-services.com/wp-insides/uploads/sites/2/2021/03/ansible-logo.png)
2021-07-08 18:16:28 +02:00
# Introduction et présentation
2021-07-08 18:47:47 +02:00
2021-07-08 18:31:12 +02:00
< div class = "video-responsive" >
2021-07-08 18:30:46 +02:00
< iframe width = "560" height = "315" src = "https://www.youtube.com/embed/Cisg9bLhLkk" title = "YouTube video player" frameborder = "0" allow = "accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen > < / iframe >
2021-07-08 18:47:47 +02:00
< / div >
## Informations utiles
- Créé en 2012 (2015 repris par Redhat) par Michael DeHaan (Cobler, outil de provisionnement)
- Ansible = Infrastructure as code + déploiement de configurations + installations
- à base de python
- Documentation : https://docs.ansible.com/
- orchestrateur basé sur du push > pas d'agent = serveur distant pousse les informations à la différence des outils à base d'agents > pull (puppet etc..)
2021-07-08 18:48:13 +02:00
## Concurrents
2021-07-08 18:47:47 +02:00
* puppet
* chef
* saltstack
* capistrano
## Avantages
- simplicité lié à l'utilisation de SSH
- intégration facile dans les outils de CI/CD
- facilité d'utilisation à base de fichiers yaml
- de très nombreux modules et une très forte communauté (notamment via ansible galaxy)
- différentes notions et déinitions : inventory + playbook + rôles (inventory > playbook < rôles )
- système de templating = jinja2 (python) (équivalent à erb pour puppet (ruby))
- également utilisable pour récupérer les données de vos serveurs
2021-07-08 18:48:13 +02:00
## Outils
2021-07-08 18:47:47 +02:00
* ansible vault
* ansible playbook
* ansible galaxy
* ansible doc
2021-07-08 18:48:13 +02:00
## Types d'installation
2021-07-08 18:47:47 +02:00
* via les sources
* via les paquets
* via librairie python (pip)
## Exemples de modules
* postgres
* vmware
* aws
* libvirt (kvm)
* network
* grafana
* postgresql
* mysql
...
2021-07-08 18:54:04 +02:00
# Notions et définitions
< div class = "video-responsive" >
< iframe width = "560" height = "315" src = "https://www.youtube.com/embed/tirjpYSMkkM" title = "YouTube video player" frameborder = "0" allow = "accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen > < / iframe >
< / div >
## Control node
* noeud disposant de ansible et permettant de déployer
* accès ssh aux autres machines (bastions...)
* password ou clef ssh
* sécurité importante
## Managed nodes
* serveurs cibles
* permet la connexion ssh
* élévation de privilèges via le user
## Inventory
* inventaires des machines (ip, dns)
* format ini (plat) ou format yaml
* et les variables (host_vars et group_vars)
* statique (fichiers) ou dynamique (api via script)
* utilisation de patterns possible (srv-pg93-0[0-2])
## Groups
* dans un inventaire les machines peuvent être regroupées (serveur web, databases...)
* possibilité de créer différents niveaux > arbre (parents/enfants)
* groupe racine = all
## Groups Vars
* variables d'un même groupe
* définie dans le fichier central d'inventory
* ou dans un répertoire spécifique (reconnu par ansible)
## Host Vars
* variables spécifiques à un serveur en particulier
* surcharge d'autres variables définies plus haut dans l'arbre - ex - groupe
## Tasks
* actions variées (user, group, command, module)
* format yaml
## Modules
* ensemble d'actions ciblées sur une utilisation commune
* pour un outil donnée : ex. postgres, mysql, vmware...
* chacune de ses actions est utilisable via une task
* chaque action prend des options
* les actions peuvent fournir un retour (id, résultat...)
* fournis par ansible pour l'essentiel
* peuvent être chargés spécifiquement
* contribution possible auprès des mainteneurs
## Rôles
* ensemble d'actions coordonnées pour réaliser un ensemble cohérent (installer nginx et le configurer etc)
* organisé en différents outils (tasks, templates, handlers, variables (default ou non), meta)
* peuvent être partagés sur le hub ansible galaxy
* il vaut mieux les versionner
## Playbooks
* un fichier (et rien d'autres...)
* applique des rôles à un inventory
* partie cruciale inventory > playbook < rôles
* peut contenir des variables (à éviter)
* peut contenir des tasks (à éviter)
* peut contenir des conditions (à éviter)
2021-07-08 18:55:50 +02:00
## Plugins
2021-07-08 18:54:04 +02:00
* modifie ou augmente les capacités de ansible
* de différentes manières : output, inventory dynamique, strategy, tests...