Creating platform-agnostic application packages with Habitat

Bitte begrüßen Sie Nell Shamrell-Harrington, Senior Softwareentwicklung Ingenieur bei Chef >> [APPLAUSE] >> Hallo allerseits Ich würde gerne heute mit einer Frage anfangen Was wäre, wenn man Software einmal bauen und sie überall verwenden könnte? Wenn das möglich wäre, egal ob es um einen Bare Metal Server, eine virtuelle Maschine oder ein Container geht Was wäre, wenn man eine Anwendung in der Cloud konfigurieren kann, ohne sie erneut schreiben zu müssen? Was wäre, wenn man die Anwendungen programmieren könnte, sie automatisch die Störungen zu lösen, ohne einen zentralen Koordinator? Ich habe Neuigkeiten für Sie, man kann heute all das mit Habitat machen, eine neue Open Source Technologie von Chef Habitat ist Anwendungsautomatisierung Es überschreitet Infrastruktur Automatisierung, Cloud Automatisierung und es ist die neue Welt der Anwendungsautomatisierung Ich werde Ihnen gleich mehr dazu verraten Aber zuerst möchte ich mich vorstellen Ich bin Nell Shamrell-Harrington, Senior Software Ingenieur bei Chef Ich bin Kernbetreuer von dem Habitat Open Source Projekt Ich bin auch der Co-Gastgeber für den Food Fight Show Podcast, wo wir Chef, DevOps besprechen, und alles, was darüber hinausgeht und zwischendrin steht Sie können mir Tweets @nellshamrell senden, oder E-Mails, an nshamrell@chef.io Ich werde diese Details am Ende der Präsentation wieder auf den Bildschirm setzen Ich wurde heute hier eingeladen, denn wie ich schon sagte, Habitat 100% ist Open Source ist Es wird mit einer Apache Lizenz verteilt und wenn Sie den Code prüfen wollen, gehen Sie auf Github.com/habitat-sh, wo Sie alle Repos sehen werden, die zu Habitat gehören Also bevor ich beginne zu erklären, was Habitat ist, ist es zuerst wichtig, das Warum von Habitat zu verstehen Warum wurde es überhaupt erstellt? Die Antwort ist ziemlich einfach Software bauen und durchführen ist sehr kompliziert Es gibt unterschiedliche Laufzeiten, die an verschiedene Umgebungen gebunden sind Man braucht eine Laufzeit für eine Ruby Anwendung und eine andere für eine Java-Anwendung Verschiedene Pakete sind gebraucht für verrschiedene Versionen von Linux Man braucht ein yum Paket für Red Hat Linux und Dev-Pakete für Debian-Systeme Außerdem braucht man verschiedene Arten von Paketen für Bare Metal und virtuelle Maschinen und Container Jetzt versucht Habitat diesen komplizierten Prozess zu vereinfachen, durch das Bauen und die Verwendung moderner Anwendungen Durch die Umwandlung von Anwendungen einschließlich Legacy-Anwendungen, was wir moderne Anwendungen nennen Jetzt haben moderne Anwendungen ein paar spezifische Eigenschaften Erstens müssen sie unveränderlich sein Auch agnostisch in Bezug auf die Laufzeitumgebung Sie sollten Komplexität reduzieren, wenn es um Automatisierung geht, statt alles komplizierter zu machen Und sie sollten Skalieren ermöglichen Sie kennen jetzt das Warum von Habitat Jetzt sollten wir besprechen, was genau Habitat ist Kurz gesagt, Habitat ist eine neue Technologie, um Anwendungen zu bauen, zu implementieren und zu verwalten, egal in welcher Umwelt, ob in traditionellen Rechenzentren oder in Containern der heutigen Micro-Dienste Bei Habitat ist die Anwendung selbst die Einheit der Automatisierung Dieses Anwendungspaket, das wir schaffen, enthält alles, was wir brauchen, um die Anwendung zu verwenden, durchzuführen und zu verwalten Und der klarste Weg zu verstehen, wie das funktioniert ist, die Workflows zu betrachten, sowohl für die Verpackung als auch für den Betrieb einer Anwendung mit Habitat Wenn man eine Anwendung mit Habitat verpackt, beginnt man mit dem Benutzer Das sind Sie an der Arbeitsstation, Es spielt keine Rolle ob es Windows, Mac oder Linux ist, Habitat funktioniert auf allen Für diese Arbeitsstation wird man einen Plan erstellen Dieser Plan wird Anweisungen beinhalten, wie die Anwendung konfiguriert werden sollte, wo die eingesetzt wird und wir werden ein Live-Beispiel davon in einem Augenblick sehen Also, wenn man ein Paket für ein Linux-System erstellt, würde man diesen Plan in Bash schreiben Schließlich wird es auch möglich sein, Pakete für Windows zu erstellen und diese könnten in PowerShell geschrieben werden Man verwendet diesen Plan bei dem kompilierten Anwendungscode, um ein Artefakt zu erstellen, der alles in einem Ort enthält Dieses Artefakt ist kryptographisch unterzeichnet mit dem Schlüssel und ich zeige Ihnen in einem Moment, wie dieser Schlüssel verwendet wird Dann kann man das Artefakt in das öffentliche Habitat-Depot hochladen, wo man Habitat-Pakete finden kann, von

Entwicklern auf der ganzen Welt Wenn Sie mehr über das öffentliche Depot erfahren möchten, gehen Sie auf app.habitat.sh und klicken Sie auf Depot und Sie werden eine Schnittstelle sehen, die sehr ähnlich wie diese aussieht Und in diesem Screenshot suchen wir alle Habitat-Pakete, die zum öffentlichen Depot hochgeladen wurden, und wo Node installiert wird Diese ist die Prozedur, um eine Anwendung mit Habitat abzupacken Jetzt werden wir sehen, wie diese Anwendung mit Habitat läuft und hier verwenden wir den so genannten Habitat Supervisor, um das Paket durchzuführen Also wenn man die Artefakt-Anwendung auf dem Depot hat, kann man die auf diesem Depot finden, dann das Artefakt aus dem Depot ziehen Es kann überall verwendet werden, wo Sie wollen Es wird gleich auf Bare Metal, virtuellen Maschinen und Containers funktionieren Wenn man das Depot nicht verwendet, kann man das Paket auch von der lokalen Arbeitsstation hochladen, wo es laufen sollte Und wir sehen ein Beispiel davon in einem Moment Also das Paket wird als eine Dienstleistung in einem Supervisor durchgeführt Wir reden mehr über den Supervisor und die Dienstleistungen ein bisschen später Also, sobald die Anwendung irgendwo läuft – dieses Beispiel ist mit einer virtuellen Maschine – können Sie Informationen via einer standardmäßigen sicheren API abrufen Das ist wirklich nützlich, wenn man einen Load Balancer hat, der Netzwerkverkehr zu dieser Anwendung senden muss, Sicherheitschecks durchführt und mehr Es gibt eine standardmäßige sichere API dafür Und die wahre Magie von Habitat erscheint, wenn man mehrere Instanzen hat, von einer Anwendung die läuft Zum Beispiel hat man vier virtuelle Maschinen, die im selben Paket laufen Die Supervisors auf jeder virtuellen Maschine bilden einen Ring Sie werden den Schlüssel benutzen, den wir verwendet haben, um das Paket zu unterzeichnen, auf dieser Weise wird entschieden, ob andere virtuellen Maschinen in den Ring kommen kõnnen Sie alle müssen mit demselben Schlüssel unterzeichnet werden, um miteinander kommunizieren zu können Und sie machen diese Kommunikation über ein verschlüsseltes Gossip Protokoll, das sie später verwenden können um sich selbst in verschiedenen Topologien zu organisieren und wir sehen ein Beispiel davon auch ein bisschen später Als ich mit Jamie Winsor sprach, bevor ich zu dem Habitat Core Team kam, hat er Habitat als einen Regenschirm beschrieben, über viele Komponenten, die ausgelegt wurden, um Ihnen zu ermöglichen, Software einmal zu bauen und es überall zu verwenden Nun, viele solche Komponenten sind noch in Entwicklung, einschließlich des Builder-Services Wenn Sie mehr darüber erfahren möchten, gehen Sie auf Chef Webseite, da Sie dort einen Grundgedanken vom Chef finden können der das demonstrieren wird Viele andere Komponenten sind noch in Entwicklung und obwohl sie sehr vielversprechend sind, bin ich hier, um darüber zu sprechen, was man mit Habitat heute machen kann Wie Sie Anwendungspakete erstellen und fast überall ausführen können Wie Sie bestehende Anwendungen in die Cloud verschieben können und Ihrer Anwendungen die Intelligenz verleihen, Ausfälle selbst zu lösen, ohne einen zentralen Koordinator oder Controller Ich möchte sicherstellen dass Sie verstehen, was man heute mit Habitat machen kann, weil das ein Open Source Projekt ist und dieses Projekt von unserer Benutzergemeinschaft und Mitwirkenden geleitet wird Gemeinsam werden wir die Zukunft dafür definieren Erstmal besprechen wir den Habitat-Supervisor Man verwendet den, um die Anwendungspakete auszuführen und noch mal darin besteht die Genialität von Habitat Als Nächstes werden wir Habitat Packaging-Format besprechen Dies ist, was man auf Arbeitsstation verwendet, um das Software Artefakt zu erstellen, das fast überall laufen kann Das wird mit dem Supervisor durchgeführt Und schließlich werden wir über Habitat Containers reden Man kann Habitat ohne Containers verwenden, aber diese Funktionalität ist sehr gut mit Containers wie Docker Habitat funktioniert gut mit Docker, Mesos, Kubernetes und hilft diesen besser zu laufen Wir fangen mit dem Habitat-Supervisor an Der Habitat-Supervisor macht ein paar Dinge, aber das Wichtigste ist, dass es wie ein Prozessmanager funktioniert Also das bedeutet, wenn man das Artefakt aus dem Depot zieht und es an egal welcher Infrastruktur anwendet, wo es nötig ist, beginnt der Habitat-Supervisor das Paket zu überwachen Es wird auch Konfigurationsänderungen bekommen Anwendungen hetuzutage bleiben nicht statisch für sehr lange Also wenn eine neue Version für das Paket zu dem öffentlichen Depot hochgeladen wird, z.B. für einen Sicherheits-Patch, würde der Supervisor das Depot überwachen, es identifizieren und in das neue Paket ziehen, installieren und dazu nötige Konfigurationsänderungen machen Und es führt auch Dienstleistungen aus Also bevor wir die Demo starten, werde ich erklären, was Service heißt Ein Service ist ein Habitat-Paket das unter einem Supervisor läuft Und das einfachste Beispiel dafür ist ein Supervisor der einen Service auf einer Infrastruktur durchführt

Egal ob auf einem Bare Metal Server, einer virtuellen Maschine oder einem Container Wenn ein Service läuft, würde das so aussehen, wir hätten eine virtuelle Maschine die einen Service unter einem Supervisor durchführt Aber genug mit dem Reden, schauen wir uns mal eine Demo an, dieses einfache Beispiel In dieser Demo bin ich auf einer lokalen Arbeitsstation hier Lokale Linux Workstation und dort habe ich ein Habitat-Paket, das ich gerade gebaut habe Wir werden genau gleich sehen, wie man diese baut Dies ist mein neuester Aufbau Ich will das auf einer virtuellen Maschine verwenden, in Microsoft Azure Und um das zu machen, habe ich schon die virtuelle Maschine erstellt, aber nichts mehr, einfach nur die erstellt Weiter werde ich SCP bei diesem Paket verwenden, den Aufbau genau dort nehmen, und SCP bei meiner Azure virtuellen Maschine benutzen, diese ist die IP-Adresse Sobald ich das mache, wird SCP funktionieren Dann verwenden ich SSH bei der gleichen virtuellen Maschine, so kann ich dieses Paket dort sehen, und es dann installieren Weitermachen mit ssh, und da ist das Paket, das ich installieren werde Wir sind auf der virtuellen Maschine jetzt Und um das zu installieren, werde ich erst mal Habitat konfigurieren Sie sollten nicht vergessen, ich habe nicht mehr getan, als die virtuelle Maschine via die Azure Web-Platform konfiguriert Sobald ich mit Habitat soweit bin, kann ich dieses Paket installieren, sudo hab installieren, und dann werde ich das Paket andwenden Dann wird es weiter installiert, und ich habe mich nur ein bisschen beeilt, um Zeit zu sparen Und dann, bevor ich diese Anwendung ausführen kann, muss ich eine Hab Gruppe zu meinem System hinzufügen Ich werde das hinzufügen und sobald das fertig ist, nämlich so, werde in einen Hab Benutzer hinzufügen Und ich werde das zu der Hab Gruppe konfigurieren, und dann kann ich den Habitatdienst starten Das ist alles, was ich machen muss, um diese Anwendung zu starten Diese ist eine Node Anwendung, und es läuft auf Port 8080 in meiner virtuellen Maschine Also, wenn ich den Browser öffne, und zum Port 8080 gehe, da ist meine laufende Anwendung Das war also ein absolutes Minimum, bare virtuelle Maschine, in Azure konfiguriert, und in so kurzer Zeit habe ich jetzt eine laufende Anwendung darauf Jetzt zurück zu der Präsentation Also das war ein einfaches Beispiel, mit einem Supervisor und einem Service, in diesem Fall eine NOJS-Anwendung Aber das ist ziemlich limitiert Wenn man mehr als einen Service hat, wenn wir versiegeln, brauchen wir einen Supervisor Ring Wir nehmen ein Beispiel dafür Wir haben einen Supervisor auf einer virtuellen Maschine mit MySQL, und wir entscheiden uns für ein My SQL Cluster Wir konfigurieren zwei und fügen mehrere virtuelle Maschinen zusammen und installieren das My SQL Paket darauf Da das MySQL Paket mit demselben Schlüssel unterzeichnet ist, können diese drei virtuellen Maschinen einen Supervisor Ring bilden Dieser Ring erlaubt virtuellen Maschinen, miteinander über den Gossip Protokoll zu kommunizieren Wichtig ist, dass diese Kommunikation verschlüsselt ist und mit einem Cluster wie dieser, ist es gebräuchlich eine Leader/Follower Topologie zu verwenden Das bedeutet, sobald wir diese drei virtuellen Maschinen mit funktionierendem Mysql Service haben, müssen sie einen Leader wählen Habitat hat einen eingebauten Algorithmus, um einen Leader in einem solchem Cluster zu wählen, der keinen Menschen oder externen Orchestrator braucht Also wir führen den Wahlalgorithmus aus, z.B wählt er diese oben als Leader Das heißt der erhält alle richtigen Anfragen, die mit dem My SQL Cluster kommen Und das heißt, diese zwei unten werden als Follower bezeichnet und erhalten die Leseanforderung, die zu dem Cluster gehören Zum Beispiel wegen eines Fehlers funktioniert der Leader nicht mehr Weil sie in dem Supervisor Ring sind, werden die anderen zwei sehen, dass sie keine Verbindung zum Leader herstellen können und den aus diesem Ring entfernen Jetzt gibt es nur zwei virtuelle Maschinen und im Moment sind beide immer noch Follower Eine andere Wahl findet statt um sicherzustellen, dass sie in gleicher Leader-Follower Typologie sind Diese Wahl wird mit dem eingebautem Algorithmus organisiert und z.B. diese gewinnt und wird der Leader und bekommt automatisch Schreibanforderungen, und diese auf der anderen Seite wird der Follower und erhält von Leseanforderungen All das wurde ohne menschliche Mitwirkung

oder einen Orchestrator erledigt. Das zeigt, dass Habitat davon ausgeht, dass Ausfälle auftreten und dass sie normal sind Wir versuchen nicht, jeden Fall am Anfang zu antizipieren, weil das, ehrlich gesagt, nicht möglich ist Es wird immer etwas Unvorhergesehenes geben, das irgendwo in einem Anwendungslebenszyklus erscheint >> Die restlichen gesunden Komponenten haben die Intelligenz, sich selbst zu organisieren und zusammenzulaufen Es gibt keinen zentralen Koordinator, der sie reorganisiert und konvergiert Wie gesagt, sie haben die Intelligenz, dies selbst zu machen Also der Habitat-Supervisor unterstützt zwei verschiedene Topologien zu diesem Zeitpunkt Die erste ist die, die wir gerade gesehen haben, diese ist die Topologie und dann die nächste ist die stand-alone Topologie Und in dieser gehen wir davon aus, dass jedes Mitglied von dem Supervisor Ring als Einzelne funktioniert, aber in Kommunikation mit den anderen steht Der Supervisor ist auch zuständig für die Handhabung der Updates an dem Paket oder für die Konfigurationsänderungen und leitet sie für den Rest des Ringes weiter Wie gesagt, er wird neue verfügbare Versionen für das Depot identifizieren und sie einsetzen nach einer definierten Aktualisierungsstrategie Die einzige Aktualisierungsstrategie, die derzeit unterstützt ist, ist alles auf einmal Also das bedeutet, wenn ein neues Paket verfügbar ist, alle Supervisors im Ring werden zu diesem neuen Paket sofort aktualisiert werden Bald werden wir noch einen hinzufügen, der Roll-Out heißt Das bedeutet, dass bei einem Supervisor Ring, zum Beispiel, mit vier Supervisors, gibt es eine Reihenfolge ein wird aktualisiert werden, dann der nächste, dann der nächste, und so weiter So wird nur ein Supervisor zu einem bestimmten Zeitpunkt aktualisiert werden Also dieser ist der Supervisor, der zur Überwachung und Verwaltung der Anwendungen dient, die mit Habitat konfiguriert sind Gehen wir zurück im Prozess, nur ein bisschen, um darüber zu reden, wie wir das Paket erstellen, das vom Supervisor überwacht wird? Und wir machen das mit dem Habitat-Verpackungsformat Das verwendet man, um das Artefakt auf Ihrer Arbeitsstation zu erstellen Diese Pakete sind im HART-Format, es gefällt uns zu sagen, dass der Name von “we heart you“ kommt, aber es bedeutet eigentlich Habitat-Artefakte Und diese Pakete enthalten die kompilierte Anwendung und alles, was benötigt wird, um diese Anwendung zu implementieren und auszuführen Dies ist die Plandatei, die wir gesehen haben und die wir gleich sehen werden, wie die funktioniert Aber genug Theorie Lassen Sie uns dieses Verpackungsformat sehen und wie es funktioniert, wir gehen zur nächsten Demo Also, diese Situation wieder, ich bin an meiner Arbeitsstation und ich bin in Arepo für eine no js Anwendung die hier My Tutorial App genannt wird Und sie hat ein Habitat Verzeichnis und ein Quellverzeichnis, also wir öffnen die Quelle Hier findet man den Anwendungscode Und ich habe hier ein paar Dateien Die erste, die wir sehen werden, ist server.js und was diese Datei macht, ist wie Sie sehen können, sie holt die Werte von ein paar Variablen und startet eine hörende Website Also nach server.js, gibt es auch eine config Datei Und hier stehen die Werte für diese Variablen, die ich gerade erwähnt habe So wird server.js diese Werte von dieser Konfigurationsdatei holen Und dann nach dieser Datei werden wir das schließen Lassen Sie uns auch an dieser package.json Datei schauen Was diese macht, sie definiert Metadaten für unsere Node Anwendung, insbesondere definiert sie Abhängigkeiten Das wird wichtig in einem Augenblick sein So ist unsere Node Anwendung abhängig vom nconf Paket Danach schließen wir alles hier und machen wir weiter Und lass uns ein Verzeichnis aufrufen Wir machen das jetzt Und dann schauen wir uns mal an dem Habitat-Verzeichnis Wir werden hier plan.sh erstellen Dies ist also der Kern von Habitat, dies definiert, wie Sie einsetzen, aufbauen und vewenden diese Anwendung Also zuerst haben hier einige Metadaten mit einigen Informationen über unsere Anwendung Und das erste, was ich hinzuzufüge, ist die Quelle Das ist ähnlich dem Namensraum für Ihre Anwendung, und es ist eine Weise, Schlüssel im Einsatz zu speichern für Schlüssel-Authentifizierung auf dem Depo Nachdem ich den Namen des Pakets habe, der mytutorialapp ist, muss ich als Nächstes alle Abhängigkeiten von diesem Paket definieren Es liegt an Core Node, was wir im öffentlichen Depot suchen Es ist ein Node Paket unter dem Core Namensraum Und dann müssen wir ein paar Dinge exportieren Also wir werden eine Port-Variabel exportieren für welchen Port diese Anwendung läuft Und das wird in einer separaten Datei definiert, wenn Sie diese Datei sehen wollen, gehen Sie auf Habitat.sh und schauen Sie sich das Tutorial an, aber wir werden diesen variablen Port nehmen und den dem variable Port in diesem Plan zuordnen Also, als nächstes müssen wir den exponierten Port finden

Wenn wir Docker verwenden, müssen wir definieren, welchen Port wir exponieren, sodass diese Anwendung läuft Also, in diesem Fall werden wir diese Portvariable verwenden, die wir gerade erstellt haben Und das nächste, was wir brauchen, ist callbacks hinzuzufügen Also alles, was wir bisher haben, besteht einfach aus Metadaten über unser Paket, jetzt müssen wir erfahren, wie wir das bauen und installieren Der erste Schritt ist das Aufbauen Dies ist unser erster Standard-Callback Das definiert, und es ist in Bash geschrieben, wie man diese Anwendung aufbauen kann Wir kopieren ein paar Dinge, und führen NPM Installierung aus, um Abhängigkeiten zu installieren Und dann unser zweiter Callback ist installiert Und was das macht, es ist auch in Batch geschrieben, es definiert, wie wir das Paket auf einer virtuellen Maschinen, Container instalilieren, wo wir es verwenden möchten Also danach schließen wir diesen Plan und für den Build gehen wir zurück zum Stammverzeichnis für meine App Und ich werde das so genannte Habitat Studio verwenden Habitat Studio ist eine Umgebung, was im Wesentlichen ein leerer Raum ist, um das Paket zu bauen Sie werden dann das aufbauen und installieren ohne Ihre lokale Arbeitsstation zu beeinträchtigen Also wenn ich das Studio für das erste Mal öffne,wird es ein paar Dinge installieren Und dann, wenn ich eine Anwendung erstellen will, mit dem Plan, den wir gerade gemacht haben, muss ich nur den Befehl-Build ausführen Also werde ich das ausführen und es wird meine Anwendung installieren oder meine Anwendung aufbauen, Entschuldigug Und ich weiß, dass es erfolgreich ist, wenn ich diese Nachricht sehe, ich liebe es, wenn ein plan.sh zusammenkommt Danach kann ich das Studio verlassen, nachdem ich meine Anwendung gebaut habe Und ich schließe das Und dann, wenn ich mir das Ergebnisverzeichnis anschaue, werde ich meine Aufbauten sehen, neu gebautes Paket Das haben wir in der ersten Demo genommen, auf der virtuellen Maschine konfiguriert, und es installiert und ausgeführt Ich möchte dazu sagen, dass dies nur ein Teil des Prozesses ist Es gibt ein bisschen mehr, das wir machen müssen, um das lauffähig und einsetzbar zu machen Wenn Sie den Rest der Schritte sehen möchten, gehen Sie auf den habitat.sh und Schauen Sie sich das Tutorial an Und jetzt zurück zu der Präsentation Also Habitat-Pakete verwendet bash für Pakete, die mit Linux laufen Bald werden Sie die Möglichkeit haben, Pakete für Windows mit PowerShell zu erstellen, das ist derzeit in der Entwicklung Also zusammen mit laufenden HART Paketen mit Habitat können Sie diese auch zu anderen Formaten exportieren Und das beliebteste Format ist Docker-Container-Bilder Und damit können wir anfangen, über Habitat und Container zu diskutieren Wie schon in der ersten Demo gesehen, funktioniert Habitat sehr gut ohne Behälter, aber viel besser wenn es mit Containers benutzt wird Ein Softwarepaket überall auszuführen, ist sehr schwierig Das ist kein neues Problem Wir alle wissen das Container sollten dieses Problem lösen, aber es gibt noch Schwierigkeiten derzeit bei denen Und einer der größten Punkte ist, dass es eine große Lernkurve zwischen der Verwendung von Containers in der Entwicklungsphase und in der Produktion gibt Zusätzlich tendieren Container schwarze Boxen zu werden Wenn wir sie auf verschiedenen Umgebungen einsetzen, ohne völlig alles zu verstehen was darin steckt Besonders wenn wir sie aus dem Docker-Container Verzeichnis ziehen Und das kann zu Sicherheitsproblemen führen Wenn ich ein ganzes Betriebsystem in einem Container habe, aber benutze nur einen Teil davon, kann ich andere Komponenten vergessen und diese nicht aktualisieren, wenn es neue Schwachstellen gibt Der Grund dafür, ist, dass traditionelle Containers, wenn diese so genannt werden können, traditionelle Containers Sie sind nur seit ein paar Jahren verfügbar Aber sie beginnen mit dem Bau der Betriebssystems in diesem Container erst mal, dann die Anwendungsbibliotheken, dann endlich die Anwendung am Ende Das verleiht viel Überschüss und Komplexität den Containern und wahrscheinlich eine Menge Dinge, die wir nicht unbedingt benutzen Was Habitat macht, ist, es dreht den Workflow des Containers Sie beginnen mit nur der Anwendung Sobald Sie diese Anwendung haben, fügen Sie die Bibliotheken hinzu und führen diese Anwendung aus und dann nur an am Ende wird ein minimales Betriebssystem konfiguriert, das genug ist, um die Anwendung auszuführen und nichts mehr Das Betriebssystem beginnt mit / bin / sh Und dann alles, was die Anwendung braucht, kann man durch plan.sh ziehen So Habitat beginnt mit der Anwendung und das minimale Betriebssystem kommt später Die Anwendung definiert diese Abhängigkeiten Wir fügen keine Abhängigkeiten präventiv hinzu Und die Abhängigkeiten werden von der Anwendung gelöst Und man hat noch die exponierte API für externe Dienstleistungen, obwohl meine Anwendung in einem Container läuft

Ich habe noch eine Standard-API für ein Load Balancer oder irgendwelche externe Dienstleistungen, die damit kommunizieren müssen Also, wenn Sie ein Container-Bild mit Habitat erstellen, wissen Sie genau, was im Container steht und was konfigurierbar ist bei dem Container Es ist keine Black Box Nun, schauen wir uns diese Aktion an mit unserer letzten Demo Wir starten die Demo, und sehen ein Beispiel wie man ein Habitat-Paket in ein doc oder Container-Bild exportiert So Erst mal bin ich wieder hier an meinem Arbeitsstation, und wir haben das Paket schon für meine Tutorial App gebaut, so wir gehen zurück zum Studio Und hier können wir das gebaute Paket als Docker Bild betrachten Es ist sehr einfach, Sie führen einfach das Habitat-Paket aus, exportieren den Docker, definieren die Quelle und den Namen Ihrer App Jetzt habe ich das beschleunight nur ein bisschen für diese Demo, aber das geht weiter und erstellt das Docker Container-Bild Und dann werde ich das Studio schließen, wir machen das jetzt Und dann kann ich den Docker-Container starten Er ist sofort verfügbar zum Gebrauch auf meiner Arbeitsstation Also werde ich das mit Sudo Docker Run starten, und den Port konfigurieren, wo es laufen sollte Und einstellen welches Docker-Bild auf dem Container laufen müsste So es wird das machen und es startet diese Anwendung auf Port 8080 auf meinem lokalen Arbeitsstation Und wenn ich den Browser starte, und den lokalen Host eingebe, Port 8080, werde ich sehen, wie meine Anwendung funktioniert So ist es super schnell und super einfach, Ihre Anwendung in ein Container-Bild einzusetzen Zurück zu der Präsentation Sobald man das Container-Bild hat, kann man es lokal ausführen, wie wir das gemacht haben, aber es wird nicht helfen, wenn wir nur an der Arbeitsstation sitzen So können Sie den Container einsetzen, mit Container Scheduling Dienstleistungen wie Kubernetes, Mesosphäre, Docker Swarm, wenn es große Fragen über Habitat gibt Ist es ein Konkurrent zu diesen? Nein Es funktioniert mit ihnen Man kann auch Cloud-basierte Container-Dienste verwenden, wie Azure Container-Dienstleistungen oder andere Cloud-Container-Dienstleistungen Jetzt, zum Ende gibt es einige Dinge, die Sie sich heute merken sollten Das erste ist, dass Sie Software einmal aufbauen können und sie fast überall ausführen Sie können eine Legacy-Anwendung in die Cloud verschieben, ohne die umzuschreiben Und Sie können Ihre Anwendungen konfigurieren, dass sie alleine Fehler lösen Man kann all das heute mit Habitat machen Wichtig zu wissen, ist, dass Habitat keine Infrastruktur- Automatisierung ist, auch keine Container-Automatisierung, sondern Anwendungsautomatisierung Die Anwendung selbst, ist, was wir automatisieren Also, wenn Sie sich daran beteiligen möchten und ich hoffe Sie wollen das, gehen Sie auf habitat.sh/community Wie gesagt, ich bin Nell Shamrell-Harrington Das sind meine Kontaktdetails Vielen Dank >> [APPLAUSE]