{"id":35972,"date":"2019-10-31T22:08:54","date_gmt":"2019-10-31T19:08:54","guid":{"rendered":"https:\/\/prohoster.info\/blog\/avtomatizatsiya-dlya-samyh-malenkih-chast-nulevaya-planirovanie\/"},"modified":"2019-10-31T22:08:54","modified_gmt":"2019-10-31T19:08:54","slug":"avtomatizatsiya-dlya-samyh-malenkih-chast-nulevaya-planirovanie","status":"publish","type":"post","link":"https:\/\/prohoster.info\/fr\/blog\/administrirovanie\/avtomatizatsiya-dlya-samyh-malenkih-chast-nulevaya-planirovanie","title":{"rendered":"Automatisation pour les plus petits. Partie z\u00e9ro. Planification","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Le CDSM est termin\u00e9, mais le d\u00e9sir incontr\u00f4l\u00e9 d'\u00e9crire reste. <\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/fs.linkmeup.ru\/images\/adsm\/0\/kdpv.jpg\"><img decoding=\"async\" alt=\"Automatisation pour les plus petits. Partie z\u00e9ro. Planification\" src=\"\/wp-content\/uploads\/2019\/07\/2da9a566e92a782cf1205a6da716d4c4.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/p>\n<p>Pendant de nombreuses ann\u00e9es, notre fr\u00e8re a souffert de l'ex\u00e9cution de t\u00e2ches routini\u00e8res, croisant les doigts avant chaque commit et manquant de sommeil \u00e0 cause des rollbacks nocturnes.<br \/>\nMais les temps sombres touchent \u00e0 leur fin.<\/p>\n<p>Avec cet article, je commencerai une s\u00e9rie sur comment <i>moi<\/i> l'automatisation est envisag\u00e9e. <br \/>\nNous allons explorer les \u00e9tapes de l'automatisation, le stockage des variables, la formalisation du design, avec RestAPI, NETCONF, YANG, YDK et nous allons beaucoup programmer. <br \/>\n<i>Pour moi,<\/i> cela signifie que a) ce n'est pas une v\u00e9rit\u00e9 objective, b) ce n'est pas n\u00e9cessairement la meilleure approche, et c) mon point de vue m\u00eame au fil de la progression de l'article peut changer \u2014 honn\u00eatement, depuis la phase de brouillon jusqu'\u00e0 la publication, j'ai r\u00e9\u00e9crit tout deux fois. <\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h1>Contenu<\/h1>\n<p><\/p>\n<ol>\n<li> <b>Objectifs<\/b>\n<ol>\n<li>Le r\u00e9seau \u2014 comme un organisme unique.<\/li>\n<li>Test de configuration.<\/li>\n<li>Versioning.<\/li>\n<li>Surveillance et auto-r\u00e9cup\u00e9ration des services.<\/li>\n<\/ol>\n<p>\n <\/li>\n<li> <b>Outils<\/b>\n<ol>\n<li>Syst\u00e8me d'inventaire.<\/li>\n<li>Syst\u00e8me de gestion de l'espace IP.<\/li>\n<li>Syst\u00e8me de description des services r\u00e9seau.<\/li>\n<li>M\u00e9canisme d'initialisation des dispositifs.<\/li>\n<li>Mod\u00e8le de configuration ind\u00e9pendant du fournisseur.<\/li>\n<li>Interface sp\u00e9cifique au fournisseur driver.<\/li>\n<li>M\u00e9canisme de livraison de la configuration au dispositif.<\/li>\n<li>CI\/CD<\/li>\n<li>M\u00e9canisme de sauvegarde et de recherche des \u00e9carts.<\/li>\n<li>Syst\u00e8me de surveillance.<\/li>\n<\/ol>\n<p>\n <\/li>\n<li> <b>Conclusion<\/b>\n <\/li>\n<\/ol>\n<p>\nJe vais essayer de mener l'ADSM dans un format l\u00e9g\u00e8rement diff\u00e9rent du CDSM. De longs articles d\u00e9taill\u00e9s continueront \u00e0 appara\u00eetre, et entre eux, je publierai de courtes notes de mon exp\u00e9rience quotidienne. J'essaierai ici de lutter contre le perfectionnisme et de ne pas peaufiner chacune d'elles. <\/p>\n<blockquote><p> C'est amusant que, pour la seconde fois, je doive suivre le m\u00eame chemin.<\/p>\n<p> Au d\u00e9but, j'ai d\u00fb \u00e9crire moi-m\u00eame des articles sur les r\u00e9seaux car il n'y en avait pas dans le Runet.<\/p>\n<p> Maintenant, je n'arrive pas \u00e0 trouver un document complet qui syst\u00e9matise les approches d'automatisation et examine les technologies mentionn\u00e9es pr\u00e9c\u00e9demment avec des exemples pratiques simples.<\/p>\n<p> Peut-\u00eatre que je me trompe, alors n'h\u00e9sitez pas \u00e0 m'envoyer des liens vers des ressources utiles. Cependant, cela ne changera pas ma volont\u00e9 d'\u00e9crire, car l'objectif principal est d'apprendre quelque chose par moi-m\u00eame, et faciliter la vie des autres est un agr\u00e9able bonus qui stimule la diffusion de l'exp\u00e9rience.\n<\/p><\/blockquote>\n<p>Nous allons essayer de prendre un centre de donn\u00e9es LAN DC de taille moyenne et de travailler sur l'ensemble du sch\u00e9ma d'automatisation. <br \/>\nJe vais faire certaines choses pratiquement pour la premi\u00e8re fois avec vous. <\/p>\n<blockquote><p> Dans les id\u00e9es et outils d\u00e9crits ici, je ne vais pas \u00eatre original. Dmitry Figol a une excellente <noindex><a rel=\"nofollow\" href=\"https:\/\/www.youtube.com\/watch?v=MLeiShwb7Qo&amp;list=PLSwGHYY8t8JiGI9powOXDHTAXDSs7FZqt\">cha\u00eene avec des streams sur ce sujet<\/a><\/noindex>. <br \/>\n Les articles vont se chevaucher sur de nombreux aspects. \n<\/p><\/blockquote>\n<p>Dans le LAN DC, il y a 4 DC, environ 250 switches, une demi-douzaine de routeurs et quelques pare-feu. <br \/>\nCe n'est pas Facebook, mais c'est suffisant pour r\u00e9fl\u00e9chir profond\u00e9ment \u00e0 l'automatisation. <br \/>\nIl est dit, cependant, que si vous avez plus d'un appareil, l'automatisation est d\u00e9j\u00e0 n\u00e9cessaire. <br \/>\nIl est en fait difficile d'imaginer que quelqu'un puisse vivre actuellement sans au moins une s\u00e9rie de scripts de base. <br \/>\nBien que j'aie entendu dire qu'il existe des entreprises o\u00f9 la gestion des adresses IP est faite dans Excel, et chaque appareil r\u00e9seau parmi des milliers est configur\u00e9 manuellement avec sa propre configuration unique. Cela peut \u00e9videmment \u00eatre pr\u00e9sent\u00e9 comme un art contemporain, mais les sentiments d'un ing\u00e9nieur en seront certainement bless\u00e9s. <\/p>\n<h1>Objectifs<\/h1>\n<p>\nNous allons maintenant \u00e9tablir des objectifs aussi abstraits que possible :<\/p>\n<ul>\n<li>Le r\u00e9seau \u2014 comme un organisme unique.<\/li>\n<li>Test de configuration.<\/li>\n<li>Versioning de l'\u00e9tat du r\u00e9seau<\/li>\n<li>Surveillance et auto-r\u00e9cup\u00e9ration des services.<\/li>\n<\/ul>\n<p>\nPlus tard dans cet article, nous analyserons les outils que nous allons utiliser, et dans les prochains articles, nous aborderons en d\u00e9tail les objectifs et les outils.<\/p>\n<h2>Le r\u00e9seau \u2014 comme un organisme unique.<\/h2>\n<p>\nUne phrase cl\u00e9 du cycle, bien qu'elle puisse sembler insignifiante au premier abord : <b>nous allons configurer le r\u00e9seau, et non des appareils individuels<\/b>. <br \/>\nCes derni\u00e8res ann\u00e9es, nous avons observ\u00e9 un changement d'accent vers la gestion du r\u00e9seau en tant qu'entit\u00e9 unique, d'o\u00f9 l'\u00e9mergence de <i>R\u00e9seautage D\u00e9fini par Logiciel<\/i>, <i>Intent Driven Networks<\/i> et <i>Autonomous Networks<\/i>. <br \/>\nApr\u00e8s tout, ce dont les applications ont besoin de mani\u00e8re globale du r\u00e9seau : connectivit\u00e9 entre les points A et B (et parfois +B-Y) et isolation des autres applications et utilisateurs. <\/p>\n<p><img decoding=\"async\" alt=\"Automatisation pour les plus petits. Partie z\u00e9ro. Planification\" src=\"\/wp-content\/uploads\/2019\/07\/f8b43928ccc6d487722ce7724f5c4829.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAinsi, notre t\u00e2che dans cette s\u00e9rie est de <b>construire un syst\u00e8me<\/b>, soutenant la configuration actuelle <b>de tout le r\u00e9seau<\/b>, qui se d\u00e9compose d\u00e9j\u00e0 en configuration active sur chaque appareil selon son r\u00f4le et son emplacement. <br \/>\n<b>Le syst\u00e8me<\/b> La gestion du r\u00e9seau implique que pour effectuer des changements, nous nous y adressons, et elle, \u00e0 son tour, calcule l'\u00e9tat requis pour chaque appareil et le configure. <br \/>\nAinsi, nous minimisons presque \u00e0 z\u00e9ro l'utilisation manuelle du CLI \u2014 tout changement dans les configurations ou la conception du r\u00e9seau doit \u00eatre formalis\u00e9 et document\u00e9 \u2014 et ce n'est qu'ensuite qu'il peut \u00eatre d\u00e9ploy\u00e9 sur les \u00e9l\u00e9ments n\u00e9cessaires du r\u00e9seau. <\/p>\n<blockquote><p> Par exemple, si nous avons d\u00e9cid\u00e9 qu'\u00e0 partir de maintenant, les commutateurs de ch\u00e2ssis \u00e0 Kazan doivent annoncer deux r\u00e9seaux au lieu d'un, nous<\/p>\n<ol>\n<li>Nous documentons d'abord les modifications dans les syst\u00e8mes<\/li>\n<li>Nous g\u00e9n\u00e9rons la configuration cible de tous les dispositifs du r\u00e9seau<\/li>\n<li>Nous lan\u00e7ons le programme de mise \u00e0 jour de la configuration du r\u00e9seau, qui calcule ce qu'il faut supprimer sur chaque n\u0153ud, ce qu'il faut ajouter, et am\u00e8ne les n\u0153uds \u00e0 l'\u00e9tat souhait\u00e9.<\/li>\n<\/ol>\n<p>\n En proc\u00e9dez manuellement, nous apportons des modifications uniquement \u00e0 la premi\u00e8re \u00e9tape.\n<\/p><\/blockquote>\n<h2>Test de configuration.<\/h2>\n<p>\n<noindex><a rel=\"nofollow\" href=\"http:\/\/www.wikisummaries.org\/wiki\/Visible_Ops\">Il est connu<\/a><\/noindex>, que 80 % des probl\u00e8mes surviennent lors des changements de configuration - le fait que pendant les vacances de fin d'ann\u00e9e, tout est g\u00e9n\u00e9ralement calme est une preuve indirecte. <br \/>\nJ'ai personnellement \u00e9t\u00e9 t\u00e9moin de dizaines de pannes globales dues \u00e0 une erreur humaine : une mauvaise commande, une ex\u00e9cution dans le mauvais branche de configuration, un oubli de la communaut\u00e9, un effacement global de l'MPLS sur le routeur, cinq appareils configur\u00e9s, et une erreur non remarqu\u00e9e sur le sixi\u00e8me, des anciennes modifications commises par une autre personne. Les sc\u00e9narios sont innombrables. <\/p>\n<p>L'automatisation nous permettra de commettre moins d'erreurs, mais \u00e0 une \u00e9chelle plus grande. Ainsi, on peut brique un seul appareil, mais toute le r\u00e9seau d'un coup. <\/p>\n<p>Depuis des temps imm\u00e9moriaux, nos anc\u00eatres v\u00e9rifiaient l'exactitude des modifications apport\u00e9es avec un \u0153il ac\u00e9r\u00e9, des parties m\u00e9talliques et la fonctionnalit\u00e9 du r\u00e9seau apr\u00e8s leur d\u00e9ploiement. <br \/>\nCes anc\u00eatres, dont le travail entra\u00eenait des temps d'arr\u00eat et des pertes catastrophiques, laissaient moins de descendants et devaient dispara\u00eetre avec le temps, mais l'\u00e9volution est un processus lent, c'est pourquoi jusqu'\u00e0 pr\u00e9sent, tous ne v\u00e9rifient pas les modifications au pr\u00e9alable dans un laboratoire. <br \/>\nCependant, \u00e0 la pointe du progr\u00e8s se trouvent ceux qui ont automatis\u00e9 le processus de test des configurations et leur application ult\u00e9rieure sur le r\u00e9seau. En d'autres termes, ils ont emprunt\u00e9 la proc\u00e9dure CI\/CD (<noindex><a rel=\"nofollow\" href=\"https:\/\/img.devrant.com\/devrant\/rant\/r_1535091_ErSUL.jpg\">Continuous Integration, Continuous Deployment<\/a><\/noindex>) chez les d\u00e9veloppeurs.<br \/>\nDans l'une des parties, nous examinerons comment cela peut \u00eatre r\u00e9alis\u00e9 \u00e0 l'aide d'un syst\u00e8me de contr\u00f4le de version, probablement GitHub. <\/p>\n<blockquote><p> D\u00e8s que vous vous habituez \u00e0 l'id\u00e9e de CI\/CD r\u00e9seau, la m\u00e9thode de v\u00e9rification de la configuration par son application sur un r\u00e9seau de travail vous semblera tout \u00e0 coup comme une ignorance du haut Moyen \u00c2ge. Un peu comme frapper un missile nucl\u00e9aire avec un marteau.\n<\/p><\/blockquote>\n<p>L'\u00e9volution organique des id\u00e9es sur <b>syst\u00e8me<\/b> la gestion du r\u00e9seau et CI\/CD devient un v\u00e9ritable versionnage de la configuration. <\/p>\n<h2>Versioning.<\/h2>\n<p>\nNous consid\u00e9rerons qu'\u00e0 chaque changement, m\u00eame les plus infimes, m\u00eame sur un appareil inconnu, l'ensemble du r\u00e9seau passe d'un \u00e9tat \u00e0 un autre.<br \/>\nEt nous n'ex\u00e9cutons jamais la commande sur l'appareil, nous changeons l'\u00e9tat du r\u00e9seau. <br \/>\nAppelons ces \u00e9tats des versions.<\/p>\n<p>Supposons que la version actuelle soit 1.0.0.<br \/>\nL'adresse IP de l'interface Loopback a-t-elle chang\u00e9 sur l'un des ToR ? Il s'agit d'une version mineure \u2014 elle recevra le num\u00e9ro 1.0.1.<br \/>\nLes politiques d'importation de routes dans BGP ont \u00e9t\u00e9 r\u00e9vis\u00e9es \u2014 un peu plus s\u00e9rieux \u2014 d\u00e9j\u00e0 1.1.0.<br \/>\nNous avons d\u00e9cid\u00e9 de nous d\u00e9barrasser de l'IGP et de passer seulement au BGP \u2014 c'est d\u00e9j\u00e0 un changement de conception radical \u2014 2.0.0.<\/p>\n<p>Cependant, diff\u00e9rents DC peuvent avoir des versions diff\u00e9rentes \u2014 le r\u00e9seau \u00e9volue, de nouveaux \u00e9quipements sont install\u00e9s, de nouveaux niveaux de spine sont ajout\u00e9s par endroits, et pas ailleurs, etc.<\/p>\n<p>\u00c0 propos de <noindex><a rel=\"nofollow\" href=\"https:\/\/semver.org\">versioning s\u00e9mantique<\/a><\/noindex> nous en parlerons dans un article s\u00e9par\u00e9.<\/p>\n<p>Je r\u00e9p\u00e8te \u2014 tout changement (sauf les commandes de d\u00e9bogage) constitue une mise \u00e0 jour de version. Les administrateurs doivent \u00eatre inform\u00e9s de tout \u00e9cart par rapport \u00e0 la version actuelle.<\/p>\n<p>Il en va de m\u00eame pour le retour en arri\u00e8re des changements \u2014 ce n'est pas l'annulation des derni\u00e8res commandes, ce n'est pas un rollback par les moyens du syst\u00e8me d'exploitation de l'appareil \u2014 c'est ramener tout le r\u00e9seau \u00e0 une nouvelle (ancienne) version. <\/p>\n<h2>Surveillance et auto-r\u00e9cup\u00e9ration des services.<\/h2>\n<p>\nC'est une t\u00e2che \u00e9vidente qui atteint un nouveau niveau dans les r\u00e9seaux modernes.<br \/>\nSouvent, chez les grands fournisseurs de services, il est courant que lorsque le service tombe, il faille le recr\u00e9er rapidement et en d\u00e9ployer un nouveau, plut\u00f4t que de s'attarder sur ce qui s'est pass\u00e9.<br \/>\n\u00ab Rapidement \u00bb signifie qu'il faut se couvrir abondamment de supervisons, qui d\u00e9couvriront en quelques secondes les moindres \u00e9carts par rapport \u00e0 la normale.<br \/>\nEt ici, les m\u00e9triques habituelles, telles que l'utilisation de l'interface ou la disponibilit\u00e9 d'un n\u0153ud, ne suffisent pas. Le suivi manuel d'un surveillant ne suffit pas non plus.<br \/>\nPour de nombreuses choses, il doit y avoir un <noindex><a rel=\"nofollow\" href=\"https:\/\/www.irisns.com\/self-healing-network-tomorrow-look-like\/\">Self-Healing<\/a><\/noindex> \u2014 les syst\u00e8mes de monitoring s'allument en rouge et vont automatiquement appliquer des solutions l\u00e0 o\u00f9 \u00e7a fait mal.<\/p>\n<p>Et ici, nous surveillons \u00e9galement non seulement des appareils individuels, mais aussi la sant\u00e9 globale du r\u00e9seau, tant en white-box, ce qui est relativement clair, qu'en black-box, ce qui est d\u00e9j\u00e0 plus complexe.<\/p>\n<p>\nDe quoi avons-nous besoin pour mettre en \u0153uvre de tels plans ambitieux ?<\/p>\n<ul>\n<li>Avoir une liste de tous les appareils dans le r\u00e9seau, leur emplacement, leurs r\u00f4les, mod\u00e8les, versions logicielles. <br \/>\n <i>kazan-leaf-1.lmu.net, Kazan, leaf, Juniper QFX 5120, R18.3.<\/i>\n <\/li>\n<li>Avoir un syst\u00e8me de description des services r\u00e9seau. <br \/>\n <i>IGP, BGP, L2\/3VPN, Policy, ACL, NTP, SSH.<\/i><\/li>\n<li>Savoir initialiser un appareil. <br \/>\n <i>Nom d'h\u00f4te, IP de gestion, Route de gestion, Utilisateurs, Cl\u00e9s RSA, LLDP, NETCONF<\/i><\/li>\n<li>Configurer l'appareil et ramener la configuration \u00e0 la version souhait\u00e9e (y compris une ancienne version).<\/li>\n<li>Tester la configuration<\/li>\n<li>V\u00e9rifier r\u00e9guli\u00e8rement l'\u00e9tat de tous les appareils pour d\u00e9tecter toute d\u00e9viation par rapport \u00e0 l'actuel et informer les personnes concern\u00e9es.<br \/>\n <i>La nuit, quelqu'un a discr\u00e8tement ajout\u00e9 une r\u00e8gle dans l'ACL.<\/i>.<\/li>\n<li>Surveiller le bon fonctionnement.<\/li>\n<\/ul>\n<p><\/p>\n<h1>Outils<\/h1>\n<p>\nCela semble assez complexe pour commencer \u00e0 d\u00e9composer le projet en composants.<\/p>\n<p>Et il y en aura dix :<\/p>\n<ol>\n<li>Syst\u00e8me d'inventaire.<\/li>\n<li>Syst\u00e8me de gestion de l'espace IP.<\/li>\n<li>Syst\u00e8me de description des services r\u00e9seau.<\/li>\n<li>M\u00e9canisme d'initialisation des dispositifs.<\/li>\n<li>Mod\u00e8le de configuration ind\u00e9pendant du fournisseur.<\/li>\n<li>Interface sp\u00e9cifique au fournisseur driver.<\/li>\n<li>M\u00e9canisme de livraison de la configuration au dispositif.<\/li>\n<li>CI\/CD<\/li>\n<li>M\u00e9canisme de sauvegarde et de recherche des \u00e9carts.<\/li>\n<li>Syst\u00e8me de surveillance.<\/li>\n<\/ol>\n<blockquote><p> Ceci est d'ailleurs un exemple de la fa\u00e7on dont la vision des objectifs du cycle a \u00e9volu\u00e9 - dans le brouillon des composants, il y avait 4.\n<\/p><\/blockquote>\n<p><img decoding=\"async\" alt=\"Automatisation pour les plus petits. Partie z\u00e9ro. Planification\" src=\"\/wp-content\/uploads\/2019\/07\/91132e29d359a4042b213529511f6d7d.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSur l'illustration, j'ai repr\u00e9sent\u00e9 tous les composants et l'appareil lui-m\u00eame. <br \/>\nLes composants chevauchants interagissent les uns avec les autres. <br \/>\nPlus le bloc est important, plus il faut pr\u00eater attention \u00e0 ce composant. <\/p>\n<p><\/p>\n<h2>Composant 1. Syst\u00e8me d'inventaire<\/h2>\n<p>\n\u00c9videmment, nous voulons savoir quel \u00e9quipement se trouve o\u00f9, et \u00e0 quoi il est connect\u00e9. <br \/>\nLe syst\u00e8me d'inventaire est une partie int\u00e9grante de toute entreprise. <br \/>\nLe plus souvent, pour les appareils r\u00e9seau, l'entreprise a un syst\u00e8me d'inventaire distinct qui r\u00e9pond \u00e0 des besoins plus sp\u00e9cifiques. <br \/>\nDans le cadre de cette s\u00e9rie d'articles, nous l'appellerons DCIM - Gestion de l'infrastructure des centres de donn\u00e9es. Bien que le terme DCIM, \u00e0 proprement parler, englobe bien plus.<\/p>\n<p>Pour nos besoins, nous y stockerons les informations suivantes sur l'appareil :<\/p>\n<ul>\n<li>Num\u00e9ro d'inventaire<\/li>\n<li>Nom\/description <\/li>\n<li>Mod\u00e8le (<i>Huawei CE12800, Juniper QFX5120, etc.<\/i>)<\/li>\n<li>Param\u00e8tres caract\u00e9ristiques (<i>cartes, interfaces, etc.<\/i>)<\/li>\n<li>R\u00f4le (<i>Leaf, Spine, Routeur de fronti\u00e8re, etc.<\/i>)<\/li>\n<li>Localisation (<i>r\u00e9gion, ville, centre de donn\u00e9es, rack, unit\u00e9<\/i>)<\/li>\n<li>Interconnexions entre appareils<\/li>\n<li>Topologie r\u00e9seau<\/li>\n<\/ul>\n<p><img decoding=\"async\" alt=\"Automatisation pour les plus petits. Partie z\u00e9ro. Planification\" src=\"\/wp-content\/uploads\/2019\/07\/fac708b1bf3640a943f90247bff8216e.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nIl est parfaitement clair que nous voulons nous-m\u00eame conna\u00eetre tout cela. <br \/>\nMais cela aidera-t-il dans un but d'automatisation ? <br \/>\nAbsolument. <br \/>\nPar exemple, nous savons que dans ce centre de donn\u00e9es sur les commutateurs Leaf, s'il s'agit de Huawei, les ACL pour filtrer un certain trafic doivent \u00eatre appliqu\u00e9es sur VLAN, et si c'est Juniper, alors sur l'unit\u00e9 0 de l'interface physique. <br \/>\nOu devons-nous d\u00e9ployer un nouveau serveur Syslog sur toutes les fronti\u00e8res de la r\u00e9gion.<\/p>\n<p>Nous y stockerons \u00e9galement des appareils r\u00e9seau virtuels, comme des routeurs virtuels ou des routeurs-reflecteurs. Nous pouvons ajouter des serveurs DNS, NTP, Syslog et en g\u00e9n\u00e9ral tout ce qui concerne le r\u00e9seau. <\/p>\n<h2>Composant 2. Syst\u00e8me de gestion de l'espace IP<\/h2>\n<p>\nOui, m\u00eame aujourd'hui, il existe des groupes de personnes qui enregistrent les pr\u00e9fixes et les adresses IP dans un fichier Excel. Mais l'approche moderne consiste plut\u00f4t en une base de donn\u00e9es, avec un front-end sur nginx\/apache, une API et des fonctionnalit\u00e9s \u00e9tendues pour la gestion des adresses IP et des r\u00e9seaux avec une s\u00e9paration par VRF.<br \/>\nIPAM \u2014 Gestion des adresses IP. <\/p>\n<p>Pour nos besoins, nous allons stocker les informations suivantes :<\/p>\n<ul>\n<li>VLAN<\/li>\n<li>VRF<\/li>\n<li>R\u00e9seaux\/Sous-r\u00e9seaux<\/li>\n<li>adresses IP<\/li>\n<li>Association des adresses aux dispositifs, des r\u00e9seaux aux emplacements et aux num\u00e9ros VLAN<\/li>\n<\/ul>\n<p><img decoding=\"async\" alt=\"Automatisation pour les plus petits. Partie z\u00e9ro. Planification\" src=\"\/wp-content\/uploads\/2019\/07\/6d476d48f95ed663d84cae052a86d129.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nIl est \u00e9galement clair que nous voulons nous assurer qu'en attribuant une nouvelle adresse IP pour le loopback du ToR, nous ne tr\u00e9buchons pas sur le fait qu'elle a d\u00e9j\u00e0 \u00e9t\u00e9 assign\u00e9e \u00e0 quelqu'un. Ou que le m\u00eame pr\u00e9fixe a \u00e9t\u00e9 utilis\u00e9 deux fois \u00e0 des endroits diff\u00e9rents du r\u00e9seau. <br \/>\nMais comment cela aidera-t-il \u00e0 l'automatisation ? <br \/>\nFacile. <br \/>\nNous demandons dans le syst\u00e8me le pr\u00e9fixe avec le r\u00f4le de Loopbacks, dans lequel il y a des adresses IP disponibles pour attribution \u2014 si trouv\u00e9, nous attribuons l'adresse, sinon, nous demandons la cr\u00e9ation d'un nouveau pr\u00e9fixe. <br \/>\nOu lors de la cr\u00e9ation de la configuration d'un appareil, nous pouvons apprendre depuis ce m\u00eame syst\u00e8me dans quel VRF doit se trouver l'interface. <br \/>\nEt lors du d\u00e9marrage d'un nouveau serveur, un script interroge le syst\u00e8me, d\u00e9couvre dans quel switch de serveur, dans quel port et quel sous-r\u00e9seau est attribu\u00e9 \u00e0 l'interface \u2014 c'est de l\u00e0 que l'adresse du serveur sera attribu\u00e9e. <\/p>\n<p>\nNous souhaitons r\u00e9unir DCIM et IPAM en un seul syst\u00e8me pour \u00e9viter de dupliquer des fonctions et de g\u00e9rer deux entit\u00e9s similaires. <br \/>\nC'est ce que nous allons faire. <\/p>\n<h2>Composant 3. Syst\u00e8me de description des services r\u00e9seau<\/h2>\n<p>\nAlors que les deux premiers syst\u00e8mes stockent des variables qui doivent encore \u00eatre utilis\u00e9es d'une certaine mani\u00e8re, le troisi\u00e8me d\u00e9crit pour chaque r\u00f4le d'appareil comment il doit \u00eatre configur\u00e9. <br \/>\nIl convient de distinguer deux types diff\u00e9rents de services r\u00e9seau : <\/p>\n<ul>\n<li>Infrastructure<\/li>\n<li>Client.<\/li>\n<\/ul>\n<p>Les premiers visent \u00e0 assurer la connectivit\u00e9 de base et la gestion de l'appareil. Cela inclut VTY, SNMP, NTP, Syslog, AAA, protocoles de routage, CoPP, etc. <br \/>\nLes seconds organisent des services pour le client : MPLS L2\/L3VPN, GRE, VXLAN, VLAN, L2TP, etc. <br \/>\nBien s\u00fbr, il y a aussi des cas limites \u2014 o\u00f9 classer MPLS LDP, BGP ? Et les protocoles de routage peuvent \u00e9galement \u00eatre utilis\u00e9s par les clients. Mais ce n'est pas essentiel. <\/p>\n<p>Les deux types de services sont d\u00e9compos\u00e9s en primitives de configuration :<\/p>\n<ul>\n<li>interfaces physiques et logiques (tag\/untag, mtu)<\/li>\n<li>adresses IP et VRF (IP, IPv6, VRF)<\/li>\n<li>ACL et politiques de traitement du trafic<\/li>\n<li>Protocoles (IGP, BGP, MPLS)<\/li>\n<li>Politiques de routage (listes de pr\u00e9fixes, communaut\u00e9s, filtres ASN).<\/li>\n<li>Services auxiliaires (SSH, NTP, LLDP, Syslog\u2026)<\/li>\n<li>Etc.<\/li>\n<\/ul>\n<p>\nComment nous allons proc\u00e9der, je n'en ai pas encore la moindre id\u00e9e. Nous en discuterons dans un article s\u00e9par\u00e9.<\/p>\n<p><img decoding=\"async\" alt=\"Automatisation pour les plus petits. Partie z\u00e9ro. Planification\" src=\"\/wp-content\/uploads\/2019\/07\/092bc3a4b875f4a6422ee13fb580ba4f.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPour \u00eatre un peu plus concret, nous pourrions d\u00e9crire que<br \/>\nUn commutateur Leaf doit avoir des sessions BGP avec tous les commutateurs Spine connect\u00e9s, importer dans le processus les r\u00e9seaux connect\u00e9s et accepter uniquement les r\u00e9seaux d'un certain pr\u00e9fixe des commutateurs Spine. Limiter CoPP IPv6 ND \u00e0 10 pps, etc. <br \/>\nEn revanche, les Spine maintiennent des sessions avec tous les Leaf connect\u00e9s, agissant comme des routeurs r\u00e9fl\u00e9chissants, et n'acceptent d'eux que des routes d'une certaine longueur et avec une certaine communaut\u00e9.<\/p>\n<h2>Composant 4. M\u00e9canisme d'initialisation de l'appareil<\/h2>\n<p>\nSous ce titre, je regroupe de nombreuses actions qui doivent avoir lieu pour que l'appareil apparaisse sur les radars et puisse \u00eatre acc\u00e9d\u00e9 \u00e0 distance.<\/p>\n<ol>\n<li>Enregistrer l'appareil dans le syst\u00e8me d'inventaire.<\/li>\n<li>Attribuer une adresse IP de gestion.<\/li>\n<li>Configurer l'acc\u00e8s de base \u00e0 celui-ci : <br \/>\nNom d'h\u00f4te, adresse IP de gestion, route vers le r\u00e9seau de gestion, utilisateurs, cl\u00e9s SSH, protocoles \u2014 telnet\/SSH\/NETCONF<\/li>\n<\/ol>\n<p>Il existe trois approches :<\/p>\n<ul>\n<li>Tout faire manuellement. L'appareil est amen\u00e9 sur le stand, o\u00f9 une personne ordinaire l'enregistrera dans les syst\u00e8mes, se connectera par console et le configurera. Cela peut fonctionner sur de petits r\u00e9seaux statiques.<\/li>\n<li>ZTP \u2014 Zero Touch Provisioning. Le mat\u00e9riel est arriv\u00e9, s'est install\u00e9, a obtenu une adresse via DHCP, est all\u00e9 sur un serveur sp\u00e9cial et s'est configur\u00e9 tout seul. <\/li>\n<li>Infrastructure de serveurs de console, o\u00f9 la configuration initiale se fait automatiquement via le port console.<\/li>\n<\/ul>\n<p>Nous parlerons de ces trois approches dans un article s\u00e9par\u00e9.<\/p>\n<p><img decoding=\"async\" alt=\"Automatisation pour les plus petits. Partie z\u00e9ro. Planification\" src=\"\/wp-content\/uploads\/2019\/07\/6d8d061e53b508edbbcbd98fe496ca91.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h2>Composant 5. Mod\u00e8le de configuration agnostique vis-\u00e0-vis du fournisseur<\/h2>\n<p>\nJusqu'\u00e0 pr\u00e9sent, tous les syst\u00e8mes \u00e9taient des morceaux \u00e9pars, donnant une description variable et d\u00e9clarative de ce que nous aimerions voir dans le r\u00e9seau. Mais t\u00f4t ou tard, il faudra faire face \u00e0 la r\u00e9alit\u00e9. <br \/>\n\u00c0 ce stade, pour chaque appareil sp\u00e9cifique, les primitives, services et variables sont combin\u00e9s en un mod\u00e8le de configuration, d\u00e9crivant en fait la configuration compl\u00e8te d'un appareil sp\u00e9cifique, mais de mani\u00e8re ind\u00e9pendante du fournisseur. <br \/>\nQuel est l'avantage de cette \u00e9tape ? Pourquoi ne pas simplement g\u00e9n\u00e9rer la configuration de l'appareil que l'on pourrait t\u00e9l\u00e9charger imm\u00e9diatement ? <br \/>\nEn fait, cela permet de r\u00e9soudre trois probl\u00e8mes :<\/p>\n<ol>\n<li> Ne pas s'adapter \u00e0 une interface d'interaction sp\u00e9cifique avec le dispositif. Que ce soit CLI, NETCONF, RESTCONF, SNMP, le mod\u00e8le sera le m\u00eame.<\/li>\n<li> Ne pas maintenir le nombre de templates\/scripts \u00e9gal au nombre de fournisseurs dans le r\u00e9seau, et en cas de changement de design, modifier la m\u00eame chose \u00e0 plusieurs endroits.<\/li>\n<li> Charger la configuration depuis le dispositif (sauvegarde), la d\u00e9composer dans un mod\u00e8le identique et comparer directement la configuration cible et celle existante pour calculer la diff\u00e9rence et pr\u00e9parer un patch de configuration qui modifiera uniquement les parties n\u00e9cessaires ou pour d\u00e9tecter des \u00e9carts.<\/li>\n<\/ol>\n<p><img decoding=\"async\" alt=\"Automatisation pour les plus petits. Partie z\u00e9ro. Planification\" src=\"\/wp-content\/uploads\/2019\/07\/a154c42ebe7978fcc5b2ce4f235516c9.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n\u00c0 l'issue de cette \u00e9tape, nous obtenons une configuration ind\u00e9pendante du fournisseur.<\/p>\n<h2>Composant 6. Pilote d'interface sp\u00e9cifique au fournisseur<\/h2>\n<p>\nNe vous laissez pas prendre par l'espoir que nous pourrons un jour configurer Cisco de la m\u00eame mani\u00e8re que Juniper, simplement en leur envoyant des appels exactement identiques. Malgr\u00e9 la mont\u00e9e en popularit\u00e9 des whiteboxes et l'apparition du support de NETCONF, RESTCONF, OpenConfig, le contenu sp\u00e9cifique livr\u00e9 par ces protocoles varie d'un fournisseur \u00e0 l'autre, et c'est l'une de leurs diff\u00e9rences concurrentielles qu'ils ne c\u00e9deront pas facilement. <br \/>\nC'est \u00e0 peu pr\u00e8s comme OpenContrail et OpenStack, qui ayant REST API comme leur interface NorthBound, attendent des appels compl\u00e8tement diff\u00e9rents. <\/p>\n<p>Ainsi, \u00e0 la cinqui\u00e8me \u00e9tape, le mod\u00e8le ind\u00e9pendant du fournisseur doit prendre la forme dans laquelle il sera envoy\u00e9 sur le mat\u00e9riel. <br \/>\nEt ici, tous les moyens sont bons (non) : CLI, NETCONF, RESTCONF, SNMP\u2026<\/p>\n<p>Nous aurons donc besoin d'un pilote qui traduira le r\u00e9sultat de l'\u00e9tape pr\u00e9c\u00e9dente au format requis par le fournisseur sp\u00e9cifique : ensemble de commandes CLI, structure XML.<\/p>\n<p><img decoding=\"async\" alt=\"Automatisation pour les plus petits. Partie z\u00e9ro. Planification\" src=\"\/wp-content\/uploads\/2019\/07\/6ed8e935183075fda60a209477f84937.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h2>Composant 7. M\u00e9canisme de livraison de la configuration sur le dispositif<\/h2>\n<p>\nNous avons g\u00e9n\u00e9r\u00e9 la configuration, mais il faut encore la livrer aux dispositifs \u2014 et, \u00e9videmment, pas manuellement. <br \/>\n<b>Tout d'abord<\/b>, la question se pose alors, quel transport allons-nous utiliser ? Et aujourd'hui, le choix n'est d\u00e9j\u00e0 pas n\u00e9gligeable :<\/p>\n<ul>\n<li>CLI (telnet, ssh)<\/li>\n<li>SNMP<\/li>\n<li>NETCONF<\/li>\n<li>RESTCONF<\/li>\n<li>API REST<\/li>\n<li>OpenFlow (bien qu'il soit d\u00e9plac\u00e9 de la liste puisqu'il s'agit d'un moyen de livrer le FIB, et non des configurations)<\/li>\n<\/ul>\n<p>Mettons ici les choses au clair. CLI \u2014 c'est du legacy. SNMP... euh.<br \/>\nRESTCONF \u2014 encore un animal myst\u00e9rieux, l'API REST n'est presque pas support\u00e9e. C'est pourquoi nous allons nous concentrer en boucle sur NETCONF.<\/p>\n<p>En r\u00e9alit\u00e9, comme le lecteur l'a d\u00e9j\u00e0 compris, nous avons d\u00e9j\u00e0 d\u00e9fini l'interface \u00e0 ce stade \u2014 le r\u00e9sultat de l'\u00e9tape pr\u00e9c\u00e9dente est d\u00e9j\u00e0 pr\u00e9sent\u00e9 au format de l'interface choisie.<\/p>\n<p><b>Deuxi\u00e8mement<\/b>, mais quels outils allons-nous utiliser pour cela ?<br \/>\nIci, le choix est \u00e9galement vaste :<\/p>\n<ul>\n<li>Un script fait maison ou une plateforme. Armons-nous de ncclient et d'asyncIO et faisons-le nous-m\u00eames. Qu'est-ce qui nous emp\u00eache de construire un syst\u00e8me de d\u00e9ploiement \u00e0 partir de z\u00e9ro ?<\/li>\n<li>Ansible avec sa riche biblioth\u00e8que de modules r\u00e9seau.<\/li>\n<li>Salt avec son travail limit\u00e9 sur les r\u00e9seaux et son int\u00e9gration avec Napalm.<\/li>\n<li>Napalm lui-m\u00eame, qui conna\u00eet quelques fournisseurs et c'est tout, au revoir.<\/li>\n<li>Nornir \u2014 un autre petit outil que nous diss\u00e9querons plus tard.<\/li>\n<\/ul>\n<p>Ici, le favori n'est pas encore choisi \u2014 nous allons exp\u00e9rimenter.<\/p>\n<p>Qu'est-ce qui est important ici ? Les cons\u00e9quences de l'application de la configuration. <br \/>\nAvec succ\u00e8s ou non. L'acc\u00e8s au mat\u00e9riel est-il maintenu ou non ? <br \/>\nIl semble qu'un commit avec confirmation et validation de ce qui a \u00e9t\u00e9 charg\u00e9 sur l'appareil pourrait aider. <br \/>\nCeci, combin\u00e9 \u00e0 une mise en \u0153uvre correcte de NETCONF, r\u00e9duit consid\u00e9rablement le nombre d'appareils compatibles \u2014 les commits normaux ne sont pas support\u00e9s par beaucoup de fabricants. Mais c'est juste une des conditions requises dans <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%97%D0%B0%D0%BF%D1%80%D0%BE%D1%81_%D0%BF%D1%80%D0%B5%D0%B4%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F\">RFP<\/a><\/noindex>. Apr\u00e8s tout, personne ne s'inqui\u00e8te du fait qu'aucun fournisseur russe ne r\u00e9pondra aux exigences de l'interface 32*100GE. Ou s'inqui\u00e8te-t-il ?<\/p>\n<p><img decoding=\"async\" alt=\"Automatisation pour les plus petits. Partie z\u00e9ro. Planification\" src=\"\/wp-content\/uploads\/2019\/07\/59d8ad3b55b9c107642550bb06fc759a.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h2>Composant 8. CI\/CD<\/h2>\n<p>\n\u00c0 ce stade, nous avons d\u00e9j\u00e0 une configuration pr\u00eate pour tous les appareils du r\u00e9seau.<br \/>\nJ'\u00e9cris \u00ab pour tous \u00bb, car nous parlons de la version de l'\u00e9tat du r\u00e9seau. Et m\u00eame si nous devons changer les param\u00e8tres d'un seul commutateur, les modifications sont calcul\u00e9es pour l'ensemble du r\u00e9seau. \u00c9videmment, elles peuvent \u00eatre nulles pour la majorit\u00e9 des n\u0153uds.<\/p>\n<p>Mais, comme d\u00e9j\u00e0 mentionn\u00e9 ci-dessus, nous ne sommes pas des barbares pour tout pousser directement en production. <br \/>\nLa configuration g\u00e9n\u00e9r\u00e9e doit d'abord passer par un Pipeline CI\/CD.<\/p>\n<blockquote><p>CI\/CD signifie Int\u00e9gration Continue, D\u00e9ploiement Continu. C'est une approche o\u00f9 l'\u00e9quipe ne publie pas une nouvelle version majeure tous les six mois, rempla\u00e7ant compl\u00e8tement l'ancienne, mais int\u00e8gre r\u00e9guli\u00e8rement (D\u00e9ploiement) de nouvelles fonctionnalit\u00e9s en petites portions, chacune \u00e9tant compl\u00e8tement test\u00e9e pour la compatibilit\u00e9, la s\u00e9curit\u00e9 et la fonctionnalit\u00e9 (Int\u00e9gration).\n<\/p><\/blockquote>\n<p>Pour cela, nous disposons d'un syst\u00e8me de contr\u00f4le de version qui suit les modifications de la configuration, d'un laboratoire dans lequel nous v\u00e9rifions que le service client ne tombe pas en panne, d'un syst\u00e8me de surveillance qui v\u00e9rifie ce fait, et la derni\u00e8re \u00e9tape consiste \u00e0 d\u00e9ployer les modifications dans le r\u00e9seau de production.<\/p>\n<p>\u00c0 l'exception des commandes de d\u00e9bogage, tous les changements sur le r\u00e9seau doivent passer par le pipeline CI\/CD \u2014 c'est notre garantie d'une vie tranquille et d'une carri\u00e8re longue et heureuse.<\/p>\n<p><img decoding=\"async\" alt=\"Automatisation pour les plus petits. Partie z\u00e9ro. Planification\" src=\"\/wp-content\/uploads\/2019\/07\/101a5ff87c7a9c7b6776aca9daf762a4.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h2>Composant 9. Syst\u00e8me de sauvegarde et de d\u00e9tection des anomalies<\/h2>\n<p>\nIl n'est pas n\u00e9cessaire de parler trop des sauvegardes. <br \/>\nNous allons simplement les enregistrer soit par cron, soit \u00e0 la suite d'un changement de configuration dans git.<\/p>\n<p>La deuxi\u00e8me partie est plus int\u00e9ressante \u2014 quelqu'un doit surveiller ces sauvegardes. Dans certains cas, cette personne doit revenir en arri\u00e8re et tout remettre comme c'\u00e9tait, tandis que dans d'autres, il faut alerter quelqu'un qu'il y a un probl\u00e8me. <br \/>\nPar exemple, si un nouvel utilisateur appara\u00eet qui n'est pas inscrit dans les variables, il faut le supprimer au plus vite du hack. Et si une nouvelle r\u00e8gle de pare-feu est apparue, mieux vaut ne pas y toucher, quelqu'un a peut-\u00eatre simplement activ\u00e9 le d\u00e9bogage, ou peut-\u00eatre qu'un nouveau service, maladroit, a \u00e9t\u00e9 mal configur\u00e9, alors que des utilisateurs l'utilisent d\u00e9j\u00e0.<\/p>\n<p>Nous ne pourrons de toute fa\u00e7on pas nous \u00e9chapper d'un certain \u00e9cart dans l'ensemble du r\u00e9seau, malgr\u00e9 tous les syst\u00e8mes d'automatisation et la main de fer de la direction. Pour d\u00e9boguer des probl\u00e8mes, personne ne modifiera la configuration dans les syst\u00e8mes. D'autant plus que le mod\u00e8le de configuration peut m\u00eame ne pas le pr\u00e9voir. <\/p>\n<blockquote><p>Par exemple, une r\u00e8gle de pare-feu pour compter le nombre de paquets \u00e0 une certaine IP, pour localiser le probl\u00e8me \u2014 c'est une configuration temporaire tout \u00e0 fait standard.\n<\/p><\/blockquote>\n<p><img decoding=\"async\" alt=\"Automatisation pour les plus petits. Partie z\u00e9ro. Planification\" src=\"\/wp-content\/uploads\/2019\/07\/390f78139d336f1fc2c60573bccfe76c.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h2>Composant 10. Syst\u00e8me de surveillance<\/h2>\n<p>\nAu d\u00e9but, je ne pr\u00e9voyais pas d'aborder le sujet de la surveillance \u2014 c'est un sujet complexe, volumineux et controvers\u00e9. Mais au fil du r\u00e9cit, il est devenu \u00e9vident que c'est une partie int\u00e9grante de l'automatisation. Et on ne peut tout simplement pas l'ignorer, m\u00eame sans pratique. <\/p>\n<p>En d\u00e9veloppant cette id\u00e9e \u2014 c'est une partie organique du processus CI\/CD. Apr\u00e8s le d\u00e9ploiement de la configuration sur le r\u00e9seau, nous devons \u00eatre en mesure de d\u00e9terminer si tout est en ordre. <br \/>\nEt il ne s'agit pas seulement de graphiques d'utilisation des interfaces ou de disponibilit\u00e9 des n\u0153uds, mais aussi de choses plus subtiles \u2014 la pr\u00e9sence des routes n\u00e9cessaires, leurs attributs, le nombre de sessions BGP, de voisins OSPF, et la fonctionnalit\u00e9 de bout en bout des services qui en d\u00e9pendent.<br \/>\nLes logs syst\u00e8me ne cessent-ils pas d'\u00eatre enregistr\u00e9s sur le serveur externe, le SFlow agent ne s'est-il pas rompu, les pertes dans les files d'attente n'ont-elles pas commenc\u00e9 \u00e0 augmenter, et la connectivit\u00e9 entre certaines paires de pr\u00e9fixes n'est-elle pas alt\u00e9r\u00e9e ?<\/p>\n<p>Dans un article s\u00e9par\u00e9, nous r\u00e9fl\u00e9chirons \u00e9galement \u00e0 cela.<\/p>\n<p><img decoding=\"async\" alt=\"Automatisation pour les plus petits. Partie z\u00e9ro. Planification\" src=\"\/wp-content\/uploads\/2019\/07\/08aeee4939081abb21e61abadd0ce5de.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><img decoding=\"async\" alt=\"Automatisation pour les plus petits. Partie z\u00e9ro. Planification\" src=\"\/wp-content\/uploads\/2019\/07\/13c186070c85fd00f7b6923df154f1b6.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h1>Conclusion<\/h1>\n<p>\nJ'ai choisi comme base l'un des designs modernes de r\u00e9seau de data centers \u2014 L3 Clos Fabric avec BGP comme protocole de routage.<br \/>\nNous construirons le r\u00e9seau cette fois-ci sur Juniper, car l'interface JunOs est maintenant conviviale.<\/p>\n<p>Nous compliquerons notre vie en utilisant uniquement des outils Open Source et un r\u00e9seau multi-vendeurs \u2014 donc en plus de Juniper, je choisirai un autre heureux \u00e9lu au fur et \u00e0 mesure.<\/p>\n<p>Le plan des prochaines publications est \u00e0 peu pr\u00e8s le suivant :<br \/>\nD'abord, je parlerai des r\u00e9seaux virtuels. Premi\u00e8rement, parce que cela m'int\u00e9resse, et deuxi\u00e8mement, parce que sans cela, le design du r\u00e9seau d'infrastructure ne sera pas tr\u00e8s clair.<br \/>\nEnsuite, sur le design du r\u00e9seau : topologie, routage, politiques.<br \/>\nNous construirons un banc d'essai de laboratoire.<br \/>\nNous r\u00e9fl\u00e9chirons et peut-\u00eatre pratiquerons l'initialisation d'un appareil dans le r\u00e9seau.<br \/>\nEt ensuite, chaque composant en d\u00e9tails intimes.<\/p>\n<p>Et oui, je ne promets pas de finir ce cycle avec une solution \u00e9l\u00e9gante. \ud83d\ude42<\/p>\n<h5>Liens utiles<\/h5>\n<p><\/p>\n<ul>\n<li>Avant de plonger dans la s\u00e9rie, il vaut la peine de lire le livre de Natasha Samoylenko <noindex><a rel=\"nofollow\" href=\"https:\/\/natenka.gitbook.io\/pyneng\/\">Python pour les ing\u00e9nieurs r\u00e9seau.<\/a><\/noindex>. Et peut-\u00eatre m\u00eame de suivre <noindex><a rel=\"nofollow\" href=\"https:\/\/natenka.github.io\/pyneng-online\/\">cours<\/a><\/noindex>.<\/li>\n<li>Il sera \u00e9galement utile de lire <noindex><a rel=\"nofollow\" href=\"https:\/\/tools.ietf.org\/html\/rfc7938\">RFC<\/a><\/noindex> sur le design des data centers de Facebook \u00e9crit par Petr Lapukhov.<\/li>\n<li>La documentation sur l'architecture vous donnera une id\u00e9e de la fa\u00e7on dont fonctionne le SDN Overlay. <noindex><a rel=\"nofollow\" href=\"https:\/\/tungstenfabric.github.io\/website\/Tungsten-Fabric-Architecture.html\">Tungsten Fabric<\/a><\/noindex> (anciennement Open Contrail).<\/li>\n<\/ul>\n<h5>Merci<\/h5>\n<p>\nRoman Gorge. Pour les commentaires et corrections.<br \/>\nArtyom Chernobai. Pour le KDPV.<br \/>\n<br \/>Source : <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/453516\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0421\u0414\u0421\u041c \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u043b\u0441\u044f, \u0430 \u0431\u0435\u0441\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c\u043d\u043e\u0435 \u0436\u0435\u043b\u0430\u043d\u0438\u0435 \u043f\u0438\u0441\u0430\u0442\u044c \u2014 \u043e\u0441\u0442\u0430\u043b\u043e\u0441\u044c. \u0414\u043e\u043b\u0433\u0438\u0435 \u0433\u043e\u0434\u044b \u043d\u0430\u0448 \u0431\u0440\u0430\u0442 \u0441\u0442\u0440\u0430\u0434\u0430\u043b \u043e\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0440\u0443\u0442\u0438\u043d\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u044b, \u0441\u043a\u0440\u0435\u0449\u0438\u0432\u0430\u043b \u043f\u0430\u043b\u044c\u0446\u044b \u043f\u0435\u0440\u0435\u0434 \u043a\u043e\u043c\u043c\u0438\u0442\u043e\u043c \u0438 \u043d\u0435\u0434\u043e\u0441\u044b\u043f\u0430\u043b \u0438\u0437-\u0437\u0430 \u043d\u043e\u0447\u043d\u044b\u0445 \u0440\u043e\u043b\u0431\u044d\u043a\u043e\u0432. \u041d\u043e \u0442\u0451\u043c\u043d\u044b\u043c \u0432\u0440\u0435\u043c\u0435\u043d\u0430\u043c \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442 \u043a\u043e\u043d\u0435\u0446. \u042d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0451\u0439 \u044f \u043d\u0430\u0447\u043d\u0443 \u0441\u0435\u0440\u0438\u044e \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u043c\u043d\u0435 \u0432\u0438\u0434\u0438\u0442\u0441\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u044f. \u041f\u043e \u0445\u043e\u0434\u0443 \u0434\u0435\u043b\u0430 \u0440\u0430\u0437\u0431\u0435\u0440\u0451\u043c\u0441\u044f \u0441 \u044d\u0442\u0430\u043f\u0430\u043c\u0438 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u0438, \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435\u043c \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445, \u0444\u043e\u0440\u043c\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0435\u0439 \u0434\u0438\u0437\u0430\u0439\u043d\u0430, \u0441 RestAPI, [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":26891,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-35972","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.2.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0421\u0414\u0421\u041c \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u043b\u0441\u044f, \u0430 \u0431\u0435\u0441\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c\u043d\u043e\u0435 \u0436\u0435\u043b\u0430\u043d\u0438\u0435 \u043f\u0438\u0441\u0430\u0442\u044c \u2014 \u043e\u0441\u0442\u0430\u043b\u043e\u0441\u044c.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/fr\/blog\/administrirovanie\/avtomatizatsiya-dlya-samyh-malenkih-chast-nulevaya-planirovanie\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"fr_FR\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u044f \u0434\u043b\u044f \u0441\u0430\u043c\u044b\u0445 \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0438\u0445. \u0427\u0430\u0441\u0442\u044c \u043d\u0443\u043b\u0435\u0432\u0430\u044f. \u041f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0421\u0414\u0421\u041c \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u043b\u0441\u044f, \u0430 \u0431\u0435\u0441\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c\u043d\u043e\u0435 \u0436\u0435\u043b\u0430\u043d\u0438\u0435 \u043f\u0438\u0441\u0430\u0442\u044c \u2014 \u043e\u0441\u0442\u0430\u043b\u043e\u0441\u044c.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/fr\/blog\/administrirovanie\/avtomatizatsiya-dlya-samyh-malenkih-chast-nulevaya-planirovanie\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T19:08:54+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T19:08:54+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Automatisation pour les plus petits. Partie z\u00e9ro. Planification | ProHoster","description":"Le CDSM est termin\u00e9, mais le d\u00e9sir incontr\u00f4l\u00e9 d'\u00e9crire reste.","canonical_url":"https:\/\/prohoster.info\/fr\/blog\/administrirovanie\/avtomatizatsiya-dlya-samyh-malenkih-chast-nulevaya-planirovanie","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"fr_FR","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u044f \u0434\u043b\u044f \u0441\u0430\u043c\u044b\u0445 \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0438\u0445. \u0427\u0430\u0441\u0442\u044c \u043d\u0443\u043b\u0435\u0432\u0430\u044f. \u041f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 | ProHoster","og:description":"\u0421\u0414\u0421\u041c \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u043b\u0441\u044f, \u0430 \u0431\u0435\u0441\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c\u043d\u043e\u0435 \u0436\u0435\u043b\u0430\u043d\u0438\u0435 \u043f\u0438\u0441\u0430\u0442\u044c \u2014 \u043e\u0441\u0442\u0430\u043b\u043e\u0441\u044c.","og:url":"https:\/\/prohoster.info\/fr\/blog\/administrirovanie\/avtomatizatsiya-dlya-samyh-malenkih-chast-nulevaya-planirovanie","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T19:08:54+00:00","article:modified_time":"2019-10-31T19:08:54+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"35972","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-22 01:28:20","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 09:58:22","updated":"2026-01-22 01:28:20","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/posts\/35972","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/comments?post=35972"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/posts\/35972\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/media\/26891"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/media?parent=35972"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/categories?post=35972"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/tags?post=35972"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}