Frage Beziehung zwischen Vagrant, Docker, Chef und OpenStack (oder ähnlichen Produkten)?


Ich bin Webentwickler, bin aber auch an einigen administrativen Aufgaben interessiert. Daher ist der neue Schritt von der reinen Administration zu Dev-Ops für mich praktisch.

Wie auch immer, ich habe einige Probleme, ein paar Dinge in eine Beziehung zu bringen. Vielleicht gibt es keine, also wollte ich um Hilfe bitten, um zu klären.

Grundsätzlich möchte ich vier Arten von Software in Beziehung setzen (von meinem Verständnis her). Die genauen Produkte spielen keine Rolle, Sie können eine ähnliche Software als Alternative platzieren:

  • Vagrant: Von meinem Verständnis her ist es, die Erstellung und Verwaltung von VMs zu automatisieren: Einrichten, Starten und Stoppen von VMs. Dies kann unter Verwendung einer lokalen VM oder Remote, z. auf einer Cloud-Plattform.
  • Docker: Eine "leichte VM", basierend auf ein paar Linux-Kernel-Konzepten, die verwendet werden kann, um Prozesse isoliert auszuführen, z. in einer gemeinsamen Webhosting-Umgebung.
  • Chef: Ein Werkzeug zum Einrichten und Konfigurieren eines Betriebssystems, z.B. in einer VM.
  • OpenStack: Ein Tool, mit dem Sie Ihre eigene private Cloud erstellen können, die mit AWS vergleichbar ist.

Frage 1: Sind meine Erklärungen richtig, oder liege ich falsch bei einigen (oder allen) dieser Konsumausgaben?

Frage 2: Wie könnte ich all diese Werkzeuge mischen? Würde das einen Sinn ergeben?

In meiner Vorstellung und von meinem Standpunkt aus könnte man gehen und

  • benutze OpenStack um deine eigene Cloud zu erstellen,
  • Verwenden Sie Vagrant, um die in der Cloud ausgeführten VMs zu verwalten.
  • Verwenden Sie Chef, um diese VMs einzurichten
  • und schließlich Docker verwenden, um Prozesse innerhalb der VMs auszuführen.

Ist das richtig? Und wenn ja, kannst du mir einen Rat geben, wie ich all das anfangen soll (es ist ziemlich viel zur gleichen Zeit, und ich weiß noch nicht, wo ich anfangen soll)?


55
2017-09-12 17:15


Ursprung


Nicht qualifiziert genug, um dies vollständig zu beantworten, aber Ihre Einschätzung von Vagrant und Chef scheint richtig zu sein. Auf meiner Entwicklungsbox spanne ich VMs mit Vagrant und versorge sie dann mit Chef und es funktioniert wirklich gut. - GSP


Antworten:


Lassen Sie uns ihre jeweiligen Webseiten verwenden, um herauszufinden, worum es bei all diesen Projekten geht. Ich werde jedoch die Reihenfolge ändern, in der Sie aufgelistet haben:

  • Koch: Chef ist eine Automatisierungsplattform, die die Infrastruktur in Code umwandelt.

    Das ist ein Konfigurationsmanagement-Software. Die meisten von ihnen verwenden das gleiche Paradigma: Sie ermöglichen Ihnen, das zu definieren Zustand Sie wollen eine Maschine, in Bezug auf Konfigurationsdateien, Software installiert, Benutzer, Gruppen und viele andere Arten von Ressourcen. Die meisten von ihnen bieten auch Funktionalität, um Änderungen auf bestimmte Maschinen zu übertragen, ein Prozess, der normalerweise genannt wird Orchestrierung.

  • Landstreicher: Erstellen und konfigurieren Sie leichte, reproduzierbare und portable Entwicklungsumgebungen.

    Es bietet eine reproduzierbar Möglichkeit zu generieren vollständig virtualisierte Maschinen Verwendung von Oracle VirtualBox- oder VMWare-Technologie als Anbieter. Vagrant kann sich mit einer Konfigurationsverwaltungssoftware koordinieren, um den Installationsprozess fortzusetzen, bei dem das Installationsprogramm des Betriebssystems abgeschlossen ist. Dies ist bekannt als Bereitstellung.

  • Docker: Ein Open-Source-Projekt zum Packen, Versenden und Ausführen jeder Anwendung als leichter Container

    Die Funktionalität dieser Software überschneidet sich leicht mit der von Vagrant, in der es die Mittel zur Verfügung stellt, um Betriebssysteminstallationen zu definieren, unterscheidet sich jedoch stark in der Technologie, die für diesen Zweck verwendet wird. Docker verwendet Linux-Container, die keine virtuellen Maschinen an sich sind, sondern isolierte Prozesse, die in isolierten Dateisystemen ablaufen. Docker kann auch ein Konfigurationsmanagementsystem die Container bereitstellen.

  • OpenStack: Open-Source-Software zum Erstellen von privaten und öffentlichen Clouds.

    Es stimmt zwar, dass OpenStack kann auf einer einzigen Maschine bereitgestellt werdenEine solche Bereitstellung ist rein proof-of-concept, wahrscheinlich aufgrund von Ressourceneinschränkungen nicht sehr funktionsfähig.

    Das primäre Ziel für OpenStack-Installationen sind Bare-Metal-Multi-Node-Umgebungen, in denen die verschiedene Komponenten kann in dedizierter Hardware verwendet werden, um bessere Ergebnisse zu erzielen.

    Eine Schlüsselfunktionalität von OpenStack ist die Unterstützung vieler Virtualisierungstechnologien, von vollständig virtualisiert (VirtualBox, VMWare) über paravirtualisiert (KVM / Qemu) bis hin zu Containern (LXC) und sogar Benutzermodus Linux (UML).

Ich habe versucht, diese Produkte als Komponenten einer bestimmten Architektur zu präsentieren. Aus meiner Sicht ist es sinnvoll, zuerst Ihre Bedürfnisse in Bezug auf die von Ihnen benötigte Umgebung (Chef, Puppet, Ansible, ...) zu definieren und dann in der Lage zu sein, sie kontrolliert einzusetzen (Vagrant, Docker , ...) und schließlich auf globale Größe skalieren.

Wie viel von all dieser Funktionalität Sie benötigen, sollte im Rahmen Ihres Projekts definiert werden.

Beachten Sie auch, dass ich hauptsächlich alle technischen Erklärungen übermäßig vereinfacht habe. Bitte verwenden Sie die referenzierten Links für detaillierte Informationen.


52
2017-09-12 20:16



sind Koch und Marionette das gleiche Werkzeug? Ich meine, sie sind gleichwertig? Wenn Sie das auf einem Windows 10-Host ausführen möchten, welche Tools würden Sie verwenden? - ReynierPM
Puppet ist ein ähnliches Werkzeug für Chefkoch. Unsicher, ob es besser unter Windows ist. - a deer


Ich denke, aus einem Entwickler-Hintergrund zu kommen, macht es zu einem 'devops', der wirklich trickreicher ist, Ihre Frage ist fast 3 Jahre alt. Es wäre interessant zu hören, wie Sie die Reise finden, ich werde eine Antwort aus der Sicht von geben Der sys admin über die Anwendungen, die Sie oben erwähnt haben, und hoffentlich wird es etwas Licht geben, oder eine nicht-technische Perspektive geben, die einen Weg erklären wird, warum eine Person (Admin oder Entwickler) anfangen würde genau zu überlegen, was Sie zB gefragt haben aus der Sicht von devops was ist die Beziehung zwischen x, y, z sind diese Werkzeuge größer als die Summe ihrer Teile?

Ich glaube eigentlich, sys Admins haben hier die Oberhand, die meisten der Anwendungen, die du in deiner Frage erwähnst, lösen Adminprobleme und bieten so eine abstraktere Rechenzentrumsumgebung, und das wiederum ist programmierbarer für Entwickler und die neuen. Devops 'Strategie (lies Strategie / Team, Devops ist keine Person). Wie ist die Beziehung zu den Apps, die du erwähnt hast? Wie bietet dies einen ganzheitlichen Ansatz für den IT-Service?

OpenStack: Ein Tool, mit dem Sie Ihre eigene private Cloud erstellen können,   daher vergleichbar mit etwas wie AWS

Das ist es, aber was macht es? - das meist treffend benannte Betriebssystem war D.O.S - es betrieb Ihre Festplatte durch Abstrahieren des BIOS, OpenStack betreibt Ihr Rechenzentrum und abstrahiert Ihre Infrastruktur (IaaS - ist Jargon für Rechenzentrumsbetriebssystem). Jetzt verfügt Ihr Rechenzentrum über eine API, eine Befehlssyntax und eine grafische Benutzeroberfläche. OpenStack kann Hypervisoren, Switches, Router, Firewalls, Storage Area Networks, Load Balancer, Docker Hosts usw. ansteuern. Openstack verwendet das Plug-in Ihrer Hardwarehersteller. oder Die bestimmte Funktion kann ausschließlich in Software als Software definiert existieren etwas oder Netzwerkfunktionsvirtualisierung. Darüber hinaus können OpenStack und alle anderen Clouds ihre eigene Infrastruktur orchestrieren, indem sie Scripts lesen, die Sie bei der Orchestrierungs-Engine werfen oder basierend auf Regeln ausgelöst werden (Scale-Up, Scale-Down usw.). Open Stack ist also eine riesige Abstraktionsschicht, z.B. Es ist mir egal, welchen Schalter ich habe, gib mir ein Netzwerk mit diese Befehl, oder, bauen Sie mir eine komplizierte Last ausgeglichen, HA, öffentlich verfügbar, automatische Skalierung, Domain-Namen registriert, Speicher angeschlossen Ding - Mit diesem Skript habe ich im Internet gefunden.

Docker: Eine "leichte VM", basierend auf einigen Linux-Kernel-Konzepten,   welche verwendet werden kann, um Prozesse isoliert zu betreiben, z.B. in einem gemeinsamen Web   Hosting-Umgebung.

Docker ist eine weitere Ebene der Abstraktion und wie die Cloud eine bahnbrechende Technologie ist, verändert sie die Branche, weil sie viele betriebliche "Probleme" wie Softwareabhängigkeiten, Upgrades, Datenisolierung und reine Portabilität löst. Java wurde populär wegen seiner Quellcode-Portabilität, an die Entwickler nicht denken mussten. Eine laufende JVM bedeutete, dass ihr Code auf der Kaffeemaschine laufen sollte, solange er Java unterstützte. Docker löst ein ähnliches Problem, zum Ausführen meiner App benötigen Sie einen Docker-Host, nicht, Sie brauchen diese Version von Python, diesen Kernel, diese Linux Distribution und so weiter, die App hat natürlich immer noch diese Abhängigkeiten, aber der zugrundeliegende Host kümmert das nicht und dem Administrator ist es egal, was Sie in einem isolierten Container tun ( bis zu einem Punkt). Docker verändert sowohl das Entwicklungs- als auch das Betriebsparadigma und behandelt ein komplettes Betriebssystem und seine Dienste wie eine Binärdatei. wir können sie aus einem Repository holen, versioniere sie, modifiziere sie, führe sie mit Parametern usw.

Chef: Ein Werkzeug zum Einrichten und Konfigurieren eines Betriebssystems, z.B. in einem   VM.

Ja, und nicht so störend wie die ersten beiden, Chef, Puppet, Ansible, Salz, System Center Operations Manager und eine riesige Fülle anderer Anwendungen in diesem Raum bieten eine Möglichkeit für Entwickler und Administratoren, Bereitstellungen, Upgrades und andere Aktionen zu modellieren (config Veränderungen), scheint es keine Normungsgremien zu geben, die diese Bemühungen mögen Da ist für die Wolke. Aber es geht uns nicht um etwas so Definitives wie Infrastruktur, also ist es schmerzhafter, diese zu lernen, und nicht viel ist von einem auf das andere übertragbar.

Vagrant: Aus meiner Sicht ist es, die Erstellung und Verwaltung zu automatisieren   VMs: Einrichten, Starten und Stoppen von VMs Das kann gemacht werden   Verwenden einer lokalen VM oder Fernbedienung, z.B. auf einer Cloud-Plattform.

Dies ist das merkwürdige in der Liste der apps, die Sie erwähnen, Vagrant ist ein Werkzeug für Entwickler und ein Spielzeug für Admins, können Sie schnell eine Entwicklungsumgebung mit vagrant, z. Ich möchte eine Android-App entwickeln, eine IDE von vagrant holen, ich denke, dass sie bald von Docker überholt wird.

Kannst du mir einen Rat geben, wie ich all das anfangen soll?   viel zur gleichen Zeit, und ich weiß noch nicht, wo ich anfangen soll)?

Deshalb denke ich, dass Admins die Oberhand haben, wir mussten das meiste manuell machen und wissen, was schief gehen kann, Marionettenmanifeste, Cloud Computing und Docker-Orchestrierung werden uns leichter fallen, Entwickler werden sich viele Tangenten nehmen, so meine Ratschläge für potentielle Entwickler sollten zuerst Admin sein.


3
2018-05-18 13:14





Ich habe gerade ein OpenStack-Bereitstellungsprojekt abgeschlossen, das einen Chef-Server in einer Vagrant-Instanz verwendet: https://github.com/bluechiptek/bluechipstack/blob/master/README.md

Das Hauptproblem bei dieser Vorgehensweise besteht darin, die Vagrant-Instanz bei jeder Verwaltung der Knoten mit derselben IP-Adresse zu versorgen. Wenn Sie statische Adressierung durchführen, funktioniert es gut. Es ist weniger als ideal, es über ein VPN zu tun.


0
2017-09-18 22:10





An meinem Ende verwende ich nur eine Kombination aus Vagrant und Docker.

Ich benutze Landstreicher, um die Maschinen zu versorgen (es gibt zusätzliche Cloud-Anbieter aber ich benutze die eingebaute VirtualBox. Da ich diesen Ansatz verwende, ist die externe Vernetzung und Speicherung ziemlich manuell, aber wenn Sie etwas wie das verwenden Landstreicher-aws Plugin können Sie AWS anweisen, die notwendigen Teile für Sie bereitzustellen.

Das Provisionierungsskript, das ich verwende, verweist auf einen sicheren Ort, der ein CA - Zertifikat und Schlüssel enthält, die zum Signieren von CSRs zusammen mit dem docker swarm join Token. Zusätzlich installiere ich docker-engine und konfiguriere es so, dass es dem Schwarm beitritt (initialisiere, wenn es keine gibt).

Sobald das erledigt ist, mache ich einfach ein docker stack deploy von meiner lokalen Maschine oder Baukasten, um den Stapel mit allem, was ich brauche, bereitzustellen.

In meinem Fall habe ich einfach fallen gelassen Koch dafür, nur einfache Post-Installationsskripte zu verwenden, die das tun yum oder apt-get als meine Provisioning-Skripte.

Ich benutze auch die Landstreicher-Trigger Plugin, um zusätzliches Scripting hinzuzufügen, bevor es zerstört wird (in meinem Fall, um den Schwarm zu verlassen).

Der schöne Teil der Zentralisierung mit Vagrant ist, dass Sie die Umgebung auf einem anderen System oder einem einzelnen Computer für die Entwicklung replizieren können, nur hinzufügen oder ändern provider Sektion. Beachten Sie, dass ich OpenStack nicht auf einem einzelnen Computer eingerichtet habe, um VirtualBox zu verwalten.


0
2018-03-13 19:54