4.5 KiB
Ansible
Antoire Bouhier • Christian Tritten • Alban Berthout
DevOps
Infrastructure as Code
DevOps
-
Mouvement qui consiste à promouvoir le dialogue et la collaboration entre les équipes Dev et Ops.
-
Ensemble de bonnes pratiques et de principes
établis entre :-
les équipes DEV (de développement)
-
les équipes OPS (d’exploitations)
-
-
L'objectif de DevOps est de fluidifier le processus de déploiement d'une application.
Les principaux axes du DevOps
-
Améliorer la communication
Organisation • Collaboration • Partage d'outils communs • Conférences • Réunions -
Accepter et banaliser les erreurs
Droit à l'erreur • Responsabilité partagée -
Mettre en prod le plus souvent possible
Robustesse • Confiance -
Automatiser tout ce qui peut l'être
Tests • Cloud • Déploiements • Configuration • Chaos monkey -
Récolter des métriques et indicateurs
dans une optique d'amélioration continue
Le champ d'application du DevOps
Automatisation
Traiter de manière automatique les opérations
-
de contrôle,
-
de régulation,
-
d’administration,
avec peu ou pas d’intervention humaine.
Intérêt de l'automatisation
-
Réduire la complexité
-
Réduire les possibilités d’erreurs humaine
-
Améliorer les performance d’un système
-
Augmenter la productivité et l’innovation
-
Améliorer la robustesse, l’agilité du déploiement
-
Réduire le TTM d’une application
Infrastructure As Code
-
L'infrastructure cible peut-être décrite dans des fichiers de description à l'aide d'une syntaxe spécifique.
-
Il devient alors possible de gérer et de versionner chaque modification apportée à l'infrastructure.
-
Construire, reconstruire, modifier ou dupliquer une infrastructure s'en trouve d'autant simplifié.
-
Outils : Terraform, Ansible, Puppet, Docker, Kubernetes...
Les outils de gestion de configuration
-
Permettent de contrôler l'ensemble des modifications apportées sur l’infrastructure d’une entreprise.
-
Assurent que cette infrastructure est configurée selon les bonnes spécifications.
-
Évitent l'apparition de trop grandes variations de configuration entre les serveurs.
Quelques outils
-
CFEngine (1993)
-
Puppet (2005)
-
Chef (2009)
-
Ansible (2012)
Ansible
-
Logiciel libre (GPL-3.0)
-
Initié en 2012
-
Version 1.0 = 2013
-
Version actuelle = 2.10 (2020), 2.9 pour Red Hat subscribers
-
-
Développé en Python
https://github.com/ansible/ansible -
Forte communauté d'utilisateurs
-
Ansible racheté par Red Hat en octobre 2015
-
Red Hat racheté par IBM en octobre 2018
-
Ansible est un moteur d'automatisation permettant :
-
le provisionnement de logiciel,
-
la gestion de la configuration.
-
-
Pas d'agent
-
utilise SSH sur Linux/Unix
-
utilise WinRM sur Windows
-
-
Mode Push
Peut aussi fonctionner en Pull (sur cibles Linux uniquement)
Cibles Linux
-
La plupart des systèmes Linux sont supportés.
-
Connexion par SSH.
-
Pré-requis sur les machines cibles :
-
SSH server
-
Python 2.7 ou 3.5
-
Cibles Windows
-
Desktop :
Windows 7, 8.1, 10 -
Server :
Windows Server 2008, 2008 R2, 2012, 2012 R2, 2016, 2019 -
Connexion par WinRM.
-
Pré-requis sur les machines cibles :
- PowerShell 3.0 ou +
- .NET 4.0 ou +
- Un WinRM listener doit être créé et activé.
Documentation pour Windows
https://docs.ansible.com/ansible/latest/user_guide/windows.html
Liste des modules pour Windows
https://docs.ansible.com/ansible/2.9/modules/list_of_windows_modules.html https://docs.ansible.com/ansible/latest/collections/ansible/windows/index.html
Pourquoi utiliser Ansible ?
-
Maîtrise des actions exécutées sur les machines cibles.
-
Moins d'erreurs qu'avec des actions manuelles.
-
Simple à mettre en oeuvre.
-
Courbe d'apprentissage rapide.
-
Syntaxe déclarative (pas de scripting).
-
Libère les Ops des tâches répétitives.