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

DEVOPS - Module - 9 - Infrastructure Et Automatisation - LAB 7

Transféré par

Hamza Saadaoui
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 PPTX, PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
375 vues85 pages

DEVOPS - Module - 9 - Infrastructure Et Automatisation - LAB 7

Transféré par

Hamza Saadaoui
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 PPTX, PDF, TXT ou lisez en ligne sur Scribd

Module 9: Automatisation des

Infrastructures
Module 9: Automatisation des
Infrastructures

9.1 Automatisation de l'infrastructure


9.2 Les scripts d'automatisation de base
9.3 Les outils d'automatisation
9.4 Infrastructure en tant que code
9.5 Automatisation des tests
9.6 Simulation de réseau
Objectifs du module
Titre du module : Infrastructure et automatisation
Objectif du module : Comparer les méthodes de test et de déploiement de logiciels dans des
environnements d'automatisation et de simulation.

Titre du Rubrique Objectif du Rubrique


Automatisation de l'infrastructure Décrire les environnements de déploiement qui bénéficient de l'automatisation.
avec Cisco
Scripts d'automatisation de base Décrire l'utilisation des scripts dans le cadre de l'automatisation.

Outils d'automatisation Expliquer les outils d'automatisation qui accélèrent le développement et le déploiement du
code.
L'infrastructure comme code Expliquer les bénéfices du stockage de l'infrastructure en tant que code.

Automatisation des tests Expliquer comment les outils d'automatisation permettent de tester les déploiements
d'applications.
Simulation de réseau Décrire l'utilisation de l'environnement de test de simulation d'un réseau Cisco VIRL.

© 2020 Cisco et/ou ses filiales. Tous droits réservés. Informations


confidentielles de Cisco 3
Module 9 : Activités
Quelles sont les activités associées à ce module?

N° de page Type d'exercice Nom de l'exercice Facultatif ?

7.0.3 de prototypage Installer la machine virtuelle CSR1000v Recommandation

7.4.7 de prototypage Utiliser Ansible pour Sauvegarder et configurer un périphérique Recommandation

7.4.8 de prototypage Utiliser Ansible pour automatiser l'installation d'un serveur Web Recommandation

7.6.3 de prototypage Test automatisé avec PYATS et Génie Recommandation

© 2020 Cisco et/ou ses filiales. Tous droits réservés. Informations


confidentielles de Cisco 4
Introduction à l'infrastructure et à l'automatisation
Travaux pratiques - Installer la VM CSR1000v
Dans cette section de ce module, vous aurez deux laboratoires qui nécessitent une machine
virtuelle différente.
Au cours de ces travaux pratiques, vous aborderez les points suivants :
• Partie 1 : Installer la machine virtuelle DEVASC-LAB sur VirtualBox

• Partie 2 : Installer la machine virtuelle CSR1000v sur VirtualBox

• Partie 3 : Vérifier les communications avec la machine virtuelle CSR1000v

© 2020 Cisco et/ou ses filiales. Tous droits réservés. Informations


confidentielles de Cisco 5
9.1 Automatisation de
l'infrastructure

© 2020 Cisco et/ou ses filiales. Tous droits réservés. Informations


confidentielles de Cisco 6
Infrastructure et automatisation
Introduction à l'automatisation de l'infrastructure
• L'automatisation utilise du code pour configurer, déployer et gérer les applications ainsi que
les infrastructures et les services de calcul, de stockage et de réseau sur lesquels elles
s'exécutent.
• Lorsque vous comprenez ce qu'est l'automatisation et ce qu'elle peut faire pour vous, vous
serez prêt à visiter le Cisco DevNet Automation Exchange pour explorer des solutions qui
peuvent vous aider.

© 2020 Cisco et/ou ses filiales. Tous droits réservés. Informations


confidentielles de Cisco 7
Infrastructure et automatisation
Risques dans les environnements déployés et gérés
manuellement.

Inconvénients des opérations manuelles

• Ajoutent du coûts, prennent du temps et sont difficiles à mettre à l'échelle.


• Sont sujets à l'erreur humaine, et la documentation destinée aux humains est souvent incomplète et
ambiguë, difficile à tester et rapidement dépassée.

Coûts financiers

• Les pannes et les violations sont le plus souvent causées lorsque les systèmes sont mal configurés.
Cela est souvent dû à une erreur humaine lors de modifications manuelles. Selon une statistique
souvent citée par Gartner (à partir de 2014), le coût moyen d'une panne informatique est supérieur
à 5 600 USD par minute, soit plus de 300 000 USD par heure. Le coût d'une atteinte à la sécurité
peut être encore plus élevé.
© 2020 Cisco et/ou ses filiales. Tous droits réservés. Informations
confidentielles de Cisco 8
Infrastructure et automatisation
Risques dans les environnements déployés et gérés
manuellement.

Risques de dépendance

• L'écosystème logiciel d'aujourd'hui est décentralisé. Les développeurs n'ont plus besoin de créer et
de gérer des solutions monolithiques et complètes. Au lieu de cela, ils se spécialisent en
construisant des composants individuels en fonction de leurs besoins et de leurs intérêts. Les
développeurs peuvent combiner les autres composants, l'infrastructure et les services nécessaires
pour mettre en place des solutions complètes et les exploiter efficacement à grande échelle.
Cet écosystème introduit de nouvelles exigences et de nouveaux risques:
• Les composants doivent être en mesure de travailler avec de nombreux autres composants dans de
nombreuses situations différentes.
• Les développeurs de composants peuvent abandonner la prise en charge des fonctionnalités
obsolètes et des intégrations rarement rencontrées. Cela perturbe les processus qui dépendent de
ces fonctionnalités.
• Les configurations d'applications dépendantes ont tendance à se verrouiller dans des piles de
déploiement fragiles et de plus en plus insécurisées.
© 2020 Cisco et/ou ses filiales. Tous droits réservés. Informations
confidentielles de Cisco 9
Infrastructure et automatisation
Pourquoi avons-nous besoin de l'automatisation ?
 L'automatisation de l'infrastructure peut offrir de nombreux avantages. Ceux-ci sont résumés comme la
vitesse et la capacité de travailler à grande échelle, avec un risque réduit.
 L'automatisation est un composant clé de :

1- l'infrastructure fonctionnelle définie par logiciel

2- des applications distribuées et dynamiques.


 Les avantages de l'automatisation :

• Self-service
• Scale on demand
• Observability
• Automated problem mitigation

© 2020 Cisco et/ou ses filiales. Tous droits réservés. Informations


confidentielles de Cisco 10
Infrastructure et automatisation
Pourquoi avons-nous besoin de l'automatisation?
• Self-service :

 Les structures libre-service automatisées permettent aux utilisateurs de demander une infrastructure à la
demande, notamment:
 Composants d'infrastructure standard tels que les instances de base de données et les terminaux VPN

 Plateformes de développement et de test

 Serveurs Web renforcés et autres instances d'application, ainsi que les réseaux isolés et l'accès Internet
sécurisé qui les rendent utiles, sécuritaires et résistants aux erreurs
 Plateformes d'analyse telles que Apache Hadoop, Elastic Stack, InfluxData et Splunk

© 2020 Cisco et/ou ses filiales. Tous droits réservés. Informations


confidentielles de Cisco 11
Infrastructure et automatisation
Pourquoi avons-nous besoin de l'automatisation?
• Scale on demand:

• 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.
• Un exemple est la mise à l'échelle du cloud privé au cloud public et la mise en forme appropriée du
trafic.
• Les plates-formes cloud peuvent fournir la possibilité de mettre à l'échelle automatiquement (mise
à l'échelle automatique) des machines virtuelles, des conteneurs ou des charges de travail sur une
infrastructure sans serveur.

© 2020 Cisco et/ou ses filiales. Tous droits réservés. Informations


confidentielles de Cisco 12
Infrastructure et automatisation
Pourquoi avons-nous besoin de l'automatisation?
• Observability:

• Un système observable permet aux utilisateurs d'inférer l'état interne d'un système complexe à
partir de ses sorties.
• L'observabilité (abrégée en o11y) peut être obtenue grâce à la surveillance des plateformes et des
applications.
• L'observabilité peut également être obtenue grâce à des tests proactifs de production pour les
modes de défaillance et les problèmes de performance. Mais, dans une opération dynamique qui
inclut la mise à l'échelle automatique et d'autres comportements d'application, la complexité
augmente et les entités deviennent éphémères.
• Un rapport récent du fournisseur de framework d'observabilité DataDog, indique que la durée de
vie moyenne d'un conteneur sous orchestration n'est que de 12 heures; les microservices et les
fonctions ne peuvent fonctionner que pendant quelques secondes. Les entités éphémères
observables et les tests en production ne sont possibles qu'avec l'automatisation.
© 2020 Cisco et/ou ses filiales. Tous droits réservés. Informations
confidentielles de Cisco 13
Infrastructure et automatisation
Pourquoi avons-nous besoin de l'automatisation?
• Automated problem mitigation:

 Certains fabricants de logiciels et experts en observabilité recommandent ce que l'on appelle Chaos Engineering. Cette
philosophie repose sur l'affirmation selon laquelle la défaillance est normale: au fur et à mesure que les applications
évoluent, certaines pièces échouent toujours. Pour cette raison, les applications et les plates-formes doivent être conçues
pour:

 Minimiser les effets des problèmes : Reconnaître rapidement les problèmes et acheminer le trafic vers d'autres capacités,
en veillant à ce que les utilisateurs finaux ne soient pas gravement touchés et à ce que le personnel des opérations de
garde ne soit pas inutilement paginé.

 l'auto-guérison : Allouez les ressources en fonction de la stratégie et redéployez automatiquement les composants
défectueux selon les besoins pour rétablir l'état sain de l'application dans les conditions actuelles.

 Suivre les événements : Souvenez-vous de tout ce qui a mené à l'incident, afin que les corrections puissent être planifiées
et que des post-mortems puissent être effectués.

 Certains défenseurs de Chaos Engineering préconisent même l'utilisation d'outils d'automatisation pour provoquer des
défaillances contrôlées (ou aléatoires) dans les systèmes de production. Cela met continuellement au défi Dev et Ops
d'anticiper les problèmes et de renforcer la résilience et la capacité d'auto-guérison. Les projets open source tels que Chaos
Monkey et les plateformes «Failure-as-a-Service» comme Gremlin sont spécialement conçus pour briser les choses, à la
fois au hasard et de manière beaucoup plus contrôlée et empirique. Une discipline © 2020émergente est
Cisco et/ou ses filiales. appelée
Tous droits "test d'injection
réservés. Informations
confidentielles de Cisco 14
d'échec"
Infrastructure et automatisation
Solutions d'automatisation
Il existe plusieurs cas d'utilisation pour l'automatisation du réseau. Selon le modèle opérationnel à suivre, il
existe des choix pour contrôler par programme les configurations et l'infrastructure réseau.
Run : Activer des politiques et Fly: Déployer des applications,
Walk: Automatisation en lecture
fournir un libre-service dans des configurations réseau et
seule
plusieurs domaines bien plus encore via CI/CD
• Grâce aux outils • Avec ces scénarios • Pour des automatismes plus
d'automatisation, vous pouvez d'automatisation de l'étape complexes et des exemples
collecter des informations sur Exécuter, les utilisateurs programmables, le stage Fly
la configuration du réseau. peuvent provisionner leurs de DevNet Automation
• On peut utiliser un scénario de propres mises à jour réseau en Exchange est utilisé.
lecture pour auditer les toute sécurité. • Ici, les besoins peuvent être
configurations et effectuer • Les workflows d'intégration gérés en surveillant et en
l'étape naturelle suivante, qui peuvent être automatisés, les gérant de manière proactive
consiste à remettre la configurations réseau les utilisateurs et les appareils,
configuration en conformité. quotidiennes peuvent être tout en obtenant des
• Dans Automation Exchange, gérées et les scénarios informations sur les données
ce changement est classé quotidiens peuvent être de télémétrie.
comme une progression de vol imprégnés.
à pied. © 2020 Cisco et/ou ses filiales. Tous droits réservés. Informations
confidentielles de Cisco 15
Infrastructure et automatisation
un argument pour l'automatisation : Infrastructure définie par
logiciel
L'infrastructure définie par logiciel est également connue sous le nom de Cloud Computing. Il permet aux
développeurs et aux opérateurs d'utiliser le logiciel pour réquisitionner, configurer, déployer et gérer des
ressources de calcul, de stockage et des réseaux virtualisés.

Avantages des paradigmes du cloud • Self-service (plateformes sur demande)


• Spécification étroite, cohérence, répétabilité
• Abstraction de plateforme
Défis rencontrés dans les • Les développeurs doivent prêter une attention particulière à
paradigmes du cloud la conception, à l'architecture et à la sécurité de la
plateforme.
• Le contrôle d'accès est essentiel car les utilisateurs de
cloud disposant de mauvaises autorisations peuvent
endommager considérablement les ressources de leur
organisation.
• Lorsque les ressources cloud peuvent être rapidement
desservies via des opérations manuelles, la consommation
peut être difficile à gérer ©confidentielles
et les decoûts
Cisco sont difficiles à
2020 Cisco et/ou ses filiales. Tous droits réservés. Informations
16

calculer.
Infrastructure et automatisation
un argument pour l'automatisation : Applications distribuées et
dynamiques.
 Les architectures d'application «monolithiques» mono-serveur, bien que conceptuellement simples, ne
répondent pas très bien à ces besoins. Un serveur est un point de défaillance unique, limite les
performances et la capacité et dispose d'une capacité de mise à niveau limitée. La duplication d'un seul
serveur peut augmenter la capacité des applications très simples, mais ne fonctionne pas pour les
applications nécessitant une cohérence des données sur toutes les instances. Et il ne protégera pas les
données utilisateur en cas de défaillance sur le serveur sur lequel résident leurs données.
 Pour ces raisons et pour d'autres, les architectures d'applications modernes sont de plus en plus
distribuées. Ils sont construits à partir de composants petits et relativement légers que l'on appelle
parfois des microservices. Ces composants peuvent être isolés dans des conteneurs, connectés via
des services de découverte et de messagerie (dont la connectivité réseau abstraite) et soutenus par des
bases de données résilientes et évolutives (qui conservent l'état).

© 2020 Cisco et/ou ses filiales. Tous droits réservés. Informations


confidentielles de Cisco 17
© 2020 Cisco et/ou ses filiales. Tous droits réservés. Informations
confidentielles de Cisco 18
Infrastructure et automatisation
un argument pour l'automatisation : Applications distribuées et
dynamiques.
Avantages des microservices : Défis des microservices:
• Évolutivité (Scalability)- les microservices • Complexité accrue - Les microservices
peuvent être mis à l'échelle et équilibrés la signifient qu'il y a beaucoup de pièces
charge selon les besoins sur de nombreux mobiles à configurer et à déployer. Il existe
serveurs en réseau ou plusieurs régions de des opérations plus exigeantes, notamment
cloud public géographiquement séparées. la mise à l'échelle à la demande, l'auto-
This eliminates single points of failure. guérison et d'autres fonctionnalités.
• Outils d'automatisation de • L'automatisation est une exigence - les
l'infrastructure- De plus en plus, le méthodes manuelles ne peuvent pas faire
dynamisme des applications basées sur des face de manière réaliste à la complexité du
microservices est assuré par l'infrastructure. déploiement et de la gestion des applications
Ces conteneurs automatisent la mise à dynamiques.
l'échelle à la demande, l'auto-guérison et
plus encore.

© 2020 Cisco et/ou ses filiales. Tous droits réservés. Informations


confidentielles de Cisco 19
Automatisation & DevOps
• Pour que l'automatisation soit vraiment efficace, elle nécessite des changements dans la
culture organisationnelle, y compris la réduction des divisions historiques entre le
développement (Dev Team) et les opérations (Ops Team).
• Historiquement, la création d'applications était le travail des développeurs de logiciels (equipe
Dev), et l’assurance que les applications fonctionnent convenablement était le travail des
opérations informatiques (équipe Ops).

© 2020 Cisco et/ou ses filiales. Tous droits réservés. Informations


confidentielles de Cisco 20
Infrastructure et automatisation
Résumé sur l'automatisation de l'infrastructure
Ces besoins commerciaux et techniques, Ces nouvelles tendances encouragent les
développeurs et les opérateurs à utiliser l'automatisation partout pour les tâches suivantes :
• Gérez toutes les phases de création, de configuration, de déploiement et de gestion du
cycle de vie des applications. Cela inclut le codage, les tests, la mise en scène et la
production.
• Gérez les infrastructures définies par logiciel.
• Gérez les applications basées sur des microservices
 L'automatisation aide à développer, tester, mettre en scène, surveiller et exploiter les
applications à des échelles de production et dans divers environnements
 Cependant, nous avons besoin de préserver, mettre à jour et améliorer continuellement le
code (Script) d'automatisation.

© 2020 Cisco et/ou ses filiales. Tous droits réservés. Informations


confidentielles de Cisco 21
9.2 Les scripts
d'automatisation

© 2020 Cisco et/ou ses filiales. Tous droits réservés. Informations


confidentielles de Cisco 22
Scripts d'automatisation de base
Introduction aux scripts d'automatisation de base
• Des outils d'automatisation puissants comme Ansible, Puppet et Chef apportent facilité
d'utilisation, prévisibilité, discipline et capacité à travailler à grande échelle au travail DevOps
 Mais cela ne signifie pas que vous ne pouvez pas faire d'automatisation avec des
outils plus basiques comme Bash ou quelques langages de programmation
sophistiqués comme Python.
• Bien que les outils d'automatisation se focalise sur le développement des fonctionnalités
shell, les utilitaires du système d'exploitation, les fonctions API et d'autres éléments du plan
de contrôle pour garantir simplicité, uniformité et compatibilité, ces outils d’automatisation
ne résolvent toujours pas tous les problèmes de déploiement et de configuration.
• C'est pourquoi chaque outil d'automatisation dispose d'une ou plusieurs fonctions qui
exécutent des commandes et des scripts de base sur les cibles et renvoient les
résultats.
• Il est donc important d'avoir des compétences de base en matière de script d'automatisation.
© 2020 Cisco et/ou ses filiales. Tous droits réservés. Informations
confidentielles de Cisco 23
Scripts d'automatisation de base
Scripts d'automatisation de base
Les shells sont omniprésents, donc le script shell est historiquement le socle de l'automatisation.

Bash
• Le Bash est un shell Unix par défaut sur la plupart des distributions Linux et sur macOS. L'utilisation de
commandes dans un script Bash est similaire à celle qu’on utilise directement à partir de la ligne de
commande.
• Bash peut être utilisé pour l'accès par script à l'interface de ligne de commande AWS, vous pouvez utiliser
les fonctionnalités intégrées et les bibliothèques de langages plus sophistiqués pour analyser des jeux de
données complexes retournés (tels que JSON), gérer de nombreuses opérations parallèles, traiter des
erreurs, gérer les réponses asynchrones aux commandes, etc.

Les langages de programmation


• Les langages sophistiqués s'améliorent sur Bash lorsque la complexité et les exigences d'échelle augmentent. Ils
sont particulièrement utiles lors de la création et de l'exploitation d'infrastructures virtualisées dans des
environnements cloud, à l'aide de kits SDK tels que AWS SDK pour Python ou AWS SDK pour javascript dans
[Link]. Bien que Bash puisse être utilisé pour l'accès par script à l'interface de ligne de commande AWS, vous
pouvez utiliser les fonctionnalités intégrées et les bibliothèques de langages plus sophistiqués pour analyser des
jeux de données complexes retournés (tels que JSON), gérer de nombreuses © 2020 Cisco opérations parallèles,
et/ou ses filiales. Tous droits
confidentielles de Cisco
traiter des24
réservés. Informations

erreurs, gérer les réponses asynchrones aux commandes, etc.


Scripts d'automatisation de base
Automatisation par procédures
 Utiliser Bash, Python ou d'autres langages sophistiqués pour l'automatisation signifie généralement écrire une procédure
impérative. Une procédure impérative est une séquence ordonnée de commandes visant à atteindre un objectif. La
séquence peut inclure le contrôle du débit, les conditions, la structure fonctionnelle, les classes et plus encore.

 Une telle automatisation procédurale peut être très puissante. Mais cela ne reste simple que si vous êtes au courant de la
façon dont les utilitaires système et d'autres interfaces fonctionnent. Vous devez connaître obligatoirement l'état du système
cible.

 Élaboration d'une procédure

 Si vous faites un petit script pour installer et configurer un logiciel sur un système cible distant, il peut fonctionner
correctement la première fois. Exécutez-le une deuxième fois cependant; et votre script simple pourrait faire un désordre. Il
peut lancer une erreur et s'arrêter quand il trouve l'application déjà installée, ou pire, ignorer une telle erreur, et continuer à
apporter des modifications redondantes dans les fichiers de configuration. Pour rendre ce script plus sûr, plus facile à
utiliser, plus flexible et réutilisable, vous devez le rendre plus intelligent et plus élaboré.

 Par exemple, vous pouvez l'améliorer pour:

 Déterminez si votre application cible est déjà installée dans une version appropriée et essayez de l'installer uniquement si
elle n'est pas présente.

 Déterminez s'il a fait une copie de chaque fichier de configuration avant de le modifier, et utilisez des éditeurs pour apporter
des modifications précises. © 2020 Cisco et/ou ses filiales. Tous droits réservés. Informations
confidentielles de Cisco 25
Scripts d'automatisation de base
Objectif Automatisation par procédures
Les procédures sont développées afin qu‘elles accomplissent certaines des tâches suivantes:

 Découvrez, inventoriez et compilez des informations sur les systèmes cibles, et assurez-vous que les scripts le font
correctement.

 Encapsuler la complexité de l'installation des applications en toute sécurité.

 Effectuez des sauvegardes et des modifications de fichiers de configuration, et redémarrez les services dans des
formulaires réutilisables, tels que des scripts secondaires contenant des paramètres, des bibliothèques de fonctions et
d'autres informations.

Pour vous assurer que les scripts sont efficaces et réutilisables, vous devez:

 Normaliser l'ordre et la présentation des paramètres, des indicateurs et des erreurs.

 Créer une hiérarchie de code qui divise les tâches de manière logique et efficace.

 Créer des scripts de haut niveau pour des déploiements entiers et des scripts de niveau inférieur pour les phases de
déploiement.

 Séparer les données spécifiques au déploiement du code, ce qui rend le code aussi générique et réutilisable que possible.
© 2020 Cisco et/ou ses filiales. Tous droits réservés. Informations
confidentielles de Cisco 26
Scripts d'automatisation de base
Automatisation par procédures
Exemple de script procédural simple

Le type du 3 ieme script a tendance à être dangereux si l'état de démarrage n'est pas complètement connu et contrôlé.
L'application des mêmes modifications à un système correctement configuré peut même le casser.

© 2020 Cisco et/ou ses filiales. Tous droits réservés. Informations


confidentielles de Cisco 27
Scripts d'automatisation de base
Automatisation des procédures
 Idempotency: une caractéristique primordiale dans l'automatisation

 le but des scripts d’automatisation est d'atteindre l'état souhaité dans un système, quelles que soient les conditions de
démarrage. Des scripts procéduraux et des outils de configuration déclarative soigneusement rédigés examinent les
cibles avant d'effectuer des tâches sur elles, en effectuant uniquement les tâches nécessaires pour l'obtention de
l'état souhaité.

 Cette qualité des scripts est appelée idempotency. Les principes fondamentaux de idempotency:

 Assurez-vous que le changement que vous souhaitez apporter n'a pas déjà été fait - Également connu sous le
nom de "Tout d'abord, ne faites pas de mal (First, do no harm)". Ne rien faire est presque toujours un meilleur choix
que de faire quelque chose de faux et peut-être irrécupérable.

 Accéder à un état dont le fonctionnement a été vérifié avant d'apporter des modifications. Par exemple, vous
devrez peut-être supprimer et purger les versions antérieures des applications avant d'installer des versions
ultérieures. Dans les environnements de production infra-as-code, ce principe devient la base de l'immuabilité.
L'immuabilité est l'idée que les changements ne sont jamais faits sur les systèmes en direct. Au lieu de cela, modifiez
l'automatisation et utilisez-la pour créer des composants flambant neufs, dont le fonctionnement a été vérifié.

 Test d'idempotency:

 Tous les composants d'une procédure doivent être idempotent – seulement si tous les composants d'une
procédure sont idempotents que la procédure dans son ensemble peut l’être. © 2020 Cisco et/ou ses filiales. Tous droits réservés. Informations
confidentielles de Cisco 28
© 2020 Cisco et/ou ses filiales. Tous droits réservés. Informations
confidentielles de Cisco 29
Scripts d'automatisation de base
Automatisation du cloud
 Les infrastructures de cloud computing IaaS (Infrastructure-as-a-Service) sont une cible typique de
l'automatisation. L'automatisation du cloud vous permet de provisionner des hôtes virtualisés, de configurer des
réseaux virtuels et d'autres services de connectivité, de réquisition, puis de déployer des applications sur cette
infrastructure.
 Les fournisseurs de cloud et les communautés open source fournissent souvent des sous-systèmes spécialisés
pour les outils de déploiement populaires. Ces sous-systèmes extraient un inventaire complet des ressources
d'un framework cloud et le maintiennent à jour en temps réel pendant que l'automatisation apporte des
modifications, ce qui vous permet d'écrire plus facilement l'automatisation pour gérer ces ressources.
 Vous pouvez également gérer les ressources cloud à l'aide de scripts écrits en Bash, Python ou dans d'autres
langues. De tels scripts sont aidés par de nombreux outils qui simplifient l'accès aux cibles d'automatisation.
Notamment:
 Les CLI et les kits de développement logiciel (SDK) qui enveloppent des API REST et d'autres interfaces du
matériel, des entités d'infrastructure virtuelle, des plans de contrôle d'ordre supérieur et des API de cloud. Cela
rend leurs fonctionnalités accessibles depuis les shells (scripts Bash) et dans les programmes Python.
 Les outils de ligne de commande et les analyseurs intégrés de Python peuvent analyser les sorties JSON et
YAML renvoyées par les CLI et les SDK dans des formats simples pour une manipulation facile.
© 2020 Cisco et/ou ses filiales. Tous droits réservés. Informations
confidentielles de Cisco 30
Scripts d'automatisation de base
Automatisation du cloud - Cloud CLI et SDK
Les IaaS et d'autres types de cloud d'infrastructure fournissent également des CLI et des SDK qui permettent
une connexion facile à leurs interfaces sous-jacentes, généralement basées sur REST. Nous présentons dans
cette sections les solutions de CiscoUCS – Vmware – OpenStack

Cisco UCS - un cloud • API RESTful Cisco Intersight


de métal nu • Gamme de kits SDK pour l'API Intersight RESTful, y compris ceux pour
Python et Microsoft PowerShell
• Gamme de modules Ansible
VMware • Datacenter CLI
• vSphere CLI pour Linux et Windows
• PowerCLI pour Windows PowerShell
• Hôte de kits SDK pour les langages populaires, destinés à vSphere
Automation, vCloud Suite et d'autres produits
OpenStack • Client OpenStack (OSC)
• API OpenStack de calcul, d'identité, d'image, de stockage d'objets et de
stockage en bloc
• Kit de développement logiciel OpenStack Python
• Boîte à outils OpenStack
© 2020 Cisco et/ou ses filiales. Tous droits réservés. Informations
confidentielles de Cisco 31
Scripts d'automatisation de base
Résumé des scripts d'automatisation de base
Les techniques de script d'automatisation de base sont excellentes à avoir dans la
boîte à outils et leur compréhension améliorera l'installation en tant qu'opérateur et
utilisateur de plates-formes d'automatisation matures.

© 2020 Cisco et/ou ses filiales. Tous droits réservés. Informations


confidentielles de Cisco 32
9.3 Les outils
d'automatisation

© 2020 Cisco et/ou ses filiales. Tous droits réservés. Informations


confidentielles de Cisco 33
Outils d'automatisation
Introduction aux outils d'automatisation
• Dans cette rubrique, les trois outils d'automatisation les plus populaires, Ansible,
Puppet et Chef, sont discutés.
• De nombreuses autres solutions existent également. Les fournisseurs de cloud privés et
publics approuvent souvent leurs propres outils pour les utiliser sur leurs plateformes, par
exemple :
• le projet HEAT d'OpenStack (fournisseur cloud)
• CloudFormation d'AWS (fournisseur cloud).

• D'autres solutions qui visent le marché en croissance rapide de l'orchestration de


conteneurs, de l'infrastructure en tant que code incluent SaltStack et Terraform.

© 2020 Cisco et/ou ses filiales. Tous droits réservés. Informations


confidentielles de Cisco 34
© 2020 Cisco et/ou ses filiales. Tous droits réservés. Informations
confidentielles de Cisco 35
Outils d'automatisation
Que font les outils d'automatisation pour nous ?
Que font les outils d'automatisation pour nous ?
Les outils d'automatisation offrent des fonctionnalités puissantes par rapport aux stratégies
d'automatisation ad hoc utilisant BASH, Python ou d'autres langages de programmation. Ces
outils permettent aux développeurs de :
• Simplifier et uniformiser

• Accélérer le développement grâce à des fonctionnalités prêtes à

• Faciliter la réutilisation, séparer les préoccupations et promouvoir la sécurité

• Effectuer la découverte et gérer l'inventaire

• l'accélération de la distribution des services tout en rendant aux équipes d'exploitation le


contrôle et une bonne visibilité sur votre environnement informatique dynamique.
• la transformation de l’entreprise en entreprise numérique efficace capable de s'adapter
rapidement pour répondre à la demande en constante évolution du marché.
© 2020 Cisco et/ou ses filiales. Tous droits réservés. Informations
confidentielles de Cisco 36
Outils d'automatisation
Que font les outils d'automatisation pour nous ?
Provisionnement vs. configuration vs. déploiement vs. orchestration
Provisionnement Configuration Déploiement Orchestration
Il s'agit de mettre en Cela signifie installer Cela implique la Cela peut se référer à :
place une infrastructure des applications et des création, • Automatisation construite par
informatique de calcul, services de base et l'organisation, l'utilisateur ou inhérente à la plate-
de stockage et de effectuer les opérations, l'intégration et la forme visant à gérer les cycles de
réseau (réelle ou les tâches et les tests préparation vie des charges de travail et à réagir
virtuelle), d'activer les nécessaires pour par d'applications. dynamiquement aux conditions
communications, de la exemple préparer une changeantes.
mettre en service et de plate-forme pour • Des processus ou des workflows qui
la rendre prête à déployer des relient les tâches d'automatisation.
l'emploi par les applications. • La gestion et la coordination
opérateurs et les automatisées des systèmes
développeurs. informatiques, des applications et
des services. L'orchestration facilite
la gestion des tâches et workflows
complexes pour le service
informatique.
© 2020 Cisco et/ou ses filiales. Tous droits réservés. Informations
confidentielles de Cisco 37
Outils d'automatisation
Concepts de base

Configuration vs Provisioning

 CloudFormation et Terraform sont des


 Chef, Puppet et Ansible sont tous des
outils d'approvisionnement conçus pour
outils de gestion de configuration,
approvisionner les serveurs eux-
conçus pour installer et gérer des
mêmes et le reste de l'infrastructure,
logiciels sur des serveurs existants.
comme les équilibreurs de charge, les
bases de données, la configuration
réseau.

© 2020 Cisco et/ou ses filiales. Tous droits réservés. Informations


confidentielles de Cisco 38
Outils d'automatisation
Concepts de base

Infrastructure mutable vs immutable

 Les outils de gestion de configuration  CloudFormation et Terraform sont des


tels que Chef, Puppet et Ansible créent outils d'approvisionnement conçus pour
généralement une infrastructure approvisionner les serveurs eux-
mutable. Par exemple, en utilisant Chef mêmes et le reste de l'infrastructure,
pour installer une nouvelle version d'un comme les équilibreurs de charge, les
logiciel, il exécutera la mise à jour bases de données, la configuration
logicielle sur les serveurs existants et réseau.
les modifications se produiront sur
place.

© 2020 Cisco et/ou ses filiales. Tous droits réservés. Informations


confidentielles de Cisco 39
Outils d'automatisation
Concepts de base

© 2020 Cisco et/ou ses filiales. Tous droits réservés. Informations


confidentielles de Cisco 40
Outils d'automatisation
Concepts de base
Procédural vs déclaratif

 Chef et Ansible sont basés sur un style Terraform, CloudFormation et Puppet sont tous basés
procédural ou impératif dans lequel sur un style plus déclaratif dans lequel on ne spécifie
vous écrivez du code qui spécifie un que l'état final souhaité, et l'outil lui-même est chargé de
déterminer comment atteindre cet état
processus complet étape par étape sur
Pour l'approche déclarative, le code représente toujours
la façon d'atteindre l'état final souhaité. le dernier état de votre infrastructure. Il explique les
ressources actuellement déployées et comment elles
sont configurées. Pas besoin de s'inquiéter de
l'historique de l’infrastructure.

© 2020 Cisco et/ou ses filiales. Tous droits réservés. Informations


confidentielles de Cisco 41
Outils d'automatisation
Concepts de base
Procédural vs déclaratif

© 2020 Cisco et/ou ses filiales. Tous droits réservés. Informations


confidentielles de Cisco 42
Outils d'automatisation
Concepts de base
Master vs Masterless

 Chef et Puppet nécessitent un serveur maître pour stocker l'état de notre infrastructure et distribuer les mises
à jour. Chaque fois que vous devez installer une mise à jour, un client est utilisé pour envoyer des
commandes au serveur maître, puis le serveur maître transmet les mises à jour à tous les autres serveurs. Le
serveur maître agit comme un endroit centralisé pour gérer l'infrastructure.

Cependant, un serveur maître présente certains inconvénients :


 Infrastructure supplémentaire : un serveur maître nécessite de déployer un serveur supplémentaire ou même
un cluster de serveurs supplémentaires (pour une haute disponibilité et une évolutivité).
 Maintenance : vous devez entretenir, mettre à niveau, sauvegarder, surveiller et faire évoluer le(s) serveur(s)
maître(s).
 Sécurité : La sécurité est un défi avec le serveur maître communiquant avec tous les autres serveurs.

 Ansible, CloudFormation et Terraform sont tous sans master par défaut. Bien que certains d'entre eux
puissent s'appuyer sur un serveur maître, il fait déjà partie de l'infrastructure .
© 2020 Cisco et/ou ses filiales. Tous droits réservés. Informations
confidentielles de Cisco 43
Outils d'automatisation
Concepts de base
Agent vs Agentless
 Chef et Puppet nécessitent que vous installiez un logiciel agent (par exemple, Chef Client, Puppet Agent) sur
chaque serveur que vous souhaitez configurer.
 Ansible, CloudFormation et Terraform ne nécessitent pas l'installation d'agents supplémentaires.

 L'agent s'exécute généralement en arrière-plan sur chaque serveur et est responsable de l'installation des
dernières mises à jour.

Cette approche présente quelques inconvénients :


 Amorçage : comment provisionner et installer le logiciel agent sur le serveur en premier lieu.

 Maintenance : Gardez le logiciel de l'agent synchronisé avec le serveur maître et mis à jour.

 Sécurité : l'agent doit être authentifié auprès du serveur maître, ce qui augmente les failles exploitées par les
attaquants.
 Comme dans Terraform, vous émettez simplement des commandes et les agents du fournisseur de cloud les
exécutent pour vous sur tous vos serveurs. Avec Ansible, vos serveurs doivent exécuter le démon SSH, qui
© 2020 Cisco et/ou ses filiales. Tous droits réservés. Informations

est de toute façon courant sur la plupart des serveurs. confidentielles de Cisco 44
Outils d'automatisation
Concepts de base
Large Community vs Small Community

 La communauté joue un rôle important lors de la sélection d'une technologie, car elle détermine le nombre de
personnes qui contribuent au projet, le nombre de plug-ins, d'intégrations et d'extensions disponibles, la
facilité avec laquelle il est possible de trouver de l'aide en ligne (par exemple, des articles de blog), et à quel
point il est facile d'engager quelqu'un pour vous aider (par exemple, un employé, un consultant ou une
société d'assistance).

© 2020 Cisco et/ou ses filiales. Tous droits réservés. Informations


confidentielles de Cisco 45
Outils d'automatisation
Contraintes & défis
Sans état (Statelessness)

L'automatisation fonctionne mieux lorsque les


applications peuvent être rendues sans état.
Cela signifie que leur redéploiement en place ne
détruit ni ne perd aucune trace des données
dont les utilisateurs ou les opérateurs ont
besoin.

Les deux états d'une demande sont les


suivants :

• Not Stateless : application qui enregistre des


informations importantes dans des fichiers ou
dans une base de données sur le fichier local.

• Stateless : application qui conserve son état


dans une base de données distincte ou qui
fournit un service qui ne nécessite aucune
mémoire d'état entre les invocations.

© 2020 Cisco et/ou ses filiales. Tous droits réservés. Informations


confidentielles de Cisco 46
Outils de Gestion de La Configuration
Comparaison des outils d’automatisation
Ansible, Chef, Puppet et SaltStack sont tous livrés avec la documentation de l'API pour
configurer les demandes d'API RESTful. Tous prennent en charge JSON et YAML ainsi
que d'autres formats de données. Le tableau suivant présente un résumé d'une
comparaison des caractéristiques principales des outils de gestion de configuration
Ansible, Puppet, Chef et SaltStack.

Caractéristique Ansible Chef Puppet SaltStack Terraform


HCL (HashiCorp
Quel langage de
Python + YAML Ruby Ruby Python Configuration
programmation?
Language)
Approche
Avec ou sans Prend en charge Prend en charge
Sans agent reposant sur un Sans agent
agent? les deux les deux
agent
Comment les Tout appareil
Tout appareil peut
périphériques peut être Chef Master Puppet Master Salt Master
être «contrôleur»
sont-ils gérés? «contrôleur»
© 2020 Cisco et/ou ses filiales. Tous droits réservés. Informations

Qu'est-ce qui est confidentielles de Cisco 47

Playbook Cookbook Manifest Pillar


créé par l'outil?
Outils de Gestion de La Configuration
choix des outils d’automatisation
Tous les outils d’automatisation DevOps ont leurs avantages et leurs limites :
- Ansible est excellent pour la provisionement logicielle et de machines.
- Terraform est excellent pour gérer les ressources cloud.
 Alors que le débat autour de Terraform, Ansible, Chef et d'autres outils se
poursuit, l’expert DevOps est le décisionnaire pour choisir le bon outil qui
répond le plus aux besoins et qui s'intègre facilement à l’infrastructure et aux
processus et qui fait le bon travail.

© 2020 Cisco et/ou ses filiales. Tous droits réservés. Informations


confidentielles de Cisco 48
Outils de Gestion de La Configuration
choix des outils d’automatisation

© 2020 Cisco et/ou ses filiales. Tous droits réservés. Informations


confidentielles de Cisco 49
Outils d'automatisation
Ansible
Architecture Ansible : Simple et Léger
• Le nœud de contrôle s'exécute sur n'importe quelle machine Linux exécutant Python 2 ou [Link] les mises
à jour du système sont effectuées sur le nœud de contrôle.
• Le nœud de contrôle se connecte aux ressources gérées via SSH et permet à Ansible de :

• Exécutez des commandes shell sur un serveur distant, ou effectuez des transactions avec un routeur
distant, ou une autre entité réseau, via son interface REST.
• Injectez des scripts Python dans les cibles et supprimez-les après leur exécution.
• Installez Python sur les machines cibles si nécessaire.
• Les plugins permettent à Ansible de collecter des faits et d'effectuer des opérations sur une infrastructure qui
ne peut pas exécuter Python localement.

© 2020 Cisco et/ou ses filiales. Tous droits réservés. Informations


confidentielles de Cisco 50
Outils d'automatisation
Ansible

© 2020 Cisco et/ou ses filiales. Tous droits réservés. Informations


confidentielles de Cisco 51
Outils de Gestion de La Configuration
Exemple : Ansible PlayBook

© 2020 Cisco et/ou ses filiales. Tous droits réservés. Informations


confidentielles de Cisco 52
Outils de Gestion de La Configuration
Exemple : Ansible PlayBook

© 2020 Cisco et/ou ses filiales. Tous droits réservés. Informations


confidentielles de Cisco 53
Outils de Gestion de La Configuration
Exemple : Ansible PlayBook

© 2020 Cisco et/ou ses filiales. Tous droits réservés. Informations


confidentielles de Cisco 54
Outils de Gestion de La Configuration
Exemple : Ansible PlayBook

© 2020 Cisco et/ou ses filiales. Tous droits réservés. Informations


confidentielles de Cisco 55
Outils de Gestion de La Configuration
Exemple : Ansible PlayBook

© 2020 Cisco et/ou ses filiales. Tous droits réservés. Informations


confidentielles de Cisco 56
Outils de Gestion de La Configuration
Exemple : Ansible PlayBook

© 2020 Cisco et/ou ses filiales. Tous droits réservés. Informations


confidentielles de Cisco 57
Outils d'automatisation
Travaux pratiques — Utiliser Ansible pour Sauvegarder et
configurer un périphérique
Au cours de ces travaux pratiques, vous aborderez les points suivants :
• Partie 1: Lancer la DEVASC VM et la CSR1000v VM

• Partie 2: Configurer Ansible

• Partie 3: Utiliser Ansible pour sauvegarder une configuration

• Partie 4: Utiliser Ansible pour configurer un périphérique

© 2020 Cisco et/ou ses filiales. Tous droits réservés. Informations


confidentielles de Cisco 58
Outils d'automatisation
Travaux pratiques — Utiliser Ansible pour automatiser l'installation
d'un serveur Web
Au cours de ces travaux pratiques, vous aborderez les points suivants :
• Partie 1: Lancer la DEVASC VM

• Partie 2: Effectuer une sauvegarde avec Ansible

• Partie 3: Configurer l'adressage IPv6 avec Ansible

• Partie 4: Utiliser Ansible pour installer Apache sur des serveurs Web

• Partie 5: Ajouter des options à votre playbook ansible pour les serveurs Web Apache

© 2020 Cisco et/ou ses filiales. Tous droits réservés. Informations


confidentielles de Cisco 59
Outils d'automatisation
Puppet
Fondée comme open source en 2005 et commercialisée sous le nom de Puppet Enterprise par Puppet
Labs en 2011.
Architecture components

• Serveur désigné pour héberger les


principaux composants de
l'application.

• Un client sécurisé, également connu


sous le nom d'agent Puppet.

• Modules permettant d'activer les


connexions pour les API cloud et le
matériel qui ne peuvent pas exécuter
un agent.

• Dans les implémentations évolutives,


un agent proxy pour décharger le
travail de connexion directe aux CLI
de périphérique et d'échange
d'informations.
© 2020 Cisco et/ou ses filiales. Tous droits réservés. Informations
confidentielles de Cisco 60
Outils d'automatisation
Chef
• Chef fournit un système complet pour traiter l'infrastructure en tant que code.

• Les produits Chef sont partiellement sous licence, mais sont gratuits pour un usage
personnel (dans le cas de Chef Infra Server, pour moins de 25 nœuds gérés).
• Les produits et solutions de Chef permettent la création, le test, l'organisation, le stockage
du référentiel et l'exécution sur des cibles distantes, soit à partir d'une station de travail Chef
autonome, soit indirectement à partir d'un serveur Chef Infra central.

© 2020 Cisco et/ou ses filiales. Tous droits réservés. Informations


confidentielles de Cisco 61
Outils d'automatisation
Chef
Chef Architecture -
Composantes
• Chef Workstation
• Chef Infra Client (l'agent
hôte)
• Chef Infra Server
La plupart des tâches de
configuration peuvent
également être effectuées
directement entre Chef
Workstation et les nœuds et
périphériques gérés.

© 2020 Cisco et/ou ses filiales. Tous droits réservés. Informations


confidentielles de Cisco 62
Résumé des outils d'automatisation
Résumé

Il s'agit d'une introduction de haut niveau à trois trousses d'outils DevOps modernes. Vous devriez
maintenant être prêt à :
• Déployez et intégrez des versions gratuites des principaux composants d'Ansible, Puppet et/ou Chef sur
une gamme de supports, des machines virtuelles de bureau aux machines virtuelles basées sur le cloud
sur Azure, AWS ou d'autres plates-formes IaaS.
• Découvrez le langage déclaratif, le style de construction et d'organisation de chaque plate-forme sous
forme de code, et obtenez une idée de la portée de sa bibliothèque de ressources, de plugins et
d'intégrations.
• Apprenez à automatiser certaines des tâches informatiques courantes que vous pouvez effectuer au
travail ou à résoudre les problèmes de déploiement et de gestion du cycle de vie que vous définissez
vous-même, dans votre laboratoire à domicile.
• Des exercices pratiques et des travaux vous donneront une idée complète de la façon dont chaque plate-
forme aborde les thèmes de configuration et vous aideront à surmonter les défis informatiques quotidiens.
© 2020 Cisco et/ou ses filiales. Tous droits réservés. Informations
confidentielles de Cisco 63
9.4 Infrastructure en tant
que code

© 2020 Cisco et/ou ses filiales. Tous droits réservés. Informations


confidentielles de Cisco 64
L'IaC (Infrastructure-as-Code), qu'est-ce que c'est ?
 L'IaC (Infrastructure-as-Code) consiste à gérer et à approvisionner une infrastructure à l'aide de lignes de
code plutôt que par des processus manuels.
 L'IaC implique la création de fichiers de configuration qui contiennent les caractéristiques de
l'infrastructure, ce qui facilite les modifications et la distribution des configurations. L'IaC permet
également de s'assurer que le même environnement est fourni à chaque fois. En codifiant et en
documentant les caractéristiques de configuration, l'IaC facilite la gestion des configurations et permet
d'éviter les changements de configuration non documentés.
 Par l'automatisation du provisionnement de l'infrastructure selon l'approche IaC, les DevOps n'ont plus
besoin d'approvisionner ni de gérer manuellement les serveurs, les systèmes d'exploitation, le stockage et
les autres composants de l'infrastructure chaque fois qu’une nouvelle application développée est
déployée.
 Le déploiement de type IaC permet également de scinder l'infrastructure en modules qui peuvent ensuite
être combinés de différentes façons, de manière automatisée.
 Le contrôle des versions est une partie importante de l'IaC : les fichiers de configuration doivent être
gérés par un système de contrôle de source comme n'importe quel autre fichier de code source d’un
logiciel ou application  GITOPS. © 2020 Cisco et/ou ses filiales. Tous droits réservés. Informations
confidentielles de Cisco 65
Infrastructure en tant que code
GITOPS qu'est-ce que c'est ?
GITOPS : infrastructure moderne en tant que code  Le GitOps peut être considéré comme une
évolution de l'IaC (Infrastructure-as-Code) qui utilise Git comme système de contrôle des versions
pour les configurations de l'infrastructure.
• Dans une approche GitOps typique, vous pouvez maintenir un référentiel, tel qu'un dépôt privé sur
Git/GitHub, avec plusieurs branches appelées Développement, Testing/UAT et Production.

© 2020 Cisco et/ou ses filiales. Tous droits réservés. Informations


confidentielles de Cisco 66
Infrastructure en tant que code
Comment déployer l'infrastructure comme code avec GITOPS?

© 2020 Cisco et/ou ses filiales. Tous droits réservés. Informations


confidentielles de Cisco 67
Infrastructure en tant que code
Comment déployer l'infrastructure comme code avec GITOPS?
Déploiement bleu/vert

• Le déploiement bleu/vert est une méthode permettant de réduire ou d'éliminer les temps d'arrêt dans les environnements
de production.

• Il est nécessaire de maintenir deux environnements de production identiques.

• Il est également nécessaire de développer la capacité de rediriger rapidement le trafic d'applications vers l'un ou l'autre.

Test des canaris

• Le test Canari est similaire au déploiement roulant bleu/vert, mais un peu plus délicat.

• La migration entre les anciens et les nouveaux déploiements est effectuée client par client (voire utilisateur par utilisateur).

• La migration vise à réduire les risques et à améliorer la qualité de la rétroaction.

Remarque : Certains praticiens de DevOps font la différence entre les stratégies bleu/vert et rouge/noir. Ils
disent qu'en bleu/vert, le trafic est progressivement migré d'un environnement à l'autre, de sorte qu'il
touche les deux systèmes pendant un certain temps ; alors qu'en rouge/noir, le trafic est coupé à la fois.
© 2020 Cisco et/ou ses filiales. Tous droits réservés. Informations
confidentielles de Cisco 68
9.5 Automatisation des tests

© 2020 Cisco et/ou ses filiales. Tous droits réservés. Informations


confidentielles de Cisco 69
Automatisation des tests
Test et validation automatisés
• En utilisant des outils de test unitaire tels que pytest ou unittest, les développeurs peuvent construire un
environnement où le code peut être testé automatiquement lorsque des modifications sont apportées.
• Les frameworks de tests unitaires font des tests une partie de la base de code, en suivant le code à
travers les validations de développeurs, les requêtes d'extraction et les portes de révision de code vers
QA/Test et Production. Ce cadre de test unitaire est utile dans les environnements de développement
pilotés par des tests (TDD).

Les défis du test d'un réseau


• Le comportement et les performances d'un réseau réel sont collectifs, maintenus par les configurations de
nombreux équipements et logiciels discrets.
• Dans les environnements traditionnels, la connectivité et la fonctionnalité sont maintenues manuellement
sur de nombreux équipements individuels via diverses interfaces. C'est difficile, chronophage,
extrêmement sujette aux erreurs et risqué.
• À mesure que les réseaux deviennent plus complexes et transportent un trafic plus diversifié et sensible
aux performances, les risques pour la sécurité et la dégradation des performances sont plus élevés.
© 2020 Cisco et/ou ses filiales. Tous droits réservés. Informations
confidentielles de Cisco 70
Automatisation des tests
Test et validation automatisés (suite)
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

Système de test automatisé Python (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.

© 2020 Cisco et/ou ses filiales. Tous droits réservés. Informations


confidentielles de Cisco 71
Automatisation des tests
Test et validation automatisés (suite)
PYATS a plusieurs caractéristiques clés :
• 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 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.

© 2020 Cisco et/ou ses filiales. Tous droits réservés. Informations


confidentielles de Cisco 72
Automatisation des tests
Exemple du système pyATS
Le contenu suivant montre comment utiliser PyATS pour créer et appliquer des tests.

Environnements virtuels

L'outil PyATS est mieux installé pour un travail personnel dans un environnement virtuel Python (venv).
• Un venv est un environnement copié à partir de votre environnement de base, mais gardé séparé de
celui-ci.
• Cela vous permet d'éviter d'installer des logiciels susceptibles de modifier définitivement l'état de votre
système.
• Des environnements virtuels existent dans les dossiers de votre système de fichiers. Lorsqu'ils sont
créés, ils peuvent être activés, configurés à volonté et les composants qui y sont installés peuvent être
mis à jour ou modifiés sans que les modifications soient reflétées dans la configuration de votre hôte.
• La possibilité de créer des environnements virtuels est native à Python 3, mais Ubuntu 18.04 peut
nécessiter l'installation d'un paquet python3-venv séparément.

© 2020 Cisco et/ou ses filiales. Tous droits réservés. Informations


confidentielles de Cisco 73
Automatisation des tests
Exemple pyATS (suite)
Pour créer un venv sur Ubuntu 18.04 :
• Assurez-vous que python3-pip, le gestionnaire de paquets Python3, est en place et installez git.

• Créez un nouvel environnement virtuel dans le répertoire de votre choix.

• Venv crée le répertoire de travail et la structure de dossier spécifiés contenant des fonctions et des
artefacts décrivant la configuration de cet environnement.À ce stade, vous pouvez cd au monprojet et
activer le venv.

Installation de PYATS
• Installez les PYATS à partir du référentiel public de paquets Pip (PyPI).

• Vérifiez qu'il a été installé en listant l'aide, à l'aide de pyats —help.

• Cloner le repo des exemples de scripts PyATS, géré par Cisco DevNet, qui contient des exemples de
fichiers.
Remarque : Vous pouvez voir des erreurs « Échec de la construction de la roue
pour...<wheelname> » lors de l'installation de PYATS. Vous pouvez ignorer ces erreurs en toute
sécurité car pip a un plan de sauvegarde pour ces échecs et les dépendances sont installées malgré
© 2020 Cisco et/ou ses filiales. Tous droits réservés. Informations
les erreurs signalées. confidentielles de Cisco 74
Automatisation des tests
Exemple pyATS (suite)
Syntaxe du cas de test PyATS

• La syntaxe de déclaration de test pour PyATS est inspirée par les frameworks de test d'unité Python comme pytest.

• Il prend en charge les instructions de test de base, telles que l'affirmation qu'une variable a une valeur donnée, et ajoute
à cela la possibilité de fournir explicitement des résultats.

Scripts et jobs PyATS

• Un script PyATS est un fichier Python où les tests PyATS sont déclarés.

Fichier testbed PyATS

• Un testbed peut être un seul fichier YAML ou peut être assemblé par programme à partir de YAML et Python.

• Le fichier de testbed est une entrée essentielle pour le reste de la bibliothèque et de l'écosystème PyATS car il fournit
des informations à l'infrastructure pour charger le bon ensemble d'API de bibliothèque pour chaque périphérique, et
comment communiquer efficacement avec eux.

• Les fichiers de testbed réels pour les topologies volumineuses peuvent être longs, profondément imbriqués et
complexes.

© 2020 Cisco et/ou ses filiales. Tous droits réservés. Informations


confidentielles de Cisco 75
Automatisation des tests
Exemple pyATS (suite)
Bibliothèque PyATS : Génie
• Genie est le système de bibliothèque de niveau supérieur PyATS qui fournit des API pour
interagir avec les périphériques et une interface de ligne de commande puissante pour la
topologie et la gestion et l'interrogation des périphériques.
• Lorsqu'il est installé, il ajoute ses fonctionnalités et fonctionnalités dans le framework PyATS.

© 2020 Cisco et/ou ses filiales. Tous droits réservés. Informations


confidentielles de Cisco 76
Automatisation des tests
Travaux pratiques — Tests automatisés à l'aide de PyATS et de
Génie
Au cours de ces travaux pratiques, vous aborderez les points suivants :
• Partie 1: Lancer la DEVASC VM et la CSR1000v VM

• Partie 2: Créer un environnement virtuel Python (venv)

• Partie 3: Utilisation de la bibliothèque de tests PyATS

• Partie 4: Présentation de Génie et création d'un fichier testbed

• Partie 5 : Utiliser Génie pour comparer les configurations

© 2020 Cisco et/ou ses filiales. Tous droits réservés. Informations


confidentielles de Cisco 77
9.6 Simulation de réseau

© 2020 Cisco et/ou ses filiales. Tous droits réservés. Informations


confidentielles de Cisco 78
Simulation de réseau
Simulation de réseau et VIRL
• La simulation de réseau fournit un moyen de tester les configurations réseau, de déboguer le code de
configuration et de travailler avec l'infrastructure et les API Cisco et d'apprendre de manière sûre,
pratique et non coûteuse.
• Le VIRL (Cisco Virtual Internet Routing Laboratory) est un produit commercial développé à l'origine pour
un usage interne chez Cisco, avec un soutien communautaire large et actif. Maintenant dans la version
2, VIRL peut fonctionner sur nu métal, ou sur de grandes machines virtuelles sur plusieurs plates-formes
d'hyperviseur.
• L'équipement virtuel qui s'exécute dans VIRL utilise le même code que celui qui s'exécute dans les
produits Cisco réels.

Composants VIRL et flux de travail


• VIRL fournit une interface de ligne de commande locale pour la gestion du système, une interface REST
pour l'intégration avec l'automatisation et une interface utilisateur puissante qui offre un environnement
graphique complet pour la création et la configuration des topologies de simulation.
• L'interface utilisateur est fournie avec plusieurs topologies pour commencer. Parmi ceux-ci, il y a une
simulation de réseau IOS à deux routeurs qui peut rapidement être activée et explorée.
© 2020 Cisco et/ou ses filiales. Tous droits réservés.
confidentielles de Cisco
Informations
79
Simulation de réseau
Simulation de réseau et VIRL (suite)
• La vue Design Perspective de
VIRL permet de modifier des
simulations existantes ou d'en
composer de nouvelles en faisant
glisser, en déposant et en
connectant des entités de réseau,
en les configurant.
• La visualisation comporte des
éléments cliquables qui explorent
la configuration des entités et
effectuent des modifications via le
WebUI, ou en se connectant aux
éléments réseau via la console.

© 2020 Cisco et/ou ses filiales. Tous droits réservés. Informations


confidentielles de Cisco 80
Simulation de réseau
Simulation de réseau et VIRL (suite)
Fichiers VIRL
• Les configurations de périphériques individuels ou les configurations réseau simulées entières peuvent être
extraites sous forme de fichiers .virl
• VIRL vous permet de définir des simulations en tant que code, ce qui permet une intégration dans les deux
sens avec d'autres plates-formes logicielles pour la gestion et les tests du réseau.
• Le format de configuration natif de VIRL est appelé un fichier .virl qui est un fichier YAML lisible par
l'homme.
• Le fichier .virl contient des descriptions complètes des routeurs IOS, de leurs configurations d'interface et
de leur connexion, des informations d'identification pour y accéder et d'autres détails.
• Ces fichiers peuvent être utilisés pour lancer des simulations via l'API REST VIRL et les fichiers .virl
peuvent être convertis vers et à partir de fichiers testbed à utiliser avec PyATS et Genie.
• Le fichier .virl fournit une méthode permettant de déterminer si une dérive de configuration s'est produite
sur la simulation.
© 2020 Cisco et/ou ses filiales. Tous droits réservés. Informations
confidentielles de Cisco 81
9.7 Résumé de l'infrastructure
et de l'automatisation

© 2020 Cisco et/ou ses filiales. Tous droits réservés. Informations


confidentielles de Cisco 82
Résumé de l'infrastructure et de l'automatisation
Qu'ai-je appris dans ce module ?
• L'automatisation utilise du code pour configurer, déployer et gérer les applications ainsi que les infrastructures et services
de calcul, de stockage et de réseau sur lesquels elles s'exécutent.

• Le Cloud Computing permet aux développeurs et aux opérateurs d'utiliser des logiciels pour demander, configurer, déployer
et gérer des ressources de calcul, de stockage et de réseau virtualisés et virtualisés.

• Pour que l'automatisation complète soit vraiment efficace, elle nécessite des changements dans la culture
organisationnelle, y compris la réduction des divisions historiques entre le développement (développement) et les
opérations (opérations).

• Devops/SRE ont de nombreux principes de base et meilleures pratiques : l'accent est mis sur l'automatisation, l'idée que
les défaillances sont normales et un remaniement de la disponibilité en termes de ce qu'une entreprise peut tolérer.

• L'automatisation du cloud vous permet de provisionner des hôtes virtualisés, de configurer des réseaux virtuels et d'autres
services de connectivité, de réquisition, puis de déployer des applications sur cette infrastructure.

• Trois des outils d'automatisation les plus populaires sont Ansible, Puppet et Chef.

• L'immuabilité se réfère à la maintenance des systèmes entièrement sous forme de code, n'effectuant aucune opération
manuelle sur eux.

© 2020 Cisco et/ou ses filiales. Tous droits réservés. Informations


confidentielles de Cisco 83
Résumé de l'infrastructure et de l'automatisation
Qu'ai-je appris dans ce module ? (suite)
• Le cadre de test unitaire est utile dans les environnements de développement pilotés par des tests
(TDD).
• La simulation de réseau fournit un moyen de tester les configurations réseau, de déboguer le code de
configuration et de travailler avec l'infrastructure et les API Cisco et d'apprendre de manière sûre,
pratique et non coûteuse.
• Le TP Virtual Internet Routing Laboratory (VIRL) de Cisco peut fonctionner sur le nu métal ou sur de
grandes machines virtuelles sur plusieurs plates-formes d'hyperviseur.

© 2020 Cisco et/ou ses filiales. Tous droits réservés. Informations


confidentielles de Cisco 84

Vous aimerez peut-être aussi