%3F.png)
Ich bin Webentwickler, interessiere mich aber auch für einige administrative Aufgaben. Daher kommt mir der Wechsel von der reinen Administration zum DevOps-Bereich sehr gelegen.
Jedenfalls habe ich ein paar Probleme, ein paar Dinge in eine Beziehung einzubringen. Vielleicht gibt es keine, also wollte ich um Hilfe bitten, um das zu klären.
Im Wesentlichen möchte ich vier Arten von Software miteinander in Beziehung setzen (soweit ich weiß). Die genauen Produkte spielen keine Rolle, Sie können jede ähnliche Software als Alternative angeben:
- Vagrant: Meines Wissens geht es dabei um die Automatisierung der Erstellung und Verwaltung von VMs: Einrichten, Starten und Stoppen. Dies kann über eine lokale VM oder remote erfolgen, z. B. auf einer Cloud-Plattform.
- Docker: Eine „leichtgewichtige VM“, die auf einigen Konzepten des Linux-Kernels basiert und zum isolierten Ausführen von Prozessen verwendet werden kann, z. B. in einer gemeinsam genutzten Webhosting-Umgebung.
- Chef: Ein Tool zum Einrichten und Konfigurieren eines Betriebssystems, z. B. innerhalb einer VM.
- OpenStack: Ein Tool, mit dem Sie Ihre eigene private Cloud erstellen können. Vergleichbar ist es daher beispielsweise mit AWS.
Frage Nr. 1: Sind meine Erklärungen richtig oder liege ich mit einigen (oder allen) dieser Verbrauchsdaten falsch?
Frage Nr. 2: Wie könnte ich all diese Tools mischen? Würde das irgendeinen Sinn ergeben?
In meiner Vorstellung und von meinem Verständnis her könnte man hingehen und
- Verwenden Sie OpenStack, um Ihre eigene Cloud aufzubauen.
- Verwenden Sie Vagrant, um die in der Cloud ausgeführten VMs zu verwalten.
- Verwenden Sie Chef, um diese VMs einzurichten
- und verwenden Sie schließlich Docker, um Prozesse innerhalb der VMs auszuführen.
Ist das richtig? Und wenn ja, können Sie mir einen Rat geben, wie ich das alles nutzen kann (es ist ziemlich viel auf einmal und ich weiß noch nicht, wo ich anfangen soll)?
Antwort1
Lassen Sie uns anhand der jeweiligen Webseiten herausfinden, worum es bei all diesen Projekten geht. Ich werde allerdings die Reihenfolge ändern, in der Sie sie aufgelistet haben:
Koch: Chef ist eine Automatisierungsplattform, die Infrastruktur in Code umwandelt.
Das ist einKonfigurationsmanagement-Software. Die meisten von ihnen verwenden das gleiche Paradigma: Sie ermöglichen die Definition derZustandSie möchten, dass eine Maschine in Bezug auf Konfigurationsdateien, installierte Software, Benutzer, Gruppen und viele andere Ressourcentypen ist. Die meisten von ihnen bieten auch die Möglichkeit, Änderungen auf bestimmte Maschinen zu übertragen, ein Prozess, der normalerweise als bezeichnet wirdOrchestrierung.
Landstreicher: Erstellen und konfigurieren Sie leichte, reproduzierbare und portable Entwicklungsumgebungen.
Es bietet einereproduzierbarWeg zu generierenvollständig virtualisierte Maschinenentweder mit Oracle VirtualBox oder VMWare Technologie alsAnbieter. Vagrant kann mit einer Konfigurationsmanagement-Software koordiniert werden, um den Installationsprozess dort fortzusetzen, wo das Installationsprogramm des Betriebssystems fertig ist. Dies wird alsBereitstellung.
Docker: Ein Open-Source-Projekt zum Verpacken, Versenden und Ausführen beliebiger Anwendungen als leichtgewichtiger Container
Die Funktionalität dieser Software überschneidet sich teilweise mit der von Vagrant, in dem sie die Möglichkeit bietet, Betriebssysteminstallationen zu definieren, unterscheidet sich jedoch stark in der für diesen Zweck verwendeten Technologie. Docker verwendetLinux-Container, die keine virtuellen Maschinen an sich sind, sondern isolierte Prozesse, die in isolierten Dateisystemen laufen. Docker kann auch eineKonfigurationsmanagementsystemum die Container bereitzustellen.
OpenStack: Open-Source-Software zum Erstellen privater und öffentlicher Clouds.
Es stimmt zwar, dass OpenStackkann auf einer einzelnen Maschine eingesetzt werden, eine solche Bereitstellung dient lediglich als Proof of Concept und ist aufgrund von Ressourcenbeschränkungen wahrscheinlich nicht sehr funktional.
Das primäre Ziel für OpenStack-Installationen sind Bare-Metal-Multi-Node-Umgebungen, in denen dieverschiedene Komponentenkann in dedizierter Hardware verwendet werden, um bessere Ergebnisse zu erzielen.
Eine Schlüsselfunktion von OpenStack ist die Unterstützung vieler Virtualisierungstechnologien, von vollständig virtualisiert (VirtualBox, VMWare) über paravirtualisiert (KVM/Qemu) bis hin zu Containern (LXC) und sogarBenutzermodus Linux (UML).
Ich habe versucht, diese Produkte als Komponenten einer bestimmten Architektur darzustellen. Aus meiner Sicht ist es sinnvoll, zunächst Ihre Anforderungen in Bezug auf die benötigte Umgebung (Chef, Puppet, Ansible, ...) zu definieren, diese dann kontrolliert bereitstellen (Vagrant, Docker, ...) und sie schließlich bei Bedarf auf globale Größe skalieren zu können.
Wie viel von all diesen Funktionen Sie benötigen, sollte im Rahmen Ihres Projekts definiert werden.
Beachten Sie auch, dass ich die meisten technischen Erklärungen stark vereinfacht habe. Für detaillierte Informationen verwenden Sie bitte die angegebenen Links.
Antwort2
Ich denke, dass es für jemanden, der aus einem Entwicklerhintergrund kommt, tatsächlich schwieriger ist, ein „DevOps“ zu werden. Ihre Frage ist fast drei Jahre alt, also wäre es interessant zu hören, wie Sie den Weg finden. Ich werde aus der Sicht des Systemadministrators auf die Anwendungen antworten, die Sie oben erwähnt haben, und hoffentlich wird dies etwas Licht ins Dunkel bringen oder eine nicht-technische Perspektive bieten, die ein Stück weit erklärt, warum eine Person (Administrator oder Entwickler) anfangen sollte, genau über Ihre Frage nachzudenken, z. B. aus der Sicht eines DevOps: Was ist die Beziehung zwischen x, y, z? Sind diese Tools mehr als die Summe ihrer Teile?
Ich denke tatsächlich, dass Systemadministratoren hier die Oberhand haben, denn die meisten der Anwendungen, die Sie in Ihrer Frage erwähnen, lösen Administrator-„Probleme“ und bieten dabei eine abstraktere Rechenzentrumsumgebung, die wiederum für Entwickler und die neue „DevOps“-Strategie (lesen Sie Strategie/Team, DevOps ist keine Person) besser programmierbar ist. Welche Beziehung besteht also zu den von Ihnen erwähnten Apps? Wie bietet dies einen ganzheitlichen Ansatz für den IT-Service?
OpenStack: Ein Tool, mit dem Sie Ihre eigene private Cloud erstellen können, also vergleichbar mit etwas wie AWS
Das ist es, aber was macht es? - Das Betriebssystem mit dem treffendsten Namen war DOS - es bediente Ihre Festplatte, indem es das BIOS abstrahierte, OpenStack bedient Ihr Rechenzentrum und abstrahiert Ihre Infrastruktur (IaaS - ist Jargon für Rechenzentrumsbetriebssystem). Jetzt hat Ihr Rechenzentrum eine API, eine Befehlssyntax und eine GUI, OpenStack kann Hypervisoren, Switches, Router, Firewalls, Storage Area Networks, Load Balancer, Docker-Hosts usw. steuern. OpenStack verwendet das „Plugin“ Ihres Hardwareherstellers.oderDie jeweilige Funktion kann ausschließlich in Software als Software definiert existierenetwasoder Virtualisierung von Netzwerkfunktionen. 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 auf der Grundlage von Regeln (Skalierung nach oben, Skalierung nach unten usw.) ausgelöst werden. OpenStack ist also eine riesige Abstraktionsebene, z. B. ist es mir egal, welchen Switch ich habe, geben Sie mir ein Netzwerk mitDasBefehl, oder bauen Sie mir eine komplizierte Lastverteilung, HA, öffentlich verfügbar, automatische Skalierung, Domänenname registriert, Speicher angeschlossenDing-mit diesem Skript, das ich im Internet gefunden habe.
Docker: Eine „leichtgewichtige VM“, die auf einigen Konzepten des Linux-Kernels basiert und zum isolierten Ausführen von Prozessen verwendet werden kann, z. B. in einer gemeinsam genutzten Webhosting-Umgebung.
Docker ist eine weitere Abstraktionsebene und verändert, wie die Cloud eine disruptive Technologie ist, die die Branche verändert, weil sie viele betriebliche „Probleme“ wie Softwareabhängigkeiten, Upgrades, Datenisolierung und reine Portabilität löst. Java wurde wegen seiner Quellcode-Portabilität populär, über die Entwickler nicht nachdenken mussten. Eine laufende JVM bedeutete, dass ihr Code auf der Kaffeemaschine laufen sollte, solange diese Java unterstützte. Docker löst ein ähnliches Problem. Um meine App auszuführen, benötigen Sie einen Docker-Host.nichtSie 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 dem zugrunde liegenden Host ist das egal und dem Administrator ist es (bis zu einem gewissen Grad) egal, was Sie in einem isolierten Container tun. 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 beziehen, versionieren Sie sie, ändern Sie sie, führen Sie sie mit Parametern aus usw.
Chef: Ein Tool zum Einrichten und Konfigurieren eines Betriebssystems, z. B. innerhalb einer VM.
Ja, und nicht so disruptiv wie die ersten beiden. Chef, Puppet, Ansible, Salt, System Center Operations Manager und eine Vielzahl anderer Anwendungen in diesem Bereich bieten Entwicklern und Administratoren die Möglichkeit, Bereitstellungen, Upgrades und andere Aktionen (Konfigurationsänderungen) zu modellieren. Es scheint jedoch kein Standardisierungsgremium zu geben, das diese Bemühungen überwacht.Es gibt für Cloud. Aber wir beschäftigen uns nicht mit etwas so Definitivem wie Infrastruktur, daher ist es mühsamer, diese zu lernen, und nicht viel ist von einem auf das andere übertragbar.
Vagrant: Meines Wissens geht es dabei um die Automatisierung der Erstellung und Verwaltung von VMs: Einrichten, Starten und Stoppen. Dies kann über eine lokale VM oder remote erfolgen, z. B. auf einer Cloud-Plattform.
Dies ist der Außenseiter in der Liste der Apps, die Sie erwähnen. Vagrant ist ein Tool für Entwickler und ein Spielzeug für Administratoren. Mit Vagrant können Sie schnell eine Entwicklungsumgebung auf die Beine stellen. Wenn ich z. B. eine Android-App entwickeln möchte, lade ich eine IDE von Vagrant herunter. Ich denke, sie wird bald von Docker überholt.
können Sie mir einen Rat geben, wie ich das alles nutzen kann (es ist ziemlich viel auf einmal und ich weiß noch nicht, wo ich anfangen soll)?
Aus diesem Grund bin ich der Meinung, dass Administratoren die Oberhand haben. Wir mussten das meiste davon manuell erledigen und wissen, was schiefgehen kann. Puppet-Manifeste, Cloud-Computing und Docker-Orchestrierung fallen uns leichter. Entwickler werden sich in vielen Abschweifungen wiederfinden, daher lautet mein Rat an alle potenziellen DevOps: Seien Sie zuerst Administrator.
Antwort3
Ich habe gerade ein OpenStack-Bereitstellungsprojekt abgeschlossen, das einen Chef-Server innerhalb 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 erhält, wenn Sie die Knoten verwalten möchten. Wenn Sie eine statische Adressierung verwenden, funktioniert es gut. Die Verwendung über ein VPN ist nicht optimal.
Antwort4
Ich verwende auf meiner Seite nur eine Kombination aus Vagrant und Docker.
Ich verwende Vagrant, um die Maschinen bereitzustellen (es gibtweitere Cloud-Anbieteraber ich verwende die eingebaute VirtualBox. Da ich diesen Ansatz verwende, ist das externe Netzwerk und der Speicher weitgehend manuell, aber wenn Sie so etwas wie das verwendenVagrant-AWSPlugin können Sie AWS anweisen, die erforderlichen Teile für Sie bereitzustellen.
Das von mir verwendete Bereitstellungsskript verweist auf einen sicheren Speicherort, der CA-Zertifikate und Schlüssel zum Signieren von CSRs sowie docker swarm join
Token enthält. Außerdem installiere ich Docker Engine und konfiguriere es für den Beitritt zum Swarm (initialisieren, falls noch keines vorhanden ist).
Sobald dies erledigt ist, führe ich einfach docker stack deploy
von meinem lokalen Computer oder meiner Buildbox aus einen aus, um den Stapel mit allem bereitzustellen, was ich brauche.
In meinem Fall habe ich einfachKochzugunsten der Verwendung einfacher Skripte nach der Installation, die dies tun yum
oder apt-get
als meine Bereitstellungsskripte dienen.
Ich benutze auch dieVagrant-TriggerPlugin, um vor der Zerstörung zusätzliche Skripte hinzuzufügen (in meinem Fall, um den Schwarm zu verlassen).
Das Schöne an 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 provider
Abschnitt hinzufügen oder ändern. Wohlgemerkt, ich habe noch nicht die Einrichtung von OpenStack auf einem einzelnen Computer durchgeführt, um VirtualBox zu verwalten.