it-swarm.com.de

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

Ich bin ein Webentwickler, aber ich interessiere mich auch für einige administrative Aufgaben. Daher ist der neue Übergang von der reinen Verwaltung zu Entwicklern für mich praktisch.

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

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

  • Vagrant: Nach meinem Verständnis besteht die Automatisierung der Erstellung und Verwaltung von VMs darin, sie einzurichten, zu starten und zu stoppen. Dies kann mit einem lokalen VM oder Remote) erfolgen, z. B. auf einer Cloud-Plattform.
  • Docker: Eine "leichte VM", die auf einigen Linux-Kernelkonzepten basiert und zum isolierten Ausführen von Prozessen verwendet werden kann, z. in einer gemeinsam genutzten Webhosting-Umgebung.
  • Chef: Ein Tool zum Einrichten und Konfigurieren eines Betriebssystems, z. innerhalb einer VM.
  • OpenStack: Ein Tool, mit dem Sie Ihre eigene private Cloud erstellen können, die mit etwas wie AWS vergleichbar ist.

Frage 1: Sind meine Erklärungen richtig oder irre ich mich mit einigen (oder allen) dieser Verbräuche?

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

In meiner Vorstellung und von meinem Verständnis her könnten Sie gehen und

  • verwenden Sie OpenStack, um Ihre 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, können Sie mir einen Rat geben, wie ich mit all dem anfangen soll (es ist ziemlich viel gleichzeitig und ich weiß noch nicht, wo ich anfangen soll)?

57
Golo Roden

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:

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

    Dies ist eine Konfigurationsverwaltungssoftware . Die meisten von ihnen verwenden dasselbe Paradigma: Mit ihnen können Sie den Status definieren, den ein Computer in Bezug auf Konfigurationsdateien, installierte Software und Benutzer haben soll , Gruppen und viele andere Ressourcentypen. Die meisten von ihnen bieten auch Funktionen zum Übertragen von Änderungen auf bestimmte Computer, ein Prozess, der normalerweise als Orchestrierung bezeichnet wird.

  • Vagrant : Erstellen und konfigurieren Sie leichte, reproduzierbare und tragbare Entwicklungsumgebungen.

    Es bietet eine reproduzierbare Möglichkeit, vollständig virtualisierte Maschinen unter Verwendung der VirtualBox- oder VMWare-Technologie von Oracle als Anbieter zu generieren =. Vagrant kann sich mit einer Konfigurationsverwaltungssoftware abstimmen, um den Installationsprozess dort fortzusetzen, wo 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 etwas mit der von Vagrant, in der sie die Möglichkeit bietet, Betriebssysteminstallationen zu definieren, unterscheidet sich jedoch stark in der für diesen Zweck verwendeten Technologie. Docker verwendet Linux-Container , bei denen es sich nicht um virtuelle Maschinen an sich handelt, sondern um isolierte Prozesse, die in isolierten Dateisystemen ausgeführt werden. Docker kann auch ein Konfigurationsmanagementsystem verwenden, um die Container bereitzustellen.

  • OpenStack : Open Source-Software zum Erstellen privater und öffentlicher Clouds.

    Zwar ist OpenStack kann auf einem einzelnen Computer bereitgestellt werden , diese Bereitstellung dient jedoch nur dem Proof-of-Concept und ist aufgrund von Ressourcenbeschränkungen wahrscheinlich nicht sehr funktionsfähig.

    Das Hauptziel für OpenStack-Installationen sind Bare-Metal-Umgebungen mit mehreren Knoten, in denen verschiedene Komponenten in dedizierter Hardware verwendet werden kann, 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 ser Mode Linux (UML) .

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

Wie viel von all diesen Funktionen Sie benötigen, sollte im Rahmen Ihres Projekts definiert werden.

Beachten Sie auch, dass ich fast alle technischen Erklärungen zu stark vereinfacht habe. Bitte verwenden Sie die Links, auf die verwiesen wird, um detaillierte Informationen zu erhalten.

55
dawud

Ich denke, dass es schwieriger wird, Entwickler zu werden, wenn man aus einem Entwickler-Hintergrund kommt. Ihre Frage ist fast 3 Jahre alt. Es wäre also interessant zu hören, wie Sie die Reise finden. Ich werde eine Antwort aus der Sicht von geben Der Systemadministrator über die Anwendungen, die Sie oben erwähnt haben, und hoffentlich wird dies etwas Licht ins Dunkel bringen oder eine nicht technische Perspektive geben, die erklären kann, warum eine Person (Administrator oder Entwickler) anfängt, genau zu überlegen, was Sie gefragt haben, z Wie ist die Beziehung zwischen x, y, z aus Sicht der Entwickler größer als die Summe ihrer Teile?

Ich denke tatsächlich, dass Systemadministratoren hier die Oberhand haben. Die meisten Anwendungen, die Sie in Ihrer Frage erwähnen, lösen Administratorprobleme und bieten auf diese Weise eine abstraktere Rechenzentrumsumgebung. Dies ist wiederum für Entwickler und neue Programmierer programmierbarer. Devops-Strategie (Strategie/Team lesen, Devops ist keine Person). Wie ist die Beziehung zu den Apps, die Sie erwähnen? Wie bietet dies einen ganzheitlichen Ansatz für den IT-Service?

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

Das ist es, aber was macht es? - Das meist treffend benannte Betriebssystem war D.O.S - Es betrieb Ihre Festplatte durch Abstraktion des BIOS, OpenStack betreibt Ihr Rechenzentrum und abstrahiert Ihre Infrastruktur (IaaS - ist Jargon für das Betriebssystem des Rechenzentrums). Jetzt verfügt Ihr Rechenzentrum über eine API, eine Befehlssyntax und eine grafische Benutzeroberfläche. OpenStack kann Hypervisoren, Switches, Router, Firewalls, Speicherbereichsnetzwerke, Load Balancer, Docker-Hosts usw. steuern. Openstack verwendet das Plugin Ihres Hardwareherstellers oder die bestimmte Funktion kann nur in Software als softwaredefinierte etwas oder Netzwerkfunktionsvirtualisierung existieren. Darüber hinaus können OpenStack und alle anderen Clouds ihre eigene Infrastruktur orchestrieren, indem sie Skripte lesen, die Sie an die Orchestrierungs-Engine senden oder die basierend auf Regeln ausgelöst werden (Scale-up, Scale-down usw.). Openstack ist also eine riesige Abstraktionsebene, z. Es ist mir egal, welchen Switch ich habe, gib mir ein Netzwerk mit diesem Befehl oder baue mir einen komplizierten Lastausgleich, HA, öffentlich verfügbar, automatische Skalierung, Domainname registriert, Speicher angehängt thingy - mit diesem Skript habe ich im Internet gefunden.

Docker: Eine "leichte VM", die auf einigen Linux-Kernelkonzepten basiert und zum isolierten Ausführen von Prozessen verwendet werden kann, z. in einer gemeinsam genutzten Webhosting-Umgebung.

Docker ist eine weitere Abstraktionsebene und wie die Cloud eine disruptive Technologie ist, verändert sie die Branche, da sie viele betriebliche Probleme wie Softwareabhängigkeiten, Upgrades, Datenisolation und reine Portabilität löst. Java wurde wegen der Quellcode-Portabilität, an die Entwickler nicht denken mussten, populär. Eine laufende JVM bedeutete, dass ihr Code auf der Kaffeemaschine ausgeführt werden sollte, solange er Java unterstützt. Docker löst Ein ähnliches Problem, um meine App auszuführen, benötigen Sie einen Docker-Host, nicht , Sie benötigen diese Version von Python, diesen Kernel, diese Linux-Distribution und so weiter Die App hat natürlich immer noch diese Abhängigkeiten, aber der zugrunde liegende Host kümmert sich nicht darum, und der Administrator kümmert sich nicht darum, was Sie in einem isolierten Container tun (bis zu einem gewissen Punkt). Docker ändert sowohl das Entwicklungs- als auch das Betriebsparadigma und behandelt ein gesamtes Betriebssystem und seine Dienste wie eine Binärdatei. wir können sie aus einem Repository abrufen , versionieren, modifizieren, mit Parametern ausführen usw.

Chef: Ein Tool zum Einrichten und Konfigurieren eines Betriebssystems, z. innerhalb einer VM.

Ja, und nicht so störend wie die ersten beiden, bieten Chef, Puppet, Ansible, Salt, System Center Operations Manager und eine Vielzahl anderer Anwendungen in diesem Bereich Entwicklern und Administratoren die Möglichkeit, Bereitstellungen, Upgrades und andere Aktionen zu modellieren (config Änderungen), es scheint keinen Standardkörper zu geben, der diese Bemühungen wie es gibt für Cloud betrachtet. Wir haben es jedoch nicht mit etwas so Bestimmtem wie Infrastruktur zu tun, daher ist es schmerzhafter, diese zu lernen, und nicht viel ist von einem zum anderen übertragbar.

Vagrant: Nach meinem Verständnis besteht die Automatisierung der Erstellung und Verwaltung von VMs darin, sie einzurichten, zu starten und zu stoppen. Dies kann mit einem lokalen VM oder Remote) erfolgen, z. B. auf einer Cloud-Plattform.

Dies ist die ungerade in der Liste der Apps, die Sie erwähnen. Vagrant ist ein Tool für Entwickler und ein Spielzeug für Administratoren. Sie können schnell eine Entwicklungsumgebung mit Vagrant aufbauen, z. Ich möchte eine Android App, entwickeln Sie eine IDE von Vagrant, ich denke, es wird bald von Docker überholt.

kannst du mir einen Rat geben, wie ich mit all dem anfangen soll (es ist ziemlich viel gleichzeitig und ich weiß noch nicht, wo ich anfangen soll)?

Aus diesem Grund denke ich, dass Administratoren die Oberhand haben. Wir mussten das meiste manuell erledigen und wissen, was schief gehen kann. Marionettenmanifeste, Cloud Computing und Docker-Orchestrierung werden uns leichter fallen. Entwickler werden feststellen, dass sie viele Tangenten nehmen Der Rat an potenzielle Entwickler ist, zuerst ein Administrator zu sein.

3
Sum1sAdmin

Ich verwende nur eine Kombination aus Vagrant und Docker.

Ich verwende Vagrant, um die Maschinen bereitzustellen (es gibt zusätzliche Cloud-Anbieter , aber ich verwende die integrierte VirtualBox. Da ich diesen Ansatz verwende, erfolgt die externe Vernetzung und Speicherung ziemlich manuell, aber wenn Sie so etwas verwenden Mit dem Plugin vagrant-aws können Sie AWS anweisen, die erforderlichen Teile für Sie bereitzustellen.

Das von mir verwendete Bereitstellungsskript verweist auf einen sicheren Speicherort, der das CA-Zertifikat und die zum Signieren von CSRs verwendeten Schlüssel zusammen mit den Token docker swarm join Enthält. Außerdem installiere ich die Docker-Engine und konfiguriere sie so, dass sie dem Schwarm beitritt (initialisiere, wenn es keine gibt).

Sobald dies erledigt ist, mache ich einfach einen docker stack deploy Von meinem lokalen Computer oder meiner Build-Box, um den Stack mit allem bereitzustellen, was ich brauche.

In meinem Fall habe ich gerade chef zugunsten der Verwendung einfacher Skripte nach der Installation fallen gelassen, die yum oder apt-get Aktivieren als meine Bereitstellungsskripte.

Ich benutze auch das Vagrant-Trigger Plugin, um vor der Zerstörung zusätzliche Skripte hinzuzufügen (in meinem Fall, um den Schwarm zu verlassen).

Der nette 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. Sie müssen lediglich den Abschnitt provider hinzufügen oder ändern. Allerdings habe ich OpenStack nicht auf einem einzigen Computer eingerichtet, um VirtualBox zu verwalten.

0

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, dass die Vagrant-Instanz jedes Mal dieselbe IP-Adresse erhält, wenn Sie die Knoten verwalten möchten. Wenn Sie statische Adressierung durchführen, funktioniert dies gut. Dies über ein VPN zu tun, ist nicht ideal.

0
kordless