 Ok, donc bienvenue à l'enseignement de l'enseignement de l'upgrade. Juste une petite introduction sur ce que nous sommes. Je suis Frédéric Le Pied, je suis en charge de l'ingénierie à l'RCIP. L'RCIP est une pratique d'innovation redactée cloud. C'est une nouvelle entité qui est dans le service et des organismes productifs à la redactée. Je m'achève de l'ingénierie à l'organisation. C'est mon manager. Je dois le faire bien aujourd'hui. Je m'appelle Emillian, je travaille dans l'installer. Je suis software engineer. Ma spécialisation est l'automation dans OpenStack, qui est spécifiquement perpète. C'est tout. Donc, n'hésitez pas si vous avez des questions. Risez votre main. Oh, vas-y. Ça ne marche pas. Juste une petite discrétation. Les exemples que nous allons utiliser dans ces présentations sont plus pour des outils et des produits innovants. Ce n'est pas les redactes. Les redactes utilisent différentes technologies. Mais la philosophie des outils et de la façon dont vous faites les ingrédients sera la même chose. OpenStack est un endroit merveilleux. Mais, comme vous le savez, les ingrédients ne sont pas facile. Donc, juste une petite check. Qui fait les ingrédients dans la production ? Risez votre main. Donc, qui ne souffre pas des ingrédients ? OK. C'est bien. Donc, nous allons voir comment on définit un upgrade. Parce que tout le monde a une définition différente de ce que c'est un upgrade. Donc, pour être sûr qu'on est sur la même ligne, ce que l'on définit comme un upgrade, un successful upgrade, c'est quand vous n'avez besoin d'ajouter un nouveau hardware, vous n'avez pas besoin d'ajouter un extrait de capacité. Bien sûr, ce qui est très important, c'est d'avoir moins d'interruption possible. L'arrivée, bien sûr, sans interruption. Et nous sommes aussi en contact avec des ingrédients plus petits, comme vous avez juste une fixation de sécurité, vous voulez passer sur vos systèmes. Donc, on a un nouveau upgrade, c'est-à-dire un nouveau version de OpenStack, pour exemple. Et bien sûr, ce que nous voulons, c'est quelque chose d'efficient, fast and reproducible. Donc, dans cette présentation, notre maitre est d'essayer de la importance de l'architecture, la importance d'avoir une capacité libre, d'être capable de bouger autour de la VM, par exemple. Et aussi, c'est un petit peu optionnel, mais c'est comme ça que nous travaillons. Nous sentons que l'image basé au déploiement et l'image basé au workflow, c'est le quai pour être reproduisable et pour être le déploiement. Et l'automation est le numéro 1, c'est d'essayer de penser à un upgrade. Merci. Alors, nous allons parler de l'architecture. Ce n'est pas... Nous n'allons pas aller plus loin dans l'architecture dans OpenStack. Donc, dans tout l'architecture que vous utilisez dans votre plateforme, il faut être redondant. C'est-à-dire que vous avez besoin d'H.A. Pas seulement pour l'infrastructure, mais aussi pour les ressources d'OpenStack. Dans ces photos, nous pouvons avoir un look. Nous utilisons des outils pour donner l'H.A. Évidemment, cette photo n'est pas complète et nous avons mis beaucoup de photos pour montrer que certaines ressources d'OpenStack doivent être à l'H.A. Si vous prenez un exemple, dans l'architecture, vous avez besoin d'avoir l'H.A. pour les routers virtuels qui sont un futur qui est en neutron de la Juno. Donc, cette architecture est juste un exemple de ce que nous utilisons pour déployer l'OpenStack à Tinovans avant. Nous utilisons, pour l'exemple, pour les storages, nous utilisons S.E.F, qui est une back-end pour les novas et les cindres des compétences d'OpenStack. Nous aussi, nous utilisons Swift comme back-end pour Glance. Pour l'H.A. dans l'architecture, nous utilisons MySQL, Galera et MongoDB, avec un réplique et Sharding. Donc, c'est juste un exemple de ce qu'il faut pour déployer si vous voulez l'H.A. dans votre plateforme et nous sommes en train d'avoir l'H.A. si vous voulez augmenter votre plateforme. Pourquoi avez-vous besoin de l'H.A.? Pourquoi avez-vous besoin de l'H.A. Parce que la façon d'augmenter l'OpenStack, vous le verrez dans les next slides. Nous sommes interrompés d'un service et nous comptons d'aider eux-mêmes d'y arriver et d'avoir l'intelligence d'établir une note qui marche. Nous essayons d'avoir le moins de temps possible durant l'augmentation de l'H.A. Donc, l'un des plus grands expérimentations, quand vous voulez augmenter, et spécifiquement pour les notes computers à la scale, vous avez besoin d'une capacité fréquente. Dans le professeur, Matt dit qu'il faut évacuer des VMs quand ça marche. Vous avez besoin d'une capacité fréquente. Si vous avez un ton de VMs, vous voulez évacuer les notes computers avant de l'augmenter. Si quelque chose est wrong et vous voulez fall back d'avoir un pair, parfois c'est une bonne idée. Donc, cette partie est plus optionnelle. Vous avez vu dans la présentation que les gens utilisent les packages pour augmenter leur système et pour installer leur système. Nous pensons que l'image basée d'un workflow est plus facile pour reproduire et installer et augmenter votre système. Donc, la chose basique est que vous buildez ces images seulement une fois et vous reusez elles comme vous voulez. Vous pouvez réinstaller je ne sais pas, 3 mois plus tard vous avez exactement la même chose. Donc, quelque chose peut être important. Vous installez votre image et vous upgradez votre image. Et le point principal est que quand vous upgradez un système ou quand vous installez un système vous avez un système d'advance. Donc, il y aura exactement les mêmes files, exactement les mêmes contenus sur votre système. D'où vous upgradez ou vous installez. Vous buildez vos images avec un set d'outils et bien sûr, vous utilisez un système CI pour construire vos images. Maintenant, tout le monde fait ça dans le système CI. Nous avons notre propre outil pour construire les images et vous pouvez choisir les outils que vous voulez. Bien sûr, vous utilisez les packages pour construire les images de vous-même et pas pour upgradez le système mais pour construire ces images et puis, vous compressez elles et vous archivez elles. Et comme je l'ai dit, vous pouvez réusez elles autant que vous voulez. Donc, un an plus tard, vous pouvez recruter un customer qui vous appelle pour une installation de l'ancien. Il n'y a pas de problème de reproduire. Bien sûr, votre version, tous vos sources et vous utilisez votre archive de votre image avec la même version de l'idée. Et de cette façon, vous pouvez reproduire votre image à ce niveau source en utilisant le cloud. Vous archivez elles dans un storage de cloud, dans un storage d'objectif. Notre expérience est que, au début, nous utilisons beaucoup de différentes images une pour chaque rôle, une pour la computer, une pour le contrôleur, une pour le networking. Nous devions faire beaucoup de différentes architectures et, à l'avion, c'était une explosion d'images et c'était très difficile de manager toute cette combinaison. Donc, ce que nous avons fait, c'est que nous avons arrêté de construire toutes ces images et nous avons construit seulement 2 images, une pour le service de l'installation et une pour les services de l'installation avec tous les services installés mais rien n'a été activé. Et puis, le management de la configuration va activer les services qui sont nécessaires sur les notes. Nous avons seulement 2 images pour un complet déployement. Ce que nous avons fait, c'est qu'on est désactivé en fait, le manager de la package à l'intérieur des images pour protéger l'utilisateur d'utiliser ces tools durant leur travail. De cette façon, nous pouvons garder le système consistant et c'est facile de reproduire les mêmes images parce que, vous savez, rien n'a été touché et c'est agréable très facilement. L'autre caractéristique de désactiviser ces tools de package c'est que c'est speed-up beaucoup pour le chef, etc. Parce qu'ils n'ont pas besoin d'always tenter d'élever la package cash et de faire l'utilisation. Et avec ce désactivation c'est une no-op opération donc c'est très facile et vous speed-up votre configuration management. Bien sûr, nous ne pouvons pas les retirer du système parce que, en cas d'émergence, nous pouvons les réélever. Donc, nous avons des moyens de les mettre à l'intérieur si nécessaire. Si vous utilisez ces tools pour l'élever du système 1 c'est très lent et c'est très difficile à l'éclairer. C'est le numéro de 20 minutes pour l'élever du système. L'autre drawback c'est que vous devez manager vos opositions et vous devez les élever pour avoir quelque chose reproduisable sur tout votre système. Et en utilisant les images c'est très... vous n'avez pas d'élever ces opositions. Et l'autre avantage c'est que c'est très rapide à peu près 20 secondes per note pour aller d'une version pour une autre. Et l'advantage que vous pouvez faire avec les opositions c'est que vous pouvez y retourner. En fait, vous pouvez y retourner pour la première version si vous avez des problèmes. On va voir comment on upgrade les opositions. Il y a des pièces des précédents. On va comprendre comment on upgrade les opositions à quel point on utilise et comment ça fonctionne. Après ça, on verra les updates de configuration. On verra comment faire des constructions autour de ça. Et finalement, on verra les photos. On a un slide avec les opositions que l'on aime pour augmenter la plateforme. Qu'est-ce que vous avez besoin d'augter l'image ? Quand vous faites l'image c'est très spécial comparé au système de packaging. Vous n'aurez pas besoin d'augter votre système. Vous avez besoin d'un outil pour augmenter votre système. On utilise E-Deploy qui est un outil qui utilise la technologie d'air-sync. C'est très proche. Nous faisons un outil entre le master et le note que nous aimerons d'augter. De cette façon, vous n'aurez pas besoin d'augter le service restart. Ce n'est plus tard. Je vais expliquer la partie orchestration. De cette façon, c'est aussi la possibilité d'augter. Je ne sais pas si vous avez parlé avant, mais ils parlent de l'environnement virtuel en Python. De cette façon, c'est une autre option. On va se faire de l'augmentation d'augter. On va faire de l'augmentation d'augmentation d'augmentation. On va faire de l'augmentation d'augmentation. On va mettre en place des outils pour euh... On va mettre en place ce type d'augmentation d'augmentation d'augmentation d'augmentation. On va mettre en place des outils pour publier masque. On va Puppet, il déploie, comme je l'ai dit, pour l'incustrateur, on est en train de penser à Ansible. Puppet et chef sont très bons pour la configuration. On pensait en utilisant Ansible pour l'incustration et le système multiple en même temps. Ansible a cette position ici, où il prend la responsabilité de restarter les services. C'est très difficile d'utiliser quand vous avez un cluster que vous voulez augmenter. Ansible est très bon pour cela, car vous pouvez contrôler exactement ce que vous voulez faire à l'heure correcte. Et Puppet va juste s'occuper de la configuration et s'assurer que le service fonctionne. Dans l'incustration, on le verra plus tard, à quel point on upgrade l'image. C'est comme un général fonctionnement de comment on upgrade l'image. On réunit des actions avant d'augmenter l'image. Parfois, on peut juste faire un backup, ou ajouter un sshk, ou quelque chose de très spécifique à la plateforme. Après cela, on évoquera les ressources. Cela peut être des vm, des routers, des storages, etc. Nous aimerions évacuer une zone de zone, afin d'évacuer le downtime. Après cela, on arrête les services OpenStack. Et après, on arrête les services Infra. On appelle l'infra comme service like MySQL, HAProxy, ou d'autres appareils de système que nous aimerions arrêter avant d'augmenter l'image. Et après, on upgrade la packaging. Nous n'avons pas utilisé les outils de packaging pour cela. Nous utilisons un AirSync. En quelques secondes, on upgrade l'image. On upgrade le new OpenStack ou le new software que vous avez sur votre image. Et après, on remercie les sshk et on appartient que vous appartiez le service après l'augmentation. On appartient que vous upgradez votre database si nécessaire. Nous avons un exemple avec l'évacuation et la migration des nodes. J'ai un exemple d'exemple de code après ce slide de Playbook. Mais ce slide explique le très haut niveau de travail que nous pensons. Comme je l'ai dit, vous évacuez votre instance, et vous disiez que vous n'avez pas décédé un nouvel vm sur le node que vous voulez augmenter. Vous updatesz le système, vous updatesz le config, vous vous assurez que les services sont en train, comme LibVirt, Nova Compute, Networking, Selometer, Agents, etc. Et par la fin, vous testez si les services sont en train. C'est un exemple d'exemple de snippet. Ce n'est pas un code en cible. Nous pensons à créer un snippet par service. Nous avons une action d'évacuer la compute. Nous avons une action d'invacuer le service et nous avons une action d'enlever la compute. Regarde les tags, c'est important pour le suivi. Nous utilisons les tags d'invcuer pour faire la position d' orderer... quand nous voulons faire les orders dans ce different acteur que nous faisons. Comment utiliser les snippets aujourd'hui? aujourd'hui, je pense que la plupart des gens dans la salle sont utilisés des outils pour s'adapter, comme NCBURL ou Puppet, ou autre chose, mais ils allaient utiliser ces outils manuellement, et nous pensions sur comment pouvons-nous générer ces playbooks, parce qu'ils allaient être très répétitifs entre les outils. Si vous utilisez pour s'adapter OpenStack et re-release, vous verrez que c'est toujours toujours les mêmes actions. Vous devez arrêter des services, vous devez augmenter le DB, vous devez updates des configurations, et vous devez commencer un service. C'est la plupart des cases de ces types d'actions. Nous avons écrit un élément qui est un code NCBURL, et nous avons une SNPET per service, ce qui peut être un service OpenStack, mais aussi un service système. Donc, de cette façon, nous avons une libraire de SNPET que nous allons générer les playbooks en plus d'un tool, mais d'abord, vous devez comprendre comment augmenter un service spécifique. Pour cela, vous devez conclure ce que l'on upgrade dans l'image. Si vous construisiez une nouvelle image, vous devez comprendre ce que vous devez augmenter, les services que vous upgradez, et vous devez aussi comprendre les services que vous avez réunis sur chaque node. Vous devez faire l'automation autour de cela, parce que quand vous avez beaucoup de déploiements, en plus de ces cases, ils ne utilisent pas les mêmes architectures, donc vous ne voulez pas répéter le même process manualement à chaque fois. Avant de vous montrer la photo de comment nous générer les playbooks NCBURL, nous avons essayé de respecter des practices NCBURL. La première, nous avons utilisé les tags dans les SNPETs pour définir l'ordering. Cela signifie que vous pouvez mettre des SNPETs pour quelques services, et si vous savez que l'action doit être réunie avant d'un autre, qui peut-être dans un autre SNPET, vous pouvez faire sure que vous utilisez un tag qui est plus bas que l'autre. C'est pourquoi, si vous regardez sur ce slide, chaque pointe est en fait un tag non-sible. Donc, quand vous write les SNPETs, vous devez prendre en compte les tags pour l'ordering. C'est très important, spécialement quand vous êtes en train de rouler un cluster. Pour les nodes HA, comme les contrôles, nous sommes en train de rouler le code non-sible dans le serial, node après node, et bien sûr, nous arrêtons si quelque chose est faible. Nous ne voulons pas briser tout, donc si quelque chose est faible, nous pouvons détecter et arrêter. Pour les compétences, nous sommes en train de rouler les playbooks en parallèle, donc vous pouvez avoir un processus plus rapide. Le tool t'essaie d'être capable de restarter, et non de restarter, mais de continuer le processus rapide, si quelque chose est faible, et vous devez faire un pause, vous pouvez continuer le processus rapide facilement. Et comme je l'ai dit, nous avons un snippet par service. Donc, c'est la toute picture de comment nous pouvons générer le playbook en cible, par rôle. Donc un rôle peut être un contrôleur ou des nodes de compétences, par exemple. Donc, pour faire un petit summary, nous construisons une nouvelle image, nous compitons la différence entre le premier, et nous fabriquons une analyse du changement. Par rapport à cela, nous sommes en train de connaître les services qui sont en train de rouler les nodes. Nous utilisons l'application Puppet pour enquérir le catalogue des nodes rémunérés. Donc nous pouvons connaître les services et les services qui sont en train de rouler les nodes. Et donc nous pouvons compter par utilisant des outils pour comprendre ce qu'on a besoin d'augmenter, les services qu'on a besoin d'augmenter, et faire cette association entre les snippets et les services managés par Puppet. C'est un exemple avec Puppet. Évidemment, vous pouvez utiliser la même chose avec d'autres outils. Donc, quand vous avez votre association entre ce qu'il y a sur les nodes et comment augmenter les services, vous générez les playbooks. Et si vous essayez le tour, vous verrez à la fin, vous verrez des playbooks par ordre qui devraient avoir la bonne orchestration et qui devraient augmenter les services correctes sur les nodes. Donc, juste pour conclure, juste les 4 choses que vous avez besoin d'oublier dans ce talk, c'est que si vous voulez plus d'interruption possible, vous avez besoin d'H.A. dans votre architecture pour votre déploiement. Si vous voulez pouvoir évacuer votre VM ou votre VRWater, vous avez besoin d'une capacité libre. Donc, vous avez besoin d'être capable d'occuper votre capacité libre avant de lancer des outils. C'est très important. L'image base, c'est une option qui est très utile pour nous, mais vous pouvez choisir ce que vous voulez si vous voulez utiliser votre package manager. Mais ça marche aussi. Vous avez vu la présentation précédente, ça marche. Et l'orchestration et la configuration du management sont des outils. Donc, si vous n'avez pas ceci en place, ce sera très difficile pour vous pour faire des outils. Et c'est tout. Je peux vous montrer la prochaine? Merci. Merci beaucoup. Donc, on va mettre ce URL si vous voulez prendre un look sur les snippets. C'est sur GitHub. Vous verrez la liste de différents snippets que nous avons développés. Si vous voulez contribuer, vous êtes bienvenus, bien sûr. Et si vous voulez tweeter, vous êtes notre guest. Maintenant, questions. Oui. Merci. Très bonnes points. J'ai une question. Vous avez mentionné que vous upgradez vos outils de contrôle, les outils de haine en serial pour que vous puissiez rouler. Donc, quand vous upgradez vos outils de haine, à une fois, comment vous validatez que les services sont après-midi? Donc, est-ce que c'est une partie de l'orchestration fanciale? Donc, c'est une bonne question. Donc, quand vous upgradez votre système, alors que vous upgradez, c'est-à-dire que vous avez trois contrôles, vous voulez upgradez... Donc, vous êtes dans le processus pour upgradez l'image. Donc, vous arrêtez le service. Évidemment, c'est une note de haine. Donc, le service est encore rouler quelque part. Donc, vous upgradez le système. Et ensuite, vous commencez l'application. Donc, l'application est dans le cluster. Correct. Nous avons... Donc, nous utilisons... Nous n'avons pas parlé de ça, mais nous utilisons le service spec pour valider que le Puppet fait ce que nous attendons durant le processus et aussi durant le processus grand. Donc, vous pouvez utiliser tout ce que vous voulez, mais le service spec est un bon exemple si vous voulez faire un test d'intégration dans votre... Par exemple, dans le Puppet ici, mais vous pouvez aussi avoir le chef. Et le service spec est capable de détecter si le cluster est en train de rouler durant le processus pour upgradez. Ok, merci. Et aussi, juste un follow-up sur ça. Vous savez, vous suivez l'utilisation de l'arrêt pour upgradez ou vous faites ça pour votre install régulier aussi. Vous pouvez juste reposer... Donc, l'utilisation de l'arrêt pour votre installation de l'arrêt pour l'installation de l'arrêt mais vous recommencez suivre le même install régulier ou est-ce juste pour upgradez? Oh, je pense que pour l'installation c'est important quand vous faites le cluster pour... Vous devez mettre un masternode généralement, c'est pourquoi nous faisons ça. Donc, si vous upgradez, vous devez réaliser votre l'arrêt pour l'installation de l'arrêt. C'est le même processus pour l'installation de l'arrêt et aussi pour upgradez. C'est le même processus. Merci. Salut. Vous avez... Tout ce qu'il y a c'est assez complexe. Donc, vous avez la même information que vous avez ici en haut niveau. Mais vous avez quelque chose similaire en haut niveau avec des détails pour aller quelque part et regarder à l'aise? Donc, la question c'est vous voulez aller en haut et vous voulez essayer maintenant. Oui. C'est quelque chose qu'on est en train d'arriver maintenant. Ok. Donc, quelque part de cela sont déjà documentées et ils sont déjà travaillés dans un produit formel d'innovation. Vous pouvez... Est-ce qu'il y a d'autres euros que nous pouvons développer? Oui, la partie édeployée vous pouvez aller sur github.innovance. . slash édeployé. Donc, vous avez un outil pour faire une construction image basée et une construction image basée. La partie en haut est aussi available. Vous pouvez l'utiliser. Les snippets, vous utilisez le lien qui est ici et vous pouvez l'utiliser. C'est juste la computation des différences entre les images que nous sommes dans le processus de pousser dans la github. Donc, si vous êtes intéressés par voir ce que nous avons fait dans l'installateur formel d'innovation, vous pouvez aller sur le site spynastag.innovance.com qui est ce que nous avons utilisé avant. Et donc, beaucoup de concepts sont déjà documentés et vous pouvez avoir des printers sur le code et expliquer comment cela fonctionne. Vous avez le basic structure ici si vous voulez avoir un look. Vous pouvez le faire en vous demandant pour ces systèmes? Bien sûr. Pas de problème. Merci. Je veux juste une question. Vous utilisez ce processus pour faire des upgrés entre Juno et Kilo et des choses comme ça? D'autres upgrés? Oui, bien sûr. Il peut être un minor ou un major? Je suis intéressé parce que une des problèmes avec ces upgrés est le database. Je comprends que si vous avez 3 contrôles avec Galera et qu'ils sont clôtés, vous allez dans le premier code et vous upgradez. Vous avez besoin de faire le nouveau DBSync qui va faire des upgrés sur ce code qui va être synchronisé avec vos autres contrôles et qui va les débrouiller. Parce que le modèle de data est maintenant derrière ce que le code est sur les autres contrôles. C'est une bonne question. Quand vous roulez sur le DBSync, vous devez prendre quel temps vous faites. Normalement, dans mon expérience, on utilise le DBSync à la fin de l'upgrade. Donc, quand vous upgradez 3 contrôles, vous voulez rouler le DBSync à la fin. Et ensuite, vous pouvez commencer les services. Ok, donc il y a peut-être un petit peu de downtime entre le major qui est bien. Je pense que un upgrade sans downtime, comme 0 downtime n'existe pas. Oui, oui, j'ai compris. Et le papier peut-être, mais pas ici. Comme pour les upgrés minores, c'est bien mais pour les plus grands, vous allez toujours... Oui, non, c'est cool. Je vous explique beaucoup. Mais c'est un downtime où le DBSync continue à rouler. Oui, bien sûr, oui. Exactement. Et évidemment, les projets, comme je pense, NOVA c'est le premier. Ils font de mieux de choses vers les grands versions avec le modèle de data. Donc ça devrait devenir plus facile à la fin de l'heure. Oui. Merci. Une question? Ok. Merci beaucoup. Merci.