Resources attached to the Road To DevOps tutorial
https://blog.noobtoroot.xyz/road-to-devops/
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
207 lines
4.5 KiB
207 lines
4.5 KiB
2 years ago
|
<!-- .slide: data-state="nologo-slide" style="text-align: center" -->
|
||
|
# Ansible
|
||
|
|
||
|
![Logo Ansible](images/logo-ansible.svg)
|
||
|
|
||
|
<small>Antoire Bouhier • Christian Tritten • Alban Berthout</small>
|
||
|
|
||
|
|
||
|
## 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
|
||
|
|
||
|
1. Améliorer la communication
|
||
|
<small>Organisation • Collaboration • Partage d'outils communs • Conférences • Réunions</small>
|
||
|
|
||
|
2. Accepter et banaliser les erreurs
|
||
|
<small>Droit à l'erreur • Responsabilité partagée</small>
|
||
|
|
||
|
3. Mettre en prod le plus souvent possible
|
||
|
<small>Robustesse • Confiance</small>
|
||
|
|
||
|
4. Automatiser tout ce qui peut l'être
|
||
|
<small>Tests • Cloud • Déploiements • Configuration • Chaos monkey</small>
|
||
|
|
||
|
5. Récolter des métriques et indicateurs
|
||
|
dans une optique d'amélioration continue
|
||
|
|
||
|
|
||
|
## Le champ d'application du DevOps
|
||
|
![devops](images/ci-vs-cd-devops-difference.jpg)
|
||
|
|
||
|
|
||
|
## 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](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_
|
||
|
<small>Peut aussi fonctionner en _Pull_ (sur cibles Linux uniquement)</small>
|
||
|
|
||
|
|
||
|
### 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
|
||
|
|
||
|
<small>https://docs.ansible.com/ansible/latest/user_guide/windows.html</small>
|
||
|
|
||
|
### Liste des modules pour Windows
|
||
|
<small>https://docs.ansible.com/ansible/2.9/modules/list_of_windows_modules.html</small>
|
||
|
<small>https://docs.ansible.com/ansible/latest/collections/ansible/windows/index.html</small>
|
||
|
|
||
|
|
||
|
### 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.
|
||
|
|
||
|
|
||
|
### Sans outil de gestion de Configuration
|
||
|
|
||
|
![Schéma connexion sans Ansible](images/manual-deployment-without-ansible.png)
|
||
|
|
||
|
|
||
|
### Avec Ansible
|
||
|
|
||
|
![Schéma connexion avec Ansible](images/ansible-ad-hoc-deployment-workflow.png)
|