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

56

Je suis un développeur Web, mais je suis également intéressé par quelques tâches administratives. Par conséquent, le nouveau passage de l'administration pure aux développeurs est très pratique pour moi.

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

Fondamentalement, ce que je veux mettre en relation est quatre types de logiciels (d'après ce que je comprends). Les produits exacts n’importent pas, vous pouvez utiliser n’importe quel logiciel similaire:

  • Vagrant: D'après ce que je comprends, il faut automatiser la création et la gestion des machines virtuelles: les configurer, les démarrer et les arrêter. Cela peut être fait en utilisant une machine virtuelle locale ou distante, par exemple sur une plate-forme en nuage.
  • Docker: une "machine virtuelle légère", basée sur quelques concepts de noyau Linux, pouvant être utilisée pour exécuter des processus de manière isolée, par exemple dans un environnement d'hébergement Web partagé.
  • Chef: Un outil pour configurer et configurer un système d'exploitation, par exemple à l'intérieur d'une machine virtuelle.
  • OpenStack: un outil qui vous permet de créer votre propre cloud privé, donc comparable à quelque chose comme AWS.

Question n ° 1: Mes explications sont-elles correctes ou ai-je tort avec une partie (ou la totalité) 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 compréhension, vous pourriez aller et

  • utilisez OpenStack pour créer votre propre cloud,
  • utiliser Vagrant pour gérer les machines virtuelles exécutées dans le cloud,
  • utiliser Chef pour configurer ces machines virtuelles
  • Enfin, utilisez Docker pour exécuter des processus dans les ordinateurs virtuels.

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)?

Golo Roden
la source
1
Pas assez qualifié pour répondre complètement à cette question, mais votre évaluation de Vagrant and Chef semble être correcte. Sur ma boîte de développement, je mets en place des machines virtuelles à l’aide de Vagrant, puis je les alimente avec Chef, et cela fonctionne vraiment bien.
GSP

Réponses:

54

Utilisons leurs pages Web respectives pour savoir en quoi consistent tous ces projets. Je changerai cependant l'ordre dans lequel vous avez énuméré:

  • Chef : Chef est une plate-forme d'automatisation qui transforme l'infrastructure en code.

    Ceci est un logiciel de gestion de configuration . La plupart d'entre eux utilisent le même paradigme: ils vous permettent de définir l' état que vous souhaitez attribuer à une machine, 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 fournissent également des fonctionnalités permettant de transférer les modifications sur des machines spécifiques, processus généralement appelé orchestration .

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

    Il fournit un moyen reproductible de générer des machines entièrement virtualisées en utilisant les technologies Oracle ou VirtualBox ou VMWare en tant que fournisseurs . Vagrant peut coordonner avec un logiciel de gestion de la configuration pour poursuivre le processus d'installation à la fin du programme d'installation du système d'exploitation. Ceci est connu sous le nom de provisionnement .

  • Docker : Un projet open source pour emballer, expédier et exécuter n'importe quelle application en tant que conteneur léger

    La fonctionnalité de ce logiciel recoupe quelque peu celle de Vagrant, dans laquelle il fournit le moyen de définir les installations de systèmes d’exploitation, mais la technologie utilisée à cet effet diffère considérablement. Docker utilise des conteneurs Linux , qui ne sont pas des machines virtuelles en soi, mais des processus isolés s'exécutant dans des systèmes de fichiers isolés. Docker peut également utiliser un système de gestion de la configuration pour provisionner les conteneurs.

  • OpenStack : logiciel open source pour la construction de clouds privés et publics.

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

    La cible principale des installations OpenStack sont les environnements multi-nœuds sans système d' exploitation, dans lesquels les différents composants peuvent être utilisés dans du matériel dédié pour obtenir de meilleurs résultats.

    Une fonctionnalité clé d'OpenStack est son support pour de nombreuses technologies de virtualisation, de la virtualisation complète (VirtualBox, VMWare) au paravirtualisé (KVM / Qemu) en passant par les conteneurs (LXC) et même le mode utilisateur Linux (UML) .

J'ai essayé de présenter ces produits en tant que composants d'une architecture spécifique. De mon point de vue, il est logique de pouvoir d’abord définir vos besoins en fonction de l’environnement souhaité (Chef, Puppet, Ansible, ...), puis de le déployer de manière contrôlée (Vagrant, Docker , ...) et finalement l’adapter à la taille globale si besoin est.

La quantité de toutes les fonctionnalités dont vous avez besoin doit être définie dans la portée de votre projet.

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

Dawud
la source
sont chef et marionnettes le même outil? Je veux dire qu'ils sont équivalents? Si vous souhaitez exécuter ceci sur un hôte Windows 10, quels outils utiliseriez-vous?
ReynierPM
La marionnette est un outil similaire à Chef.
Je ne sais
3

Je pense qu’en tant que développeur, il sera plus difficile de devenir un «devops». Votre question a presque 3 ans. Il serait donc intéressant d’entendre comment vous trouvez le voyage. Je vais vous donner une réponse du point de vue de l’administrateur système sur les applications que vous avez mentionnées ci-dessus et, espérons-le, vous éclairera un peu ou vous donnera une perspective non technique qui expliquera en partie pourquoi une personne (administrateur ou développeur) commencerait à considérer exactement ce que vous avez demandé, par exemple, de la part de devops perspective quelle est la relation entre x, y, z ces outils sont-ils supérieurs à la somme de leurs parties?

Je pense en fait que les administrateurs système ont l'avantage, la plupart des applications que vous mentionnez dans votre question résolvent les "problèmes" de l'administrateur et fournissent ainsi un environnement de centre de données plus abstrait, ce qui est plus programmable pour les développeurs et les nouveaux " stratégie de devops (lire stratégie / équipe, devops n'est pas une personne). Alors, quelle est la relation avec les applications que vous mentionnez? Comment cela fournit-il une approche globale du service informatique?

OpenStack: un outil qui vous permet de créer votre propre cloud privé, donc comparable à quelque chose comme AWS

C'est ce que c'est, mais que fait-il? - Le système d’exploitation qui portait principalement son nom était DOS. Il exploitait votre disque en extrayant le BIOS, OpenStack exploitait votre centre de données et votre infrastructure (IaaS - est le jargon du système d’exploitation du centre de données). Désormais, votre centre de données dispose d’une API, d’une syntaxe de commande et d’une interface graphique, OpenStack peut gérer des hyperviseurs, des commutateurs, des routeurs, des pare-feu, des réseaux de stockage, des équilibreurs de charge, des hôtes de menu fixe, etc. Openstack utilise le plug-in ou la fonction particulière de votre fabricant peut exister uniquement dans le logiciel en tant que logiciel défini quelque choseou la virtualisation de la fonction réseau. En plus de cette OpenStack, et de tous les autres clouds, peuvent orchestrer leur propre infrastructure en lisant les scripts envoyés au moteur d’orchestration ou déclenchés en fonction de règles (scale-up, scale-down, etc.). Donc openstack est une couche d'abstraction géante, par exemple, je ne me soucie pas du commutateur que j'ai, donnez-moi un réseau avec cette commande, ou construisez-moi une charge compliquée, HA, disponible publiquement, mise à l'échelle automatique, nom de domaine enregistré, stockage Chose attaché - avec ce script que j'ai trouvé sur Internet.

Docker: une "machine virtuelle légère", basée sur quelques concepts de noyau Linux, pouvant être utilisée pour exécuter des processus de manière isolée, par exemple dans un environnement d'hébergement Web partagé.

Docker est une autre couche d'abstraction et, tout comme le cloud est une technologie perturbatrice, il modifie le secteur car il résout de nombreux «problèmes» opérationnels tels que les dépendances logicielles, les mises à niveau, l'isolation des données et la portabilité totale. Java est devenu populaire en raison de la portabilité du code source que les développeurs n'ont pas à prendre en compte. Une machine virtuelle Java en cours d'exécution signifie que leur code doit être exécuté sur la machine à café tant qu'elle prend en charge Java. Docker résout un problème similaire. Pour exécuter mon application, vous devez disposer d'un hôte Docker, et non, vous avez besoin de cette version de python, de ce noyau, de cette distribution Linux, etc. vers un point). Docker est en train de changer le paradigme du développement et des opérations, en traitant tout un système d'exploitation et ses services comme un binaire. nous pouvons les obtenir à partir d'un référentiel , les modifier, les modifier, les exécuter avec des paramètres, etc.

Chef: Un outil pour configurer et configurer un système d'exploitation, par exemple à l'intérieur d'une machine virtuelle.

Oui, et pas aussi perturbant que les deux premiers, Chef, marionnette, ansible, salt, responsable des opérations du centre système et une pléthore d’applications dans cet espace offrent aux développeurs et aux administrateurs un moyen de modéliser les déploiements, les mises à niveau et d’autres actions changements), il ne semble pas qu’un organisme de normalisation surveille ces efforts comme il le fait pour le cloud . Mais nous ne traitons pas avec quelque chose d'aussi définitif qu'Infrastructure, il est donc plus pénible de les apprendre et peu de choses peuvent être transférées de l'une à l'autre.

Vagrant: D'après ce que je comprends, il faut automatiser la création et la gestion des machines virtuelles: les configurer, les démarrer et les arrêter. Cela peut être fait en utilisant une machine virtuelle locale ou distante, par exemple sur une plate-forme 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 créer un environnement de développement avec vagant, par exemple, je veux développer une application Android, saisir un IDE dans vagabond, je pense qu'il sera bientôt rattrapé par Docker.

pouvez-vous me donner un conseil sur la façon d'utiliser tout cela (c'est beaucoup en même temps et je ne sais pas encore par où commencer)?

C’est la raison pour laquelle je pense que les administrateurs ont l’avantage, nous avons dû faire la plupart de ces opérations manuellement et savoir ce qui peut mal tourner, les manifestes de marionnettes, l’informatique en nuage et l’orchestration des dockers nous seront plus faciles, les développeurs vont devoir prendre beaucoup de Le conseil à tous les développeurs potentiels est d’être d’abord un administrateur.

Sum1sAdmin
la source
0

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

Le principal problème en procédant de cette façon consiste à obtenir l’instance Vagrant avec la même adresse IP chaque fois que vous souhaitez gérer les nœuds. Si vous effectuez un adressage statique, cela fonctionne bien. Le faire via un VPN n’est pas idéal.

kordless
la source
0

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

J'utilise vagrant pour approvisionner les machines (il existe d' autres fournisseurs de cloud, mais j'utilise la solution intégrée VirtualBox. Comme j'utilise cette approche, la mise en réseau et le stockage externes sont quasiment manuels, mais si vous utilisez quelque chose comme le plugin vagrant-aws, vous pouvez Demandez à AWS de vous fournir les pièces nécessaires.

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

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

Dans mon cas, je viens de laisser tomber chef au profit d'utiliser simplement des scripts de post-installation qui font yumou apt-getsur mes scripts d'approvisionnement.

J'utilise également le plugin vagrant-triggers pour ajouter des scripts supplémentaires avant de détruire (dans mon cas, quitter l'essaim).

La bonne partie de la centralisation avec Vagrant est que vous pouvez répliquer l’environnement sur un autre système ou un seul ordinateur à des fins de développement, il suffit d’ajouter ou de modifier la providersection. Notez que je n'ai pas encore configuré OpenStack sur un seul ordinateur pour gérer VirtualBox.

Archimedes Trajano
la source