miroir de
https://github.com/PAPAMICA/Wiki-Tech.io.git
synchronisé 2024-09-11 10:15:21 +02:00
4,3 Kio
4,3 Kio
title | description | published | date | tags | editor | dateCreated |
---|---|---|---|---|---|---|
Ansible - Introduction | Présentation et définitions de cette solution | true | 2021-07-08T16:55:49.993Z | ansible, configuration | markdown | 2021-07-08T16:16:25.971Z |
Introduction et présentation
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..)
Concurrents
- 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
Outils
- ansible vault
- ansible playbook
- ansible galaxy
- ansible doc
Types d'installation
- via les sources
- via les paquets
- via librairie python (pip)
Exemples de modules
- postgres
- vmware
- aws
- libvirt (kvm)
- network
- grafana
- postgresql
- mysql ...
Notions et définitions
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)
Plugins
- modifie ou augmente les capacités de ansible
- de différentes manières : output, inventory dynamique, strategy, tests...