Packer und Terraform: Ein leistungsstarkes Tool für effiziente DevOps -Bereitstellung
In diesem Artikel wird erläutert, wie Open Source DevOps Tools Packer und Terraform verwendet werden, um die Infrastruktur zu erstellen und zu verwalten, um eine effiziente Anwendungsbereitstellung zu erzielen.
Kernpunkte:
Alibaba Cloud veröffentlichte ein wundervolles Weißbuch über DevOps, in dem lautet: "Es geht nicht nur darum, agile Prinzipien zur Verwaltung von Infrastruktur, John Willis und Damon Edwards zu verwalten, um CAMs (Kultur, Automatisierung, Messung und Freigabe) zur Definition von Deflops zu verwenden. DevOps wurde entwickelt, um die Zusammenarbeit zwischen Entwicklungs- und Betriebsteams zu ermöglichen. Die DevOps -Praxis ist jedoch nicht auf große Unternehmen beschränkt, und Entwickler können sie leicht in ihre tägliche Arbeit einbeziehen. In diesem Tutorial wird gezeigt, wie der gesamte Bereitstellungsprozess nur mit einer kleinen Anzahl von Konfigurationsdateien orchestriert und Anwendungen in den Instanzen von Alibaba Cloud Elastic Computing Services (ECS) ausgeführt wird.
Packer Einführung:
Packer ist ein von Hashicorp entwickeltes Open-Source-DevOps-Tool. Die Software ist plattformübergreifend kompatibel und kann parallel mehrere Bilder erstellen. Die Installation mit Homebrew ist sehr einfach: brew install packer
. Packer erstellt "fertige" Bilder, die die zusätzliche Software enthalten, die vom Betriebssystem und den Anwendungen erforderlich ist, genau wie das Erstellen einer benutzerdefinierten Verteilung. Beispielsweise können Sie problemlos ein Debian -Bild erstellen, das eine benutzerdefinierte PHP -Anwendung enthält.
Einführung in Terraform:
Die Bereitstellung besteht aus zwei Hauptaufgaben: Verpackung der Anwendung in die richtige Umgebung (Erstellen eines Bildes) und das Erstellen der Infrastruktur (Server), die die Anwendung ausführt. Terraform stammt auch von Hashicorp, basierend auf denselben Prinzipien wie Packer, mit dem Sie die Infrastruktur in Alibaba -Cloud mit nur einem einzigen TF -Formatprofil erstellen können, das die Versionskontrolle erleichtert und ein klares Verständnis der Funktionsweise der zugrunde liegenden Anwendung hat. Für die Installation von Terraform und die Konfiguration des offiziellen Anbieters von Alibaba Cloud finden Sie in anderen verwandten Artikeln.
Ziel:
In diesem Tutorial werden einfache PHP -Anwendungen in DevOps erstellt und bereitgestellt, wobei alles von der Ausführung von Software bis zur Unterstützung der Infrastruktur abdeckt.
Schritt:
Um den Prozess zu vereinfachen, erstellen wir eine Docker-Compose-basierte Anwendung, um METAR-Wetterdaten vom Flughafen zu erhalten (mithilfe von ICAO-Flughafencode und Daten des US-amerikanischen Wetterdienstes). Anschließend erstellen wir das Bild mit Ubuntu und Packer und bereitstellen die Infrastruktur mit diesem Bild und Terraform.
PHP -Anwendung:
Für die Bequemlichkeit bieten wir eine unabgewohnte Anwendung an. Sie können den Quellcode anzeigen (einschließlich Index.php, 2 JavaScript -Dateien für die Dekodierung von METAR -Daten, eine kleine Menge CSS und ein PNG -Bild). Die App basiert auf Docker-Compose, die wir später als Abhängigkeit mit Packer installieren werden.
Bilder mit Packer erstellen:
Erstellen Sie einen Ordner namens ~/metar-App auf Ihrem Computer, gehen Sie dann zu diesem Ordner und erstellen Sie eine Datei namens Meta-build.json wie folgt:
{ "variables": { "access_key": "{{env `ALICLOUD_ACCESS_KEY`}}", "region": "{{env `ALICLOUD_REGION`}}", "secret_key": "{{env `ALICLOUD_SECRET_KEY`}}" }, "builders": [ { "type": "alicloud-ecs", "access_key": "{{user `access_key`}}", "secret_key": "{{user `secret_key`}}", "region":"{{user `region`}}", "image_name": "metar_app", "source_image": "ubuntu_16_0402_64_20G_alibase_20180409.vhd", "ssh_username": "root", "instance_type": "ecs.t5-lc1m1.small", "internet_charge_type": "PayByTraffic", "io_optimized": "true" } ], "provisioners": [ { "type": "shell", "script": "base-setup" } ] }
Erstellen Sie im selben Verzeichnis eine Datei mit dem Namen Base-Setup mit dem folgenden Inhalt:
#!/usr/bin/env bash apt-get update && apt-get install -y apt-transport-https ca-certificates curl git-core software-properties-common curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add - add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" apt-get update && apt-get install -y docker-ce docker-compose curl -L https://github.com/docker/compose/releases/download/1.21.2/docker-compose-`uname -s`-`uname -m` -o /usr/bin/docker-compose mkdir /var/docker git clone https://github.com/roura356a/metar.git /var/docker/metar
Wenn Sie diese beiden Dateien vorbereiten, führen Sie packer build metar-build.json
aus und warten Sie, bis sie abgeschlossen sind. Beachten Sie, dass Sie drei Umgebungsvariablen in Ihrem Computer einstellen müssen: ALICLOUD_REGION
, ALICLOUD_ACCESS_KEY
und ALICLOUD_SECRET_KEY
. Dieser Schritt dauert einige Zeit, da er eine ECS -Instanz erstellt, die gesamte Software darauf installiert, dann die Instanz gestoppt, einen Schnappschuss von ITS erstellt und schließlich ein Bild des gesamten Systems erstellt. Nachdem das Bild erstellt wurde, gibt Packer ==> Builds finished
aus.
Infrastruktur mit Terraform einsetzen:
Erstellen Sie jetzt im selben Ordner eine Datei namens Main.tf mit dem folgenden Inhalt:
provider "alicloud" {} data "alicloud_images" "search" { name_regex = "metar_app" } data "alicloud_instance_types" "search" { instance_type_family = "ecs.xn4" cpu_core_count = 1 memory_size = 1 } data "alicloud_security_groups" "search" {} data "alicloud_vswitches" "search" {} resource "alicloud_instance" "app" { instance_name = "metar_app" image_id = "${data.alicloud_images.search.images.0.image_id}" instance_type = "${data.alicloud_instance_types.search.instance_types.0.id}" vswitch_id = "${data.alicloud_vswitches.search.vswitches.0.id}" security_groups = [ "${data.alicloud_security_groups.search.groups.0.id}" ] internet_max_bandwidth_out = 100 password = "Test1234!" user_data = "${file("user-data")}" } output "ip" { value = "${alicloud_instance.app.public_ip}" }
Erstellen Sie im selben Verzeichnis eine Datei namens User-Data mit dem folgenden Inhalt:
#!/usr/bin/env bash cd /var/docker/metar && docker-compose up -d
Jetzt sollte Ihre Dateistruktur so aussehen:
<code>metar_app/ ├── metar-build.json ├── base-setup ├── main.tf └── user-data</code>
Führen Sie terraform init
aus, und führen Sie dann terraform plan
aus, um zu überprüfen, ob alles normal ist, und führen Sie schließlich terraform apply
aus, um den Bereitstellungsprozess zu starten.
Nachdem die Infrastruktur erstellt wurde, gibt Terraform die IP -Adresse der neu erstellten ECS -Instanz aus, zum Beispiel: 111.111.111.111.111.
testen:
Wenn alles gut geht, können Sie den neuesten Wetterbericht für den Flughafen San Sebastian (in Nordspanien mit wunderschönen Eingangsrouten) ansehen.
Zusammenfassung:
Sie haben fast keine Anstrengungen, um die vollständige Deplop -Bereitstellung Ihrer Anwendung zu vervollständigen. Dies vereinfacht den Wartungs -Release -Zyklus, die Infrastrukturaktualisierungen und verbessert die Verfügbarkeit von Systemen, ohne die Befehle für Host- und Linux direkt verarbeiten zu müssen.
Häufig gestellte Fragen zu Packer und Terraform:
Das obige ist der detaillierte Inhalt vonSo bereitstellen Sie Apps mühelos mit Packer und Terraform bereit. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!