Heim > Technologie-Peripheriegeräte > IT Industrie > So bereitstellen Sie Apps mühelos mit Packer und Terraform bereit

So bereitstellen Sie Apps mühelos mit Packer und Terraform bereit

尊渡假赌尊渡假赌尊渡假赌
Freigeben: 2025-02-16 13:12:44
Original
1010 Leute haben es durchsucht

How to Deploy Apps Effortlessly with Packer and Terraform

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:

  • Eine Kombination aus Packer und Terraform: Packer wird verwendet, um Maschinenbilder mit der erforderlichen Software und Konfiguration zu erstellen, während Terraform diese Bilder verwendet, um die tatsächliche Infrastruktur (wie Server oder Container) zu erstellen.
  • DevOps Praxis: Die Konstruktion von PHP -Anwendungen als Beispiel zeigt, dass der Artikel den vollständigen Prozess der Verwendung von Packer zum Erstellen von Bildern und zur Bereitstellung von Infrastrukturen mit Terraform, effektiv vereinfachte, das Management des Release -Zyklus, die Infrastrukturaktualisierungen und die Verbesserung der Systemverfügbarkeit effektiv vereinfacht.
  • Herausforderungen und Vorteile: Packer und Terraform, obwohl leistungsstark und flexibel, erfordern auch eine bestimmte Menge an technischem Wissen, die effektiv verwendet werden kann, und erfordern eine sorgfältige Verwaltung von Konfigurationsdateien und Statusdateien, die in großen Bereitstellungen kompliziert werden können. Sie haben jedoch immer noch erhebliche Vorteile bei der Sparzeit, zur Reduzierung von Fehlern und zur Verbesserung der Bereitstellungsstabilität.

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"
    }
  ]
}
Nach dem Login kopieren

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
Nach dem Login kopieren

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}"
}
Nach dem Login kopieren

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
Nach dem Login kopieren

Jetzt sollte Ihre Dateistruktur so aussehen:

<code>metar_app/
├── metar-build.json
├── base-setup
├── main.tf
└── user-data</code>
Nach dem Login kopieren

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:

  • Was ist der Hauptunterschied zwischen Packer und Terraform? Packer wird verwendet, um die gleichen Maschinenbilder über mehrere Plattformen hinweg zu erstellen, während Terraform zum sicher und effizienten Veränderung und Versionsregelungsinfrastruktur verwendet wird.
  • Wie funktioniert Packer in Verbindung mit Terraform? Packer erstellt Maschinenbilder, und Terraform verwendet diese Bilder, um Infrastruktur zu erstellen.
  • Wann wird es in Packer konfiguriert und wann wird es in Terraform konfiguriert? Konfiguration in Packer wird normalerweise zur Installation und Konfiguration von Software in Maschinenbildern verwendet (bevor die Infrastruktur erstellt wird), während die Konfiguration in Terraform normalerweise zur Ausführung von Aufgaben nach der Erstellung der Infrastruktur verwendet wird.
  • Können Sie Packer ohne Terraform verwenden? Ja.
  • Wie Bereitstellen einer Anwendung mit Packer und Terraform? Erstellen Sie zuerst ein Maschinenbild mit Packer, und dann verwendet Terraform dieses Bild, um eine Infrastruktur zu erstellen und die Anwendung schließlich auf dem neu erstellten Server oder Container bereitzustellen.
  • Welche Vorteile haben die Verwendung von Packer und Terraform für die Anwendungsbereitstellung? Automatisierung, Zeit sparen, Fehler reduzieren, Zuverlässigkeit und Stabilität verbessern, mehrere Plattformen und Dienstleister unterstützen.
  • Was sind die Einschränkungen und Herausforderungen bei der Verwendung von Packer und Terraform? Einige technische Kenntnisse sind erforderlich, Konfigurationsdateien und Statusdateien müssen mit Vorsicht verwaltet werden, und nicht alle Plattformen oder Anbieter unterstützen alle Funktionen und Optionen.
  • Wie kann man mit Packer und Terraform beginnen? installieren Sie das Tool und erstellen Sie die Konfigurationsdatei.
  • Kann Packer und Terraform mit anderen DevOps -Tools verwendet werden? Ja.
  • Was sind einige Best Practices für die Verwendung von Packer und Terraform? Konfigurationsdateien einfach und modular halten, Versionskontrolle verwenden, konfiguriert testen und überprüfen, konsistente Namenskonventionen, Dokumentkonfigurationen und Infrastruktureinstellungen verwenden.

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!

Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage