Heim >Backend-Entwicklung >PHP-Tutorial >Packer von Hashicorp - Ist es etwas für PHP -Entwickler?

Packer von Hashicorp - Ist es etwas für PHP -Entwickler?

尊渡假赌尊渡假赌尊渡假赌
尊渡假赌尊渡假赌尊渡假赌Original
2025-02-10 16:02:09317Durchsuche

Packer: Ein leistungsstarkes Tool in der PHP Developer Toolbox? Es liegt an Ihnen!

Hashicorp's Packer - Is It Something for PHP Developers?

Hashicorp's Packer - Is It Something for PHP Developers?

Kurz gesagt: Ist Packer als PHP -Entwickler ein wesentliches Werkzeug in Ihrer Toolbox? Die Antwort hängt davon ab, wofür Sie arbeiten.

Wenn Sie an der serverseitigen Arbeit (für Kunden oder Unternehmen) beteiligt sind und gleichzeitig Entwicklungsarbeiten durchführen, lautet die Antwort Ja. Packer kann Ihnen sehr helfen.

, aber wenn Sie nur ein Entwickler sind und sich selten mit der Serverarbeit direkt befassen, hilft Packer Ihnen nicht viel.

Das Erlernen der Grundlagen der Erstellung einer Serverumgebung ist für jeden PHP -Entwickler von großem Nutzen. Sie werden diese Technologien während Ihrer Karriere mehr oder weniger begegnen (alles, was Sie erstellen, läuft über sie!). Das Beherrschen dieser Fachkenntnisse wird zweifellos Ihre Karriereaussichten verbessern! Zumindest werden Sie die Arbeit von DevOps -Kollegen besser verstehen.

Wenn Sie daran interessiert sind oder häufig manuelle serverseitige Arbeiten durchführen, lesen Sie bitte weiter.

Hashicorp's Packer - Is It Something for PHP Developers?

Schlüsselpunkte:

    Packer -Anwendbarkeit: Packer ist besonders nützlich für PHP -Entwickler, die an der Serververwaltung und -entwicklungsaufgaben beteiligt sind, um die Erstellung einer konsistenten Serverumgebung zu vereinfachen.
  • Entwicklungsautonomie: Fortschritte in der modernen Computertechnologie ermöglichen es Entwicklern, komplexe Entwicklungsumgebungen direkt auf ihren persönlichen Geräten zu verwalten, wodurch die Autonomie verbessert und die Konsistenz zwischen Entwicklungs- und Produktionsumgebungen verbessert wird.
  • Integration in Vagrant: Sowohl Packer als auch Vagrant verbessern die Entwicklungsumgebung. Die einzigartige Funktion von Packer besteht jedoch darin, automatisch Maschinenbilder zu erstellen, die auf verschiedenen Plattformen verwendet werden können, wodurch die Umgebungszeitspeicherung sparen kann.
  • DevOps Collaboration: Packer bietet DevOps-Profis Tools, um Entwicklungsteams eine produktionsausgestellte Umgebung zu bieten, Entwicklungsprozesse zu vereinfachen und die Einstellungsfehler zu reduzieren.
  • Praktische Aktion: Dieser Artikel enthält ein praktisches Tutorial zum Einrichten von Packer und zum Erstellen von virtuellen Maschinenbildern, wodurch die Fähigkeit von Packer nachgewiesen wird, komplexe Konfigurationsaufgaben effizient zu erledigen.
  • zukünftige Entwicklung: Das Lernen, Tools wie Packer zu verwenden, kann nicht nur die aktuellen Projektanforderungen erfüllen, sondern auch Entwickler auf die technische Integration und Zusammenarbeit mit verschiedenen Teams vorbereiten.
Rückblick:

Kurz gesagt #2: Wenn Sie den Vagranten beherrschen und seinen Zweck als Tool verstehen, gehen Sie bitte zu diesem Teil dieses Artikels.

Dies ist der Workflow für einen durchschnittlichen unabhängigen PHP -Entwickler zum Zeitpunkt, um Code auf einen Entwicklungsserver (oder schlimmer noch direkt an einen Produktionsserver) zu bringen (in der Tat verwenden einige Entwickler heute noch denselben Prozess). Zu dieser Zeit war das Erstellen eines Webservers selbst normalerweise der Job eines anderen.

Darüber hinaus gibt es in dieser nicht zu weit entfernten Vergangenheit möglicherweise eine Form eines gleichzeitigen Versionskontrollsystems, und das Team kann sogar eine automatische Bereitstellung einrichten. Wenn Änderungen am Repository verpflichtet werden, wird es automatisch für das Staging- oder Produktionssystem bereitgestellt. Diese Situation war zu diesem Zeitpunkt tatsächlich die beste Technologie für die Entwicklung von Webanwendungen.

In diesen wunderbaren alten Zeiten sind der Begriff kontinuierlicher Integration, virtuelle Maschinen, Cloud -Computing, Infrastrukturorchestrierung, Rechenzentrumsautomation und sogar "DevOps" im Grunde genommen unbekannt. Sie wurden gerade geboren. Amazon hat gerade sein Internet Services -Geschäft gestartet. Denken Sie daran, das war erst vor zehn Jahren!

Ah, wie einfach war die Zeit, oder?

Nein, das ist nicht der Fall. Zu dieser Zeit war die Entwicklung langsamer, umständlicher und anfälliger für Fehler. Server müssen auch immer für Tests "aktiviert" werden, was normalerweise bedeutet, dass Entwickler warten müssen, bis der "Networker" über einen Server verfügt, der verwendet wird, z. B. die neueste PHP -Version. In vielen Fällen ist dies oft ein Kampf, und für "Netzwerke" ist es wie das Auslegen eines Feuers.

Hashicorp's Packer - Is It Something for PHP Developers?

Computing und Virtualisierung heute:

Mit der Computertechnologie können Entwickler nun eine komplexere Entwicklungsinfrastruktur mit sich bringen. Heute ist die Rechenleistung von Laptops oder PCs weitaus größer als die von Webservern vor einem Jahrzehnt.

Tatsächlich sind viele der Smartphones, die wir heute haben, leistungsfähiger als die Server vor zehn Jahren.

Hashicorp's Packer - Is It Something for PHP Developers?

Technologie ist erstaunlich, nicht wahr?

Wenn die zunehmende verfügbare Rechenleistung immer mehr Menschen erkennen, dass diese Rechenleistung in separate "Maschinen" unterteilt werden kann. Dies ermöglicht es ihnen, gleichzeitig völlig unterschiedliche Operationen auszuführen. Noch wichtiger ist, dass die Rechenleistung besser genutzt werden kann, wodurch Ressourcen gespeichert werden können. Dies sind die Haupttreiber für die Virtualisierung der Computerleistung.

Mit anderen Worten, heute mit der Fähigkeit, virtuelle Maschinen zu erstellen, können Entwickler ihre eigene Entwicklungsumgebung mit sich tragen, die nicht mehr auf andere Menschen beschränkt sind, die ihnen die richtige Arbeitsumgebung bieten müssen. Noch wichtiger ist, dass sie eine vollständige Entwicklungsumgebung lokal erstellen und einen vollständigen Webserver simulieren können.

Dies macht die Entwickler nicht nur autonomer, diese lokale Entwicklungsumgebung hat einen weiteren großen Vorteil: Sie wird als "Entwicklungsproduktionskonsistenz" bezeichnet-wir sind im Neuling-freundlichen Buch "Sprungstart-PHP-Umwelt". Dies wurde ausführlich erörtert. Die Konsistenz für Entwicklungsproduktionen bedeutet im Wesentlichen, dass Entwickler sich auf nahezu denselben Systemen wie die Anwendung entwickeln können, die letztendlich in einer Produktionsumgebung eingesetzt wird.

Hashicorp's Packer - Is It Something for PHP Developers?

Produktionskonsistenzvorteile - damit Entwickler, Code mit höherer Qualität zu schreiben, da sie beim ersten Mal das Richtige auf die richtige Weise tun können.

Jetzt können Entwickler alles haben, was sie benötigen, um hochkomplexe Anwendungen in ihren Rucksäcken zu entwickeln, einschließlich hochkomplexer Entwicklungsumgebungen.

offensichtlich bringt diese Fähigkeit auch Komplexität. Der virtuelle Server muss erstellt werden und die Software muss installiert und konfiguriert werden. All dies kann sehr zeitaufwändig sein, und Zeit ist Geld. Dies bedeutet auch, dass Entwickler möglicherweise viel lernen müssen, um eine solche Umgebung zu leiten. Dies ist auch zeitaufwändig.

Das Erscheinen von Vagrant:

Um den Entwicklern dabei zu helfen, das "Aufbau" ihrer Entwicklungsumgebung abzuschließen, startete Hashicorp Inc. ein Programm namens Vagrant. Mit Vagrant ist die Konfiguration der Entwicklungsumgebung Code, die leicht freigegeben, zurückgerollt und vorwärts gerollt werden kann. Entwickler können neue Dinge, wie die neueste Version von PHP, ausprobieren, ohne sich Sorgen zu machen, dass der Server möglicherweise Stunden dauern kann, oder der Fehler kann stundenlang dauern. Entwickler müssen nicht darauf warten, dass jemand diese Umgebung schafft, und sie werden niemanden stören, wenn die Umgebung vollständig abstürzt.

Mehr über Vagrant - Wiedereinführung in Vagrant: Die richtige Art, PHP

zu verwenden

Es gibt jedoch noch ein anderes Problem zu lösen. Während Vagrant ideal für den Aufbau einer Entwicklungsumgebung ist, ist es zeitaufwändig, insbesondere mit vielen Konfigurationen zu laufen (weitere Informationen zur Konfiguration finden Sie unten). Abhängig von der beteiligten Software kann es zwischen 2 und 20 Minuten dauern, um eine Box zu erstellen und die Software zu konfigurieren.

Dieser Zeitverbrauch verschärft auch die Tatsache, dass Vagrant jeweils nur eine einzelne Box für ein einzelnes virtualisiertes System (als "Anbieter" bezeichnet) erstellen kann. Wenn Sie beispielsweise Ihre Umgebung lokal erstellen und eine Umgebung auf AWS erstellen möchten, müssen Sie zwei verschiedene Vagrantdateien erstellen und separat ausführen. Dies ist eigentlich nicht praktisch. Kurz gesagt, Vagrant ist sehr gut darin, eine einzige Entwicklungsumgebung aufzubauen, und das ist alles.

Das Aussehen von Packer:

Um fortzufahren, müssen Sie jetzt mehr der DevOps -Rolle spielen. Packer bringt die Aufgabe, virtualisierte Maschinenbilder in eine relativ einfache zentrale Konfiguration zu erstellen, sodass Sie in automatisierten Entwicklungsumgebungen die gleichen Vorteile von Vagrants erhalten, aber jetzt können Sie auch grundlegende Bilder entwickeln.

virtuelle Maschinenbilder werden auch als virtuelle Geräte bezeichnet. Es handelt sich um eine vorgefertigte Kopie der virtuellen Maschine, mit der eine neue virtuelle Maschine erstellt werden kann. In Vagrant werden diese Bilder als "Box" bezeichnet.

Wenn Sie den Prozess des Erstellens Ihres eigenen Spiegels verstehen, wissen Sie, dass manuelle Vorgänge sehr problematisch sind. Wenn Sie es nicht wissen, haben Sie Glück, weil Sie den Ärger überspringen können, sie manuell zu bauen, und jetzt können Sie Packer verwenden. Sie müssen jedoch immer noch einige Grundlagen des Spiegel-/Servergebäudes lernen. Auch dies ist ein wertvolles Wissen für Entwickler, und jeder Entwickler sollte sich die Zeit nehmen, um die Grundlagen zu lernen.

Sobald Sie Packer verwenden und bereits Vagrant verwenden, wird die erste Frage, an die Sie denken werden, "Was ist der Unterschied zwischen Packer und Vagrant?" Letztendlich erstellt Packer Bilder, mit denen Vagrant eine Entwicklungsumgebung aufbauen kann. Wenn Sie zuvor Hashicorps Vagrant Box verwendet haben, ist es wahrscheinlich, dass sie auch mit Packer gebaut wurde.

Als DevOps -Person, die Packer verwendet, können Sie dem Entwicklungsteam Bilder der Produktionsumgebung zur Verfügung stellen, die sie sich problemlos mithilfe von Verwendung entwickeln können. Dies unterstützt erneut die Konsistenz der Entwicklungsproduktion und vereinfacht den Entwicklungsprozess.

Wir haben bereits erwähnt, dass sie Zeit sparen. Packer kann diese Bilder auch parallel erstellen und bereitstellen. So können Sie Bilder für verschiedene Hosts, Ihre private Cloud und Vagrant fast gleichzeitig erstellen. Darüber hinaus beginnen diese "vorgebackenen" Spiegel viel schneller als die in Vagrant konfigurierten Kästchen. Viel schneller! Wenn Ihr Team "aktiviert" und zerstört wurde, speichert die mit Packer erstellte vorgebackene Software und konfigurierte Bilder Ihrem Team viel Zeit.

Der Packer -Prozess lässt auch grundlegende Bilder wiederholbar. Dies bedeutet, dass Ihr Produktionssystem eine höhere Qualität aufweist, da die Bildrekonstruktion von VMs im Voraus getestet und automatisiert werden kann. Mit anderen Worten, Packer reduziert den menschlichen Fehler.

Beim Erstellen eines Spiegels können Sie auch mehrere Unterprozesse steuern. Wir werden sie später besprechen. Sie können auch mehr über Packer -Konzepte und -funktionen in der Packer -Dokumentation erfahren. Beachten Sie, dass Sie Bilder für viele verschiedene Plattformen erstellen können. Sie können auch viele Konfigurationsprogramme (z. B. Koch, Puppen-, Ansible) oder Shell Skript -Konfigurationsoftware verwenden. Und Sie können eine Nachbearbeitung durchführen, z. B. das Erstellen einer Vagabrant-Box oder das Schieben eines Bildes in die Docker-Registrierung (und vieles mehr).

wow ... es gibt zu viele Theorien, nicht wahr?

Lassen Sie uns etwas Praktisches tun, um das Konzept von Packer zu klären und wie man es benutzt.

Einige Packer -Workflows:

Dies ist eine visuelle Darstellung dessen, was wir tun werden.

Hashicorp's Packer - Is It Something for PHP Developers?

Während Packer kein Vagrant benötigt, um Bilder zu erstellen, wird Vagrant zum obigen Diagramm hinzugefügt, um Ihnen ein besseres Verständnis dafür zu vermitteln, wo es sich im "Rohr" befindet.

Um Ihnen das Erlernen der Grundlagen von Packer zu erlernen, besteht das Ziel der folgenden Übung darin, ein Bild zu erstellen, das auf Rackspace und einer virtuellen "Box" -Datei "ausgeführt wird. Ziel ist es, Ihnen zu zeigen, dass Sie dieselben Bilder und Konfigurationen für die Entwicklung erstellen und auf Ihrem (theoretischen) Produktionsserver verwenden können.

Wir verwenden Rackspace, da es ein sehr einfaches Backend für die Verwaltung der Berechnungsinfrastruktur gibt und weil es OpenStack verwendet, ein Standardsystem für die Infrastrukturverwaltung.

Wir verwenden auch VirtualBox, da es sich um ein kostenloses und weit verbreitetes lokales Virtualisierungssystem handelt. Wenn Sie es vorziehen, können Sie andere Systeme wie AWS und VMware verwenden. Sie müssen jedoch die in diesem Tutorial bereitgestellten Materialien ändern, da sie speziell für beide Systeme hergestellt werden.

Bitte beachten Sie: Der virtuelle Server, den wir in diesem Artikel integriert haben, ist keineswegs "Produktionsbereit". Sie dienen nur zu Demonstrationszwecken.

Das ursprüngliche Bild, das wir mit Packer erstellen werden, wird ein Debian Jessie (64-Bit) -Abbild mit Nginx und PHP7 vorinstalliert sein.

Anforderungen: Bevor Sie beginnen, müssen Sie Vagrant- und Virtualisierungssoftware -VirtualBox (Version 5.0) auf Ihrem Computer installieren. Sie benötigen auch einen 64-Bit-Computer. Wenn Sie ein Windows -System verwenden, sollten Sie Git auch für Windows installieren, damit wir die Bash -Konsole verwenden können.

Wie ich oben erwähnt habe, verwenden wir Rackspace in diesem Tutorial, sodass Sie dort ein Konto erstellen müssen. Das Einrichten eines Kontos ist relativ schnell und einfach.

Sie benötigen auch eine relativ schnelle Internetverbindung, da VirtualBox einen sehr großen Bild -Download (ca. 250 MB) erstellt. Schließlich müssen Sie auf Ihrem Computer etwa 12 GB kostenlosen Speicherplatz auf Ihrem Computer haben, um den gesamten Vorgang abzuschließen.

In diesem Artikel geht auch davon aus, dass Sie einige grundlegende Kenntnisse über die Verwendung von Vagranten-, SSH- und Shell -Befehlen kennen und über grundlegende Kenntnisse über Linux- und virtuelle Maschinen verfügen.

Richten Sie Ihren Computer so ein, dass Packer

ausgeführt wird

Bitte befolgen Sie die Anweisungen, um Packer auf Ihrem Computer zu installieren.

Zum Zeitpunkt des Schreibens wurde gerade Packer 0.11.0 veröffentlicht.

Geben Sie nach Abschluss der Installation das Paket in Ihre (Git -Bash) -Konsole ein. Sie sollten so etwas sehen.

Hashicorp's Packer - Is It Something for PHP Developers?

Jetzt gehen wir zu Rackspace und starten einen Server und erstellen ein Basisbild. Hinweis: Wenn Sie AWS oder einen anderen Packer -Support als Cloud -Host für die Builder -Plattform haben, sind die Schritte, die Sie unternehmen müssen, ähnlich. Wir stellen Rackspace in dieses Tutorial ein. Beachten Sie auch, dass das Erstellen eines Servers einige Gebühren für Ihr Host -Konto berechnet. Die Menge ist jedoch gering. Die Kosten für die Befolgung dieses Tutorials sollten einen Dollar nicht überschreiten.

Erstellen Sie weiterhin einen Jessie 8 -Server und nennen Sie es "Packer -Test". Rackspace ist sehr intuitiv und leicht zu verstehen. Starten Sie einen 1 -GB -Server, um das Bild daraus zu erstellen.

Hashicorp's Packer - Is It Something for PHP Developers?

Nachdem der Server aktiv ist, erstellen Sie einen Spiegel des neu erstellten Servers (die Schaltfläche "Operation" in der oberen rechten Ecke). Nachdem Sie das Bild erstellt und gespeichert haben, können Sie den Server löschen.

Gehen Sie zu "Server- & Gt; Mirror" und Sie sollten Ihr neues Bild sehen. Klicken Sie darauf, um zur Seite der Details des Spiegels zu gelangen. Wir brauchen die Spiegel -ID.

Hashicorp's Packer - Is It Something for PHP Developers?

okay. Nachdem Sie bereit sind, dass das Grundbild auf Rackspace verwendet wird, werden wir unser eigenes Image erstellen. Dieser Prozess ist eigentlich recht komplex, insbesondere für diejenigen, die nur begrenzte Kenntnisse der Serverumgebung und Packer haben. Um Hilfe zu leisten, haben wir ein Demo Packer -Repository erstellt, mit dem Sie heruntergeladen werden können. Bitte klonen Sie dieses Repository aus Ihrer (Git Bash) Konsole.

<code>git clone https://github.com/smolinari/PHP-Packer-Demo
</code>

wechseln Sie zum neu erstellten Verzeichnis "PHP-Packer-Demo".

<code>cd PHP-Packer-Demo
</code>

Verwenden Sie Ihren bevorzugten Editor, um die Jessie64.json -Datei zu öffnen und Ihre Rackspace -Benutzeranmeldeinformationen und Ihre Spiegel -ID einzugeben.

Hashicorp's Packer - Is It Something for PHP Developers?

Schnellintenote: Sie können auch Ihren Rackspace -API -Schlüssel anstelle Ihres Passworts hinzufügen. Wenn Sie wirklich mit der Verwendung von Packer beginnen, können Sie auch Zugriffsanmeldeinformationen so verschieben, um Dateien zu trennen und sie mit Git zu ignorieren. Dies geht jedoch über den Rahmen dieses Artikels hinaus.

jessie64.json -Datei ist der Kern von Packer. Dies ist die Konfigurationsdatei, die Packer für Aktionen steuert. Es ähnelt der VagrantFile, die in Vagrant verwendet wird (wir bieten Ihnen auch VagrantFile im Download).

Führen Sie jetzt Packer mit dem folgenden Befehl aus.

<code>packer build jessie64.json</code>

Dieser Build -Prozess dauert einige Minuten. Da wir am Tutorial arbeiten, verstehen wir tatsächlich, was in Packer passiert, während wir darauf warten, dass es abgeschlossen ist. Dieser Vorgang sollte nicht über 30 Minuten überschreiten oder die Ausgabe in der Konsole nicht länger als 10 Minuten anhalten. Wenn dies zutrifft, ist ein Fehler aufgetreten.

Hashicorp's Packer - Is It Something for PHP Developers?

Builder

Erstens startet Packer den Build -Prozess mit dem von uns definierten grundlegenden Bild. Diese Bilder werden als Server selbst gestartet, und wir definieren diese Server auch in der Jessie64.json -Datei. Sie finden den spezifischen JSON -Wert des "Bauherrn" oben in der Datei jessie64.json.

<code> "builders": [
    {
      "type": "openstack",
      "username": "ENTER_RACKSPACE_USERNAME_HERE",
      "password": "ENTER_RACKSPACE_PASSWORD_HERE",
      "region": "IAD",
      "identity_endpoint": "https://identity.api.rackspacecloud.com/v2.0",
      "ssh_username": "root",
      "image_name": "Test Packer Image",
      "source_image": "ENTER_YOUR_IMAGE_ID_HERE",
      "flavor": "2"
    },
    {
      "type": "virtualbox-iso",
      "boot_command": [
        "<esc><wait>",
</wait></esc>        "install <wait>",
</wait>        "preseed/url=http://{{ .HTTPIP }}:{{ .HTTPPort }}/vanilla-debian-8-jessie-preseed.cfg <wait>",
</wait>        "debian-installer=en_US <wait>",
</wait>        "auto <wait>",
</wait>        "locale=en_US <wait>",
</wait>        "kbd-chooser/method=us <wait>",
</wait>        "netcfg/get_hostname={{ .Name }} <wait>",
</wait>        "netcfg/get_domain=vagrantup.com <wait>",
</wait>        "fb=false <wait>",
</wait>        "debconf/frontend=noninteractive <wait>",
</wait>        "console-setup/ask_detect=false <wait>",
</wait>        "console-keymaps-at/keymap=us <wait>",
</wait>        "keyboard-configuration/xkb-keymap=us <wait>",
</wait>        "<enter><wait>"
</wait></enter>      ],
      "disk_size": "10140",
      "guest_additions_mode": "disable",
      "guest_os_type": "Debian_64",
      "hard_drive_interface": "sata",
      "headless": true,
      "http_directory": "http",
      "iso_checksum": "dd25bcdde3c6ea5703cc0f313cde621b13d42ff7d252e2538a11663c93bf8654",
      "iso_checksum_type": "sha256",
      "iso_url": "http://cdimage.debian.org/cdimage/release/8.3.0/amd64/iso-cd/debian-8.3.0-amd64-netinst.iso",
      "shutdown_command": "sudo /sbin/halt -p",
      "ssh_password": "vagrant",
      "ssh_username": "vagrant",
      "ssh_port": "22",
      "ssh_wait_timeout": "10000s",
      "vm_name": "debian-jessie",
      "vboxmanage": [
        ["modifyvm", "{{.Name}}", "--memory", "1024"],
        ["modifyvm", "{{.Name}}", "--cpus", "1"]
      ]
    }
  ],
</code>

Der Bauherr ist dafür verantwortlich, den Spiegel zu erstellen, den Sie mit der Umgebung kompatibel sind, auf die Sie abzielen. Mit AWS AMI können Sie beispielsweise Ihr VirtualBox -Bild für die Verwendung mit Vagrant und AWS erstellen.

In unserer Übung kombinieren wir die Bilder "OpenStack" und "VirtualBox-ISO". Leider kann Packer das OpenStack -Bild nicht verwenden, um VirtualBox -Bilder zu erstellen, daher haben wir auch das VirtualBox -Bild erstellt.

Sie werden den Abschnitt "boot_command" im obigen JSON -Code bemerken. Hier sind wir tatsächlich in der Automatisierung, um die erforderlichen Befehle für die Installation von Debian Jessie 8 als Betriebssystem in der VirtualBox VM einzugeben. Sie können den Installationsprozess sogar in VirtualBox beobachten, wenn Packer erstellt wird, wenn Sie möchten.

Natürlich gibt es hier viel "Magie", Sie müssen die internen Mechanismen der Linux -Installation und der internen Mechanismen von Packer wirklich verstehen, um solche virtuellen Bildern manuell zu kombinieren. Zum Glück gibt es viele ausgezeichnete DevOps -Personen, die solchen Packer -Json -Dateien der Öffentlichkeit zur Verfügung stellen.

Konfigurationsprogramm

Sobald der Builder das Bild im VM in Rackspace und VirtualBox startet, konfiguriert Packer die im Shell -Skript definierte Software. Mit Packer können Sie auch Systeme wie Puppet, Chef oder Ansible und viele andere Systeme verwenden, um Konfigurationen zu orchestrieren. Wir verwenden nur Shell -Skripte, Sie können diese Skripte im Verzeichnis /Skripts finden.

Dies ist der Konfigurationsteil unserer Konfigurationsdatei.

<code>git clone https://github.com/smolinari/PHP-Packer-Demo
</code>

"Datei" -Konfigurationsprogramm ist, wie wir der VM Konfiguration hinzufügen. Es wird die Konfigurationsdatei auf unserem Computer in das Verzeichnis /TMP auf der VM geladen. Während des Konfigurationsprozesses befinden sich einige Befehle im Shell -Skript, die die Konfigurationsdatei auf den richtigen Speicherort auf der VM kopieren. Wir haben Php.ini -Dateien wie die "Standard" -Konfigurationsdateien von NGINX oder modifizierte PHP. Sie finden die Dateien, die wir im Ordner /Transfer_files verwenden.

Sie werden auch den obigen Abschnitt "Override" bemerken. Dies fordert Packer an, bestimmte Skripte nur für jedes Bildbau auszuführen. In unserer Übung müssen wir auf dem Bild "OpenStack" weniger verarbeitet, um es mit dem VirtualBox -Bild "konsistent" zu machen, sodass wir nur das Skript setup.sh verarbeiten.

Schließlich gibt es den Prozessorteil nach der Konfiguration.

<code>cd PHP-Packer-Demo
</code>

Dies ist dafür verantwortlich, die Vagrant -Box tatsächlich zu erstellen.

Es ist wichtig, sich daran zu erinnern, dass alles, was wir jetzt konfigurieren, in den Spiegel "vorgefertigt" ist. Packer rettet uns (oder unser Entwicklungsteam) viel Zeit mit dieser Automatisierung!

baues Bild

Nachdem Packer die gesamte Software konfiguriert hat, die wir in der Jessie64.json -Datei konfiguriert haben, wird die VMs geschlossen und neue Bilder dieser VMs gespeichert. Für Rackspace -Bilder finden Sie im Abschnitt gespeicherter Bilder im Bereich der Rackspace -Verwaltung ein neues Bild. Für VirtualBox -Bilder finden Sie im aktuellen Verzeichnis eine "jessie64.box" -Datei.

Das war's. Packer hat seinen Job gemacht!

Was soll ich jetzt tun?

Sie können jetzt das Rackspace -Image verwenden, um einen neuen Server zu erstellen. Versuchen Sie es. Gehen Sie zum Server -Abschnitt und wählen Sie Server erstellen und gehen Sie dann zum gespeicherten Mirror. Sie sollten Ihr neu gespeichertes Bild unter gelöschtem Server sehen. Wählen Sie es aus und starten Sie den Server. Sobald es aktiv ist, können Sie die IP -Adresse an Sie erhalten und in Ihren Browser eingeben. Sie sollten den nginx -Begrüßungsbildschirm sehen.

Hashicorp's Packer - Is It Something for PHP Developers?

Für VirtualBox -Bilder müssen wir auch Vagrant für einige Arbeiten verwenden. Lesen Sie jetzt sorgfältig. Das wird sehr schwierig!

VirtualBox VM

erstellen

Geben Sie im Verzeichnis, das die Vagrant -Datei enthält, den folgenden Befehl ein.

<code>git clone https://github.com/smolinari/PHP-Packer-Demo
</code>

Das ist es! OK, wir helfen Ihnen, indem wir Vagrant -Dateien für Sie erstellen. Sie müssen mehr über Vagrant erfahren, um selbst eine verfügbare Datei zu erstellen. Wie bereits erwähnt, sollten Sie dies, wenn Sie ein ernsthafter Entwickler sind, dies lernen.

Sie sollten jetzt ein neues Bild als VM in der Benutzeroberfläche von VirtualBox sehen.

Der erste Befehl oben fügt das neue Feld zu Vagrant hinzu, sodass er weiß, wo es verwendet werden soll. Wir nannten die Box "Jessie64" und benutzten die Box, die wir gerade erstellt haben. Der zweite Befehl fordert Vagrant an, eine virtuelle Maschine in VirtualBox zu erstellen und auszuführen.

Sie werden auch feststellen, dass das erste Start der Box nur ein oder zwei Minuten dauert. Wenn wir weiterhin in Vagrant konfigurieren, dauert es 10 bis 20 Minuten. Dies spart wieder Zeit.

Sobald der Befehl "vagrant up" abgeschlossen ist, geben Sie die URL https://www.php.cn/link/14e676072a5b15381b6f7f33c3528215 in Ihrem Browser ein.

In beiden Systemen können Sie auch den "Vagrant" -Benutzer und das Kennwort "Vagrant" zur SSH -Verbindung verwenden. Diese Server sind nicht sicher!

Wir sind noch nicht vollständig fertig!

Lass uns etwas Interessanteres tun.

Stellen Sie sich vor, Sie haben etwas Ähnliches getan, wenn Sie den nächsten Schritt ausführen. Wir automatisieren jetzt den Software -Installations- und Konfigurationsprozess!

Nehmen wir an, wir haben viele Symfony -Entwicklungsarbeiten geleistet. Lassen Sie uns unser Bild so einrichten, dass die Symfony -Version automatisch installiert und bereit ist.

Löschen Sie den Server vor dem Start auf Rackspace. (Wir wollen kein unnötiges Geld ausgeben.)

Beenden wir in Ihrer Konsole auch die von uns gerade geladene Vagrant -Box. Geben Sie den folgenden Befehl ein:

<code>cd PHP-Packer-Demo
</code>

Symfony (und Demo) für Spaß (oder nicht?)

installieren

Nehmen wir wieder an, wir haben ein Entwicklungsteam, das oft Symfony verwendet. Lassen Sie uns einen symfony-fähigen Server automatisieren. Wir laden nur die Symfony Demo -Anwendung, aber diese zusätzliche Arbeit sollte Ihnen eine gute Vorstellung davon geben, wie Packer die Entwicklungs- und Infrastrukturorchestrierungsbemühungen bei der Automatisierung unterstützt.

Gehen Sie zum Verzeichnis /Skripts, öffnen Sie das Skript setup.sh mit Ihrem bevorzugten Editor und fügen Sie den folgenden Shell -Skriptcode unten hinzu.

<code>git clone https://github.com/smolinari/PHP-Packer-Demo
</code>

Der obige Code ist im Grunde das, was wir tun müssen, um Symfony, PHP und Nginx ordnungsgemäß einzurichten.

Kommentare wurden hinzugefügt, um zu erklären, was in diesen Konfigurationsschritten passieren wird.

Lassen Sie Packer nach dem Hinzufügen und Speichern des oben genannten Code die schwere Arbeit erneut erledigen.

Verschieben Sie eine Ebene im Dateisystem auf die Stelle, an der wir die Jessie64.json -Datei haben, und geben Sie den zuvor eingegebenen Befehl ein.

<code>cd PHP-Packer-Demo
</code>

Sie können jetzt mit anderen Geschäften umgehen oder eine weitere Tasse Kaffee trinken (oder auf dem Laufband herumlaufen). Es wird eine Weile dauern, um ein neues Symfony -Demo -Bild zu erstellen.

Wenn Sie fertig sind, sollten Sie einen solchen Bildschirm sehen.

Hashicorp's Packer - Is It Something for PHP Developers?

Jetzt, da das Bild erstellt und bereit ist, können wir das OpenStack -Bild als neuer Server auf Rackspace erneut starten.

Geben Sie für Ihr VirtualBox VM erneut die beiden oben genannten Befehle unter "VirtualBox VM erstellen" ein.

Für den Rackspace -Server erhalten Sie eine neue IP. Geben Sie

ein
<code>packer build jessie64.json</code>

Sie sollten die Symfony Demo -Anwendung ausgeführt sehen.

Auf Ihrem lokalen VM können Sie Folgendes eingeben:

<code> "builders": [
    {
      "type": "openstack",
      "username": "ENTER_RACKSPACE_USERNAME_HERE",
      "password": "ENTER_RACKSPACE_PASSWORD_HERE",
      "region": "IAD",
      "identity_endpoint": "https://identity.api.rackspacecloud.com/v2.0",
      "ssh_username": "root",
      "image_name": "Test Packer Image",
      "source_image": "ENTER_YOUR_IMAGE_ID_HERE",
      "flavor": "2"
    },
    {
      "type": "virtualbox-iso",
      "boot_command": [
        "<esc><wait>",
</wait></esc>        "install <wait>",
</wait>        "preseed/url=http://{{ .HTTPIP }}:{{ .HTTPPort }}/vanilla-debian-8-jessie-preseed.cfg <wait>",
</wait>        "debian-installer=en_US <wait>",
</wait>        "auto <wait>",
</wait>        "locale=en_US <wait>",
</wait>        "kbd-chooser/method=us <wait>",
</wait>        "netcfg/get_hostname={{ .Name }} <wait>",
</wait>        "netcfg/get_domain=vagrantup.com <wait>",
</wait>        "fb=false <wait>",
</wait>        "debconf/frontend=noninteractive <wait>",
</wait>        "console-setup/ask_detect=false <wait>",
</wait>        "console-keymaps-at/keymap=us <wait>",
</wait>        "keyboard-configuration/xkb-keymap=us <wait>",
</wait>        "<enter><wait>"
</wait></enter>      ],
      "disk_size": "10140",
      "guest_additions_mode": "disable",
      "guest_os_type": "Debian_64",
      "hard_drive_interface": "sata",
      "headless": true,
      "http_directory": "http",
      "iso_checksum": "dd25bcdde3c6ea5703cc0f313cde621b13d42ff7d252e2538a11663c93bf8654",
      "iso_checksum_type": "sha256",
      "iso_url": "http://cdimage.debian.org/cdimage/release/8.3.0/amd64/iso-cd/debian-8.3.0-amd64-netinst.iso",
      "shutdown_command": "sudo /sbin/halt -p",
      "ssh_password": "vagrant",
      "ssh_username": "vagrant",
      "ssh_port": "22",
      "ssh_wait_timeout": "10000s",
      "vm_name": "debian-jessie",
      "vboxmanage": [
        ["modifyvm", "{{.Name}}", "--memory", "1024"],
        ["modifyvm", "{{.Name}}", "--cpus", "1"]
      ]
    }
  ],
</code>

Sie sehen den gleichen Inhalt.

Es ist cool, oder?

Schlussfolgerung:

Wir schauten auf die Vergangenheit zurück und kehrten dann in die Gegenwart zurück. Hoffentlich haben wir Sie dazu gebracht, die Gründe für die Computervirtualisierung, die Erstellung von Software wie Vagrant und Packer und die Verbindung zwischen beiden zu verstehen.

Wenn Sie zwei Server erfolgreich erstellen, können Sie sich auch vorstellen, die Vorteile, die Packer Ihnen als DevOps -Mitglied und Entwickler bieten kann. Diese Vorteile umfassen, aber nicht beschränkt auf:

  • Produktionskonsistenz - Die Entwicklungsumgebung ist fast genau das gleiche wie die Produktionsumgebung.
  • Zeit sparen-Die Software und Konfiguration sind im Bild "vorgefertigt", und Sie müssen sie nicht mehr manuell hinzufügen.
  • Umwelttests - Kompletierte Spiegel können als "vollständig" betrachtet und getestet werden, um menschliches Fehler zu vermeiden.
  • Umgebungsversioning - Wenn Sie die Umgebung ändern, können Sie Git verwenden, um die verschiedenen Packer -Builds zu verstellen.
  • unterstützt "unveränderliche Architektur" - anstatt eine vorhandene VM (die die Quelle des Fehlers sein kann) die VM -Instanz einfach "zerstören" und eine neue zu erstellen.

Ich hoffe, Sie haben diesen Artikel und die Übungen zum Erstellen von Bildern mit Packer genossen. Bitte sagen Sie uns Ihre Gedanken zu Packer in den Kommentaren unten.

FAQs über Hashicorps Packer für PHP -Entwickler

Was ist Hashicorps Packer und wie kommt es PHP -Entwicklern zugute?

Hashicorps Packer ist ein Open -Source -Tool, das die Erstellung jeglicher Art von Maschinenbild automatisiert. Es unterstützt das moderne Konfigurationsmanagement, indem Sie Infrastrukturcode schreiben und in einem Versionskontrollsystem speichern. Packer kann ein bahnbrechendes Tool für PHP-Entwickler sein. Sie können dieselbe Entwicklungsumgebung schaffen, wodurch das Problem des "Laufens auf meiner Maschine" verringert wird. Es ermöglicht Ihnen außerdem, fertige Bilder zu erstellen, die in Minuten, nicht in Stunden oder Tagen in Produktion eingesetzt werden können.

Wie vergleicht Packer mit anderen ähnlichen Tools?

Packer fällt auf seine Vielseitigkeit und Kompatibilität auf. Es unterstützt eine Vielzahl von Plattformen, darunter AWS, Digitalocean, Docker, Google Cloud und mehr. Es ist auch gut in andere Hashicorp -Tools wie Terraform und Vagrant integriert, um einen nahtlosen Workflow für die Managementinfrastruktur zu bieten.

Wie installiere ich Packer?

Packer ist einfach zu installieren. Es wird als binäres Paket für alle unterstützten Plattformen und Architekturen verteilt. Sie müssen nur das Paket herunterladen, das zu Ihrem System von der Packer -Website passt, es entpackt und es in Ihren Weg verschieben.

Wie erstelle ich Maschinenbilder mit Packer?

Um Maschinenbilder mit Packer zu erstellen, müssen Sie Vorlagendateien im JSON -Format schreiben. Diese Datei definiert den zu installierenden Maschinen- und Softwaretyp. Sobald die Vorlage fertig ist, können Sie den Befehl "Packer Build" verwenden, um das Bild zu erstellen.

Kann ich Packer mit meinen vorhandenen Konfigurationsmanagement -Tools verwenden?

Ja, Packer arbeitet gut mit vorhandenen Konfigurationsmanagement -Tools wie Koch, Puppet, Ansible usw. zusammen. Sie können diese Tools verwenden, um die von Packer erstellte Software auf Maschinenbildern zu konfigurieren.

Wie handelt es sich bei Packer um Fehler während der Bilderstellung?

Packer hat einen leistungsstarken Fehlerbehandlungsmechanismus. Wenn während der Bilderstellung ein Fehler auftritt, markiert Packer das Bild als fehlgeschlagen und reinigt alle erstellten Ressourcen. Dies stellt sicher, dass Sie nicht mit halbfeindlichen oder inkonsistenten Spiegelung enden.

Kann ich Packer in meiner CI/CD -Pipeline (Continuous Deployment) verwenden?

absolut. Packer eignet sich perfekt für CI/CD -Pipelines. Sie können es während des Erstellungsprozesses verwenden, um Maschinenbilder zu erstellen und diese Bilder dann in Ihrer Produktionsumgebung bereitzustellen.

Wie kann ich Probleme in Packer debuggen?

Packer bietet detaillierte Protokolle, mit denen Sie Probleme debuggen. Sie können den Debug -Modus auch ermöglichen, während der Bilderstellung eine detailliertere Ausgabe zu erhalten.

Kann ich Code zu meinem Packer -Projekt beitragen?

Ja, Packer ist ein Open -Source -Projekt, das Community -Beiträge begrüßt. Sie können Code beitragen, indem Sie Fehler melden, Funktionen vorschlagen, die Dokumentation verbessern oder Pull -Anfragen senden.

Wo finde ich mehr Ressourcen, um Packer zu lernen?

Die offizielle Website und das Github -Repository von Packer sind großartige Orte, um mit dem Lernen zu beginnen. Sie liefern umfassende Dokumentation, Tutorials und Beispiele. Sie finden auch viele Blog -Beiträge, Videos und Online -Kurse über Packer im Internet.

Das obige ist der detaillierte Inhalt vonPacker von Hashicorp - Ist es etwas für PHP -Entwickler?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn