0% ont trouvé ce document utile (0 vote)
0 vues29 pages

DevOps

Le document traite des concepts clés du DevOps, y compris les modèles de déploiement, les types d'infrastructures, et l'utilisation de Docker pour la création et le déploiement d'applications. Il aborde également l'intégration et le déploiement continus (CI/CD), les réseaux et la sécurité, ainsi que l'automatisation de l'infrastructure avec des outils comme Ansible, Puppet et Chef. Enfin, il souligne l'importance de l'infrastructure as code (IaC) et des tests automatisés dans le cadre de la gestion des applications et des infrastructures.

Transféré par

m.tati
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
0 vues29 pages

DevOps

Le document traite des concepts clés du DevOps, y compris les modèles de déploiement, les types d'infrastructures, et l'utilisation de Docker pour la création et le déploiement d'applications. Il aborde également l'intégration et le déploiement continus (CI/CD), les réseaux et la sécurité, ainsi que l'automatisation de l'infrastructure avec des outils comme Ansible, Puppet et Chef. Enfin, il souligne l'importance de l'infrastructure as code (IaC) et des tests automatisés dans le cadre de la gestion des applications et des infrastructures.

Transféré par

m.tati
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

DevOps

Module : Déploiement et sécurité des applications


1. Modèles de Déploiement
Environnements :

Développement : codage, configuration initiale, conteneurisation

Test : vérification fonctionnelle

Préproduction (planification) : acceptation finale dans un environnement


realiste

Production : environnement réel, optimisé pour le trafic

Modèles :

Bare Metal : accès direct au matériel, haute performance (High


performance computing) | utilisé pour les infra d’hebergement des infra de
visualisation et cloud

VM (Machine virtuelle) : isolation via hyperviseur, partage les ressources


de l’hôte

DevOps 1
Conteneurs : légers, rapides, partagent les ressources de l’hote y compris
le noyau

Serverless : exécution à la demande, paiement à l’usage, pay-as-you-go

DevOps 2
2. Types d’Infrastructures
On-Premises : sur site, contrôle total, gestion complexe

Cloud Privé : contrôlé par l'organisation

DevOps 3
Cloud Public : géré par un fournisseur externe

Cloud Hybride : combinaison privé/public

DevOps 4
Cloud Edge : proche de l’utilisateur pour une reponse plus rapide, utile pour
l’IoT

DevOps 5
3. Docker : Création et Déploiement
Docker est un format qui enveloppe un certain nombre de technologies
différentes pour créer des
conteneurs. Ces technologies sont les suivantes :
• Espaces de noms - Ces espaces isolent différentes parties du conteneur en
cours d'exécution.
• Groupes de contrôle – Ces
cgroups sont un concept Linux standard qui permet au système de limiter

les ressources utilisées par une application.


• Systèmes de fichiers Union – Ces
UnionFS sont des systèmes de fichiers qui sont construits couche
par couche, combinant des ressources.
Concepts Docker :

Image = modèle

Conteneur = instance exécutable

Dockerfile = script de création d’image

Commandes clés :

docker build , docker run , docker images , docker commit , docker tag , docker push , docker

stop , docker rm , docker login,

Ports : P (aléatoire) ou p (spécifique)

docker run : crée et exécute un conteneur à partir d'une image

Exemple : docker run -d -p 8080:80 nginx

docker build : construit une image Docker à partir d’un Dockerfile

Exemple : docker build -t monimage:1.0 .

docker pull : télécharge une image depuis un registre comme Docker Hub

Exemple : docker pull ubuntu

docker push : envoie une image vers un registre distant

Exemple : docker push monuser/monimage:1.0

docker commit : crée une image à partir d’un conteneur en cours d’exécution

Exemple : docker commit monconteneur monimage:latest

DevOps 6
docker tag : donne un nom et un tag à une image existante

Exemple : docker tag monimage:latest monuser/monimage:1.0

docker ps : affiche les conteneurs en cours d'exécution

Exemple : docker ps

docker ps -a : affiche tous les conteneurs, même arrêtés


Exemple : docker ps -a

docker images : liste toutes les images locales disponibles


Exemple : docker images

docker exec : exécute une commande dans un conteneur actif


Exemple : docker exec -it monconteneur bash

docker stop : arrête un conteneur en cours d’exécution


Exemple : docker stop monconteneur

docker rm : supprime un ou plusieurs conteneurs


Exemple : docker rm monconteneur

docker rmi : supprime une ou plusieurs images

Exemple : docker rmi monimage:1.0

docker login : connecte l’utilisateur à un registre Docker

Exemple : docker login

docker logout : déconnecte l’utilisateur du registre Docker

Exemple : docker logout

d : exécute le conteneur en arrière-plan (mode détaché)

Exemple : docker run -d nginx

p : publie un port de l'hôte vers le conteneur (port_hôte:port_conteneur)

Exemple : docker run -p 8080:80 nginx

DevOps 7
P (majuscule) : publie automatiquement un port aléatoire de l'hôte vers le
port exposé du conteneur

Exemple : docker run -P nginx

-name : donne un nom personnalisé au conteneur

Exemple : docker run --name monconteneur nginx

it : combine i (mode interactif) et t (allocation de pseudo-TTY) pour une


interaction avec le terminal

Exemple : docker run -it ubuntu bash

-rm : supprime automatiquement le conteneur à la fin de son exécution

Exemple : docker run --rm ubuntu echo "Bonjour"

v : monte un volume (liens entre dossier hôte et conteneur)

Exemple : docker run -v /host/data:/app/data ubuntu

-env ou e : définit une variable d’environnement dans le conteneur

Exemple : docker run -e APP_ENV=production nginx

-network : connecte le conteneur à un réseau Docker spécifique

Exemple : docker run --network monreseau nginx

-detach (équivalent à d ) : exécute le conteneur en arrière-plan

Exemple : docker run --detach nginx

-restart : définit la politique de redémarrage automatique du conteneur

Exemple : docker run --restart=always nginx

4. CI/CD (Intégration et Déploiement Continus)


CI (Continuous Integration) :

Tests automatiques

Packaging

Détection rapide des bugs

Compilation code

DevOps 8
Tests d’integration

gestion de versions

CD (Delivery & Deployment) :

Delivery : prêt à être déployé

Deployment : déploiement automatique

Stratégies de déploiement :

Rolling Upgrade : les modifications sont régulièrement déployées de


manière à ne pas avoir d'impact sur les utilisateurs actuels, et personne ne
devrait avoir à réinstaller le logiciel.

Canary Pipeline : La nouvelle version est déployée à un sous-ensemble


d'utilisateurs. Si ces
utilisateurs rencontrent des problèmes, les modifications peuvent être
facilement annulées. Sinon seront depoloyées

Blue/Green deployment :un environnement entièrement nouveau (bleu) est


créé avec le nouveau code, mais l'ancien environnement (vert) est
conservé en réserve.

Avantages CI/CD:

Intégration avec des méthodologies agiles

MTTR (Shorter Mean Time To Resolution)

Déploiement automatisé

Libérations de fonctionnalités moins perturbatrices

DevOps 9
Amélioration de la qualité

Temps de mise sur le marché amélioré

5. Réseaux et Sécurité
Pare-feu :

Filtrage IP/ports

Jump box pour l’accès sécurisé

Équilibreur de charge : LoadBalancer

Répartition du trafic

Méthodes : Round robin, session persistante, Hash IP

DevOps 10
DevOps 11
DNS :

Traduction nom <-> IP

Reverse Proxy :
[Link]

Centralise les réponses serveur

Peut faire pare-feu ou load balancer

Chapitre 4 : Infrastructure et
automatisation

DevOps 12
1. Objectifs du Module
Comprendre les méthodes de test et déploiement dans des environnements
automatisés.

Utiliser des outils comme Ansible, Puppet, Chef.

Appliquer les concepts de DevOps, Infrastructure as Code, CI/CD,


automatisation des tests et simulation réseau.

Réaliser plusieurs TPs comme : installation d’un serveur Web avec Ansible,
sauvegarde de configurations réseau, ou test réseau avec PyATS.

2. Automatisation de l’infrastructure avec Cisco


Définition
L'automatisation utilise du code pour configurer, déployer et gérer applications
et infrastructure (réseau, stockage, calcul).

Niveaux d’automatisation (Cisco)


Walk : lecture seule, collecte d’infos, audit de configuration, Automation
Exchange pour progression de vol a pied.

Run : activation et application de politiques, libre-service réseau sécurisé.

Fly : automatisation avancée avec CI/CD, télémétrie, surveillance proactive,


gestion proactive des applications.

Raisons d’adopter l'automatisation


Réduction des erreurs humaines.

Rapidité et agilité.

Réduction des coûts d’exploitation.

Écosystèmes complexes : microservices, APIs, cloud.

Risques de dependances

Automatisation Full Stack


Avantages :

DevOps 13
Self-service: Automatisation fournit des structures en libre-service qui
permettent aux utilisateurs de demander une infrastructure à la demande.

Scalabilité dynamique: Les applications et les plateformes doivent pouvoir


évoluer vers le haut et vers le bas en fonction des besoins de trafic et de
charge de travail et utiliser une capacité hétérogène

Observabilité (inférer l’état du système).

Automated problem mitigation: les applications et les plateformes doivent


être conçues de manière à minimiser les effets des problèmes, à s'auto-
soigner et à surveiller les événements.

DevOps 14
3. DevOps et SRE (Site Reliability Engineering)
Origine
Collaboration renforcée entre Développement (Dev) et Exploitation (Ops).

SRE : introduit chez Google (2003), concepts : SLO/SLI, tolérance à l’échec.

Comparaison Dev / Ops

Concepts clés
SLA (service level agreement)

DevOps 15
SLI (service level indicator): indicateurs (e.g. taux d’erreur, latence) calculer
la conformité avec le SLO

SLO (service level objective): objectifs (e.g. 99.9% disponibilité) c’est


comme un promis que tu fais au client

⇒ So, for example, if your SLA specifies that your systems will be available
99.95% of the time, your SLO is likely 99.95% uptime and your SLI is the actual
measurement of your uptime. Maybe it’s 99.96%. Maybe 99.99%. To stay in
compliance with your SLA, the SLI will need to meet or exceed the promises
made in that document.

Budget d'erreurs : seuil d’échecs tolérés dans une période donnée

4. Scripts d’automatisation de base


Outils :
Shell/Bash : script historique, exécution simple, le bash est un shell Unix.

Python : structuration, gestion d’API, JSON, erreurs, parallélisme.

DevOps 16
Exécution locale ou distante
Méthodes :

scp + ssh pour transférer et exécuter

cat [Link] | ssh user@ip pour exécution directe

Récupération via wget / curl ou dépôt Git

Interface Web, VNC, NoMachine pour GUI

Injection via infrastructure cloud CLI

Idempotence
Capacité d’un script à être exécuté plusieurs fois sans effets secondaires :

Vérifie si l’état voulu est déjà atteint

Implémenté dans Ansible, Chef, Puppet

5. Automatisation du cloud
Capacité :
Provisionner VMs, réseaux virtuels

Déployer apps automatiquement

Scripts bash/python avec SDKs ou CLI

DevOps 17
Exemples d’outils:

6. Outils d’automatisation
Objectifs :
Simplification et standardisation

Réutilisabilité

Gestion d’inventaire, découverte

Gestion du scale

Séparation des rôles

Concepts fondamentaux
Idempotence: Un logiciel Idempotent produit le même résultat
souhaitable chaque fois qu'il est exécuté.

Procédural vs Déclaratif

Procédural : script qui décrit comment faire

Déclaratif : décrit l’état final souhaité, l’outil adapte les actions

Statelessness : pas de dépendance à l’état local (ex: base distante)

DevOps 18
Provisioning, Configuration, Déploiement, Orchestration

DevOps 19
Comparatif des outils

Ansible
Langage : YAML (fichiers .yml qui contiennent une sequence de taches)

Exécution : SSH, pas besoin d’agent

Playbook: peut être écrit comme un document monolithique avec une


série de tâches nommées et modulaires.

Les projets ansibles sont organisés dans une structure de répertoire imbriquée.
La hiérarchie est facilement placée sous contrôle de version et utilisée pour
l'infrastructure de style GITOPS en tant que code
Il existe des défis de taille pour les grandes entreprises, tels que la gestion et le
contrôle de l'accès à de nombreux nœuds Ansible de manière flexible et
sécurisée. Cela inclut également la mise en place de contrôleurs à distance en
toute transparence et en toute sécurité sous le contrôle de 'automatisation
centralisée de l'entreprise.
• Pour cela, il existe deux solutions de plan de contrôle : Red Hat Ansible Tower
et AWX projet.
Cisco Ansible:

Un très grand ensemble de modules intégrés pour configurer les structures


d'infrastructure Cisco orientée application via le contrôleur APIC
(Application Policy Infrastructure Controller).

Contrôle à distance des périphériques réseau Cisco exécutant IOS-XR, ainsi


que des modules pour l'envoi de commandes et la récupération des
résultats de ces périphériques via l'interface CLI ou via l'interface REST
standard de NETCONF.

Modules ansibles pour configurer l'infrastructure Cisco UCS via l'interface


REST Intersight.

DevOps 20
Installation :

sudo apt install ansible

Fichier d’inventaire :

[webservers]
[Link]

Exécution :

ansible-playbook -i inventory [Link] -u utilisateur -K

DevOps 21
DevOps 22
DevOps 23
Puppet
Introduit en 2005

Architecture : serveur maître + agents

Fonctionne avec DSL déclaratif

DevOps 24
Chef
Moins de 25 nœuds gratuits

Chef Workstation, Chef Infra Server

Communication via recettes, cookbooks, ressources

Caracteristiques:

Facile a apprendre

disponible en open source

Les plugins et les adaptateurs leur permettent de contrôler directement ou


indirectement de
nombreux types de ressources

DevOps 25
7. Infrastructure as Code (IaC)
GitOps
L’infrastructure est décrite et versionnée comme du code (Git)

Branches : dev, test, prod

Déploiements bleu/vert :

Deux environnements

Redirection de trafic

Possibilité de rollback rapide

Tests canaris :

Déploiement progressif par utilisateur

Réduction des risques

DevOps 26
8. Automatisation des tests
Tests unitaires (TDD)
Exemple : pytest pour Python

Intégrés au CI/CD (ex : Jenkins)

Tester les réseaux définis par logiciel (SDN)


Cisco a réalisé d'énormes progrès dans le développement de réseaux définis
par logiciel (SDN) et de middleware qui permettent aux ingénieurs d'aborder un
réseau physique en tant qu'entité programmable unique. Dans le cas de Cisco,
cela inclut :
• Infrastructure centrée sur les applications (ACI)
• Centre d'architecture de réseau numérique (Cisco DNA Center)
• L'API REST et les kits SDK permettent l'intégration avec des outils
d'automatisation comme Ansible, Puppet et Chef

pyATS & Genie (Cisco)

pyATS
Python Automated Test System (PyATS) est une solution de test et de validation
de périphériques réseau basée sur Python.
• PYATS est né comme base Python de bas niveau pour le système de test
dans son ensemble.
• Son système de bibliothèque de niveau supérieur, Génie, fournit les API et les
bibliothèques nécessaires qui pilotent et
interagissent avec les périphériques réseau, et effectuent les tests réels.

Le framework et les bibliothèques PyATS peuvent être exploités dans n'importe


quel code Python.
• Il est modulaire et comprend des composants tels que AETest et Easypy.
• Une CLI permet d'interroger rapidement les réseaux en direct, d'extraire les
faits et d'automatiser l'exécution des scripts de test et d'autres analyses
médico-légales.
• PYATS fournit une énorme bibliothèque d'interfaces à Cisco et à d'autres

DevOps 27
infrastructures via une gamme d'interfaces.
• PyATS peut consommer, analyser et implémenter des topologies décrites
dans JSON, en tant que modèles YANG et à partir d'autres sources.
• PYATS peut également être intégré avec des outils d'automatisation pour la
construction, le provisionnement et le démontage.

Commandes utiles :
Création venv :

python3 -m venv monenv


source monenv/bin/activate

Installation :

pip install pyats genie

Exemple de fichier [Link] :

devices:
csr1:
os: iosxe
type: router
connections:
cli:
protocol: ssh
ip: [Link]

Genie :
Surcouche pour pyATS

Fournit des outils pour interrogation réseau, comparaison de configs

9. Travaux Pratiques (TPs)


TP8 (obligatoire) : Automatiser l'installation d'un serveur Web avec Ansible

DevOps 28
Autres TPs :

Sauvegarde et config de périphériques avec Ansible

Tests automatisés avec pyATS et Genie

Installer CSR1000v

Conclusion
Ce module insiste sur l’importance de l’automatisation dans les
environnements modernes. Il met en avant :

L’intégration d’outils open source (Ansible, Puppet, Chef)

La structuration de l’infrastructure comme du code

L’usage d’API, tests automatisés, et d’approches DevOps/SRE

L'importance des scripts fiables, idempotents, versionnés

IMPORTANT:
LIRE LES TPs 6 ET 7 ET 9
docker + jenkins + ansible

DevOps 29

Vous aimerez peut-être aussi