57 votes

Relation entre Vagrant, Docker, Chef et OpenStack (ou produits similaires) ?

Je suis un développeur web, mais je m'intéresse aussi à quelques tâches administratives. C'est pourquoi le nouveau passage de l'administration pure au dev-ops est pratique pour moi.

Quoi qu'il en soit, j'ai quelques problèmes pour mettre certaines choses dans une relation. Peut-être qu'il n'y en a pas, alors je voulais demander de l'aide pour clarifier.

En gros, ce que je veux mettre en relation, ce sont quatre types de logiciels (d'après ce que je comprends). Les produits exacts n'ont pas d'importance, vous pouvez placer tout logiciel similaire comme alternative :

  • Vagabond : D'après ce que j'ai compris, il s'agit d'automatiser la création et la gestion des VM : Les configurer, les démarrer et les arrêter. Cela peut se faire à l'aide d'une VM locale ou à distance, par exemple sur une plateforme en nuage.
  • Docker : Une "VM légère", basée sur quelques concepts du noyau Linux, qui peut être utilisée pour exécuter des processus de manière isolée, par exemple dans un environnement d'hébergement web partagé.
  • Chef : outil permettant d'installer et de configurer un système d'exploitation, par exemple à l'intérieur d'une VM.
  • OpenStack : Un outil qui vous permet de construire votre propre nuage privé, donc comparable à quelque chose comme AWS.

Question n° 1 : Mes explications sont-elles justes, ou ai-je tort pour certaines (ou toutes) de ces consommations ?

Question n°2 : Comment pourrais-je mélanger tous ces outils ? Cela aurait-il un sens ?

Dans mon imagination et de mon point de vue, vous pourriez aller et

  • utiliser OpenStack pour créer votre propre cloud,
  • utiliser Vagrant pour gérer les VM exécutées dans le nuage,
  • utiliser Chef pour configurer ces VMs
  • et enfin utiliser Docker pour exécuter des processus à l'intérieur des VM.

Est-ce correct ? Et si oui, pouvez-vous me donner un conseil sur la façon de commencer à utiliser tout cela (c'est beaucoup en même temps, et je ne sais pas encore par où commencer) ?

56voto

dawud Points 14770

Utilisons leurs pages web respectives pour découvrir ce que sont tous ces projets. Je vais changer l'ordre dans lequel vous avez énuméré, cependant :

  • Chef : Chef est une plateforme d'automatisation qui transforme l'infrastructure en code.

    Il s'agit d'un logiciel de gestion de configuration . La plupart d'entre eux utilisent le même paradigme : ils vous permettent de définir l'objet de l'opération. état vous voulez qu'une machine soit, en ce qui concerne les fichiers de configuration, les logiciels installés, les utilisateurs, les groupes et de nombreux autres types de ressources. La plupart d'entre eux offrent également une fonctionnalité permettant d'apporter des changements à des machines spécifiques, un processus généralement appelé "push". orchestration .

  • Vagrant : Créer et configurer des environnements de développement légers, reproductibles et portables.

    Il fournit un reproductible moyen de générer des machines entièrement virtualisées en utilisant soit VirtualBox d'Oracle, soit la technologie VMWare, comme fournisseurs . Vagrant peut se coordonner avec un logiciel de gestion de la configuration pour poursuivre le processus d'installation lorsque le programme d'installation du système d'exploitation se termine. C'est ce qu'on appelle approvisionnement .

  • Docker : Un projet open source pour emballer, expédier et exécuter toute application en tant que conteneur léger.

    La fonctionnalité de ce logiciel recoupe quelque peu celle de Vagrant, dans la mesure où il permet de définir des installations de systèmes d'exploitation, mais diffère grandement par la technologie utilisée à cette fin. Docker utilise Conteneurs Linux qui ne sont pas des machines virtuelles à proprement parler, mais des processus isolés fonctionnant dans des systèmes de fichiers isolés. Docker peut également utiliser un système de gestion de configuration pour approvisionner les conteneurs.

  • OpenStack : Logiciel open source pour la création de clouds privés et publics.

    S'il est vrai qu'OpenStack peut être déployé sur une seule machine Ce déploiement n'est qu'une preuve de concept et n'est probablement pas très fonctionnel en raison des contraintes de ressources.

    La cible principale pour les installations OpenStack sont les environnements multi-nœuds bare metal, où la différents composants peut être utilisé dans du matériel dédié pour obtenir de meilleurs résultats.

    L'une des principales fonctionnalités d'OpenStack est sa prise en charge de nombreuses technologies de virtualisation, qu'il s'agisse de la virtualisation complète (VirtualBox, VMWare), de la paravirtualisation (KVM/Qemu) ou des conteneurs (LXC), voire même de la virtualisation de l'espace. Mode utilisateur Linux (UML) .

J'ai essayé de présenter ces produits comme des composants d'une architecture spécifique. De mon point de vue, il est logique de pouvoir d'abord définir vos besoins en ce qui concerne l'environnement dont vous avez besoin (Chef, Puppet, Ansible, ...), puis de pouvoir le déployer de manière contrôlée (Vagrant, Docker, ...) et enfin de le faire évoluer vers une taille globale si nécessaire.

La quantité de toutes ces fonctionnalités dont vous avez besoin doit être définie dans le cadre de votre projet.

Notez également que j'ai simplifié à l'extrême la plupart des explications techniques. Veuillez utiliser les liens référencés pour des informations détaillées.

3voto

Sum1sAdmin Points 1854

Je pense que le fait de venir d'un milieu de développeurs rendra plus délicat le fait de devenir un "devops", votre question date de presque 3 ans donc il serait intéressant de savoir comment vous trouvez le voyage, je vais donner une réponse du point de vue de l'administrateur système sur les applications que vous avez mentionnées ci-dessus et j'espère que cela apportera un peu de lumière, ou donnera une perspective non technique qui permettra d'expliquer pourquoi une personne (admin ou dev) commencerait à considérer exactement ce que vous avez demandé, par ex. par exemple, du point de vue du devops, quelle est la relation entre x, y, z ? Ces outils sont-ils plus importants que la somme de leurs parties ?

En fait, je pense que les administrateurs système ont le dessus ici, la plupart des applications que vous mentionnez dans votre question résolvent les " problèmes " des administrateurs et, ce faisant, fournissent un environnement de centre de données plus abstrait, qui est à son tour plus programmable pour les développeurs et la nouvelle stratégie " devops " (lire stratégie/équipe, devops n'est pas une personne). Quelle est donc la relation avec les applications que vous mentionnez ? Comment cela fournit-il une approche holistique du service informatique ?

OpenStack : A donc comparable à quelque chose comme AWS

C'est ce qu'il est, mais qu'est-ce qu'il fait ? - Le système d'exploitation le mieux nommé était D.O.S. - il faisait fonctionner votre disque en abstrayant le BIOS, OpenStack fait fonctionner votre centre de données et abstrait votre infrastructure (IaaS - est le jargon pour le système d'exploitation du centre de données). Maintenant, votre centre de données dispose d'une API, d'une syntaxe de commande et d'une interface graphique, OpenStack peut piloter des hyperviseurs, des commutateurs, des routeurs, des pare-feu, des réseaux de stockage, des équilibreurs de charge, des hôtes Docker, etc. OpenStack utilise le "plugin" du fabricant de votre matériel. o la fonction particulière peut exister uniquement dans le logiciel en tant que logiciel défini quelque chose ou la virtualisation des fonctions réseau. En plus de cela, OpenStack, et tous les autres clouds, peuvent orchestrer leur propre infrastructure en lisant les scripts que vous lancez au moteur d'orchestration ou sont déclenchés sur la base de règles (scale up, scale down etc.). Ainsi, openstack est une couche géante d'abstraction, par exemple, je ne me soucie pas du commutateur que j'ai, donnez-moi un réseau avec ce ou, construisez-moi un système compliqué d'équilibrage de la charge, HA, disponible publiquement, mise à l'échelle automatique, nom de domaine enregistré, stockage attaché. bidule - avec ce script que j'ai trouvé sur internet.

Docker : Une "VM légère", basée sur quelques concepts du noyau Linux, qui peut être utilisée pour exécuter des processus de manière isolée, par exemple dans un environnemen d'hébergement web partagé.

Docker est une autre couche d'abstraction et, comme le nuage est une technologie perturbatrice, il est en train de changer le secteur parce qu'il résout de nombreux "problèmes" opérationnels comme les dépendances logicielles, les mises à niveau, l'isolement des données et la portabilité pure et simple. Java est devenu populaire en raison de la portabilité de son code source, à laquelle les développeurs n'avaient pas à réfléchir : une JVM en fonctionnement signifiait que leur code devait fonctionner sur la machine à café, pour autant qu'elle supporte Java. Docker résout un problème similaire. Pour exécuter mon application, vous avez besoin d'un hôte Docker, no L'application a toujours ces dépendances, bien sûr, mais l'hôte sous-jacent s'en moque et l'administrateur ne se soucie pas de ce que vous faites à l'intérieur d'un conteneur isolé (jusqu'à un certain point). Docker change à la fois le paradigme du développement et celui des opérations, en traitant un système d'exploitation entier et ses services comme un binaire. nous pouvons les obtenir à partir d'un référentiel les versions, les modifier, les exécuter avec des paramètres, etc.

Chef : Un outil pour installer et configurer un système d'exploitation, par exemple dans une VM.

Oui, et pas aussi perturbant que les deux premiers, Chef, Puppet, ansible, salt, system center operations manager et une pléthore massive d'autres applications dans cet espace fournissent un moyen pour les développeurs et les administrateurs de modéliser les déploiements, les mises à niveau et d'autres actions (changements de configuration), il ne semble pas y avoir d'organisme de normalisation qui surveille ces efforts comme il y a pour le nuage . Mais nous n'avons pas affaire à quelque chose d'aussi définitif que l'infrastructure, il est donc plus douloureux d'apprendre celles-ci et peu de choses sont transférables de l'une à l'autre.

Vagrant : D'après ce que j'ai compris, c'est pour automatiser la création et la gestion de VMs : Les configurer, les démarrer et les arrêter. Cela peut être fait à l'aide d'une VM locale ou à distance, par exemple sur une plateforme en nuage.

C'est l'intrus dans la liste des applications que vous mentionnez, Vagrant est un outil pour les développeurs et un jouet pour les administrateurs, vous pouvez rapidement mettre en place un environnement de développement avec vagrant, par exemple, je veux développer une application Android, prendre un IDE de vagrant, je pense qu'il sera bientôt dépassé par Docker.

Pouvez-vous me donner des conseils sur la façon de faire face à la situation ? beaucoup en même temps, et je ne sais pas encore par où commencer) ?

C'est pourquoi je pense que les administrateurs ont le dessus, nous avons dû faire la plupart de ces choses manuellement et nous savons ce qui peut mal tourner, les manifestes Puppet, l'informatique en nuage et l'orchestration Docker seront plus faciles pour nous, les développeurs se retrouveront à prendre de nombreuses tangentes, donc mon conseil à tout devops potentiel est d'être d'abord un administrateur.

0voto

Alex Points 211

Je viens de terminer un projet de déploiement OpenStack qui utilise un serveur Chef à l'intérieur d'une instance Vagrant : https://github.com/bluechiptek/bluechipstack/blob/master/README.md

Le principal problème de cette méthode est d'obtenir la même adresse IP pour l'instance de Vagrant chaque fois que vous voulez gérer les nœuds. Si vous utilisez l'adressage statique, cela fonctionne bien. Le faire via un VPN est loin d'être idéal.

0voto

De mon côté, j'utilise une combinaison de Vagrant et de Docker uniquement.

J'utilise vagrant pour provisionner les machines (il y a fournisseurs de clouds supplémentaires mais j'utilise la version intégrée de VirtualBox. Parce que j'utilise cette approche, la mise en réseau et le stockage externes sont plutôt manuels, mais si vous utilisez quelque chose comme le logiciel vagabondage des mâchoires vous pouvez demander à AWS de fournir les éléments nécessaires pour vous.

Le script de provisionnement que j'utilise pointe vers un emplacement sécurisé qui contient le certificat de l'autorité de certification et les clés utilisées pour signer les CSRs ainsi que le docker swarm join jetons. De plus, j'installe docker-engine et le configure pour qu'il rejoigne l'essaim (l'initialiser s'il n'y en a pas).

Une fois que c'est réglé, je fais simplement un docker stack deploy depuis ma machine locale ou ma boîte de construction pour déployer la pile avec tout ce dont j'ai besoin.

Dans mon cas, j'ai juste laissé tomber chef cuisinier en faveur de l'utilisation de simples scripts de post-installation qui font yum o apt-get sur comme mes scripts de provisionnement.

J'utilise également le Les vagabonds déclenchent plugin pour ajouter des scripts supplémentaires avant de détruire (dans mon cas pour quitter l'essaim).

L'avantage de la centralisation avec Vagrant est qu'il est possible de répliquer l'environnement sur un autre système ou sur un seul ordinateur pour le développement. Il suffit d'ajouter ou de modifier les paramètres de l'environnement. provider section. Je n'ai pas encore configuré OpenStack sur un seul ordinateur pour gérer VirtualBox.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X