Heim >Web-Frontend >js-Tutorial >Automatisierte Bereitstellungen des Meteor.js-Bundles mithilfe von Terraform

Automatisierte Bereitstellungen des Meteor.js-Bundles mithilfe von Terraform

Susan Sarandon
Susan SarandonOriginal
2024-12-20 08:52:13805Durchsuche

Automated Deployments of Meteor.js bundle using Terraform

Automatisieren der Bereitstellung auf EC2-Instanzen mit Terraform und Docker

Hey Kumpel! Technik kann knifflig sein, aber Sie haben es geschafft. Betrachten Sie dies als ein technisches Gespräch bei einem Kaffee … oder meinem persönlichen Favoriten, Chaay (Tee).

Sehen wir uns an, wie Sie die Bereitstellung Ihres Meteor.js-Projekts auf AWS automatisieren können. Am Ende werden Sie sich wie ein Cloud-Bereitstellungs-Ninja fühlen. Bereit? Auf geht's!

Was Sie brauchen

Bevor wir die Ärmel hochkrempeln, sammeln wir unsere Sachen. Hier ist die Checkliste:

  1. AWS-Anmeldeinformationen: Stellen Sie sicher, dass Sie die AWS CLI konfiguriert und einsatzbereit haben.

  2. Terraform: Laden Sie Terraform herunter und installieren Sie es, falls Sie es noch nicht getan haben.

  3. SSH-Schlüsselpaar: Generieren Sie ein SSH-Schlüsselpaar. Halten Sie den privaten Schlüssel bereit, um später eine Verbindung zu Ihrer Instanz herzustellen.

  4. Domainname: Haben Sie eine Domain? Großartig! Stellen Sie sicher, dass Sie die A-Datensätze aktualisieren können.

  5. Meteor-Bundle: Bereiten Sie Ihr Meteor.js-Projektpaket mit diesem Befehl vor:

   meteor build --server-only --directory ~/path/to/Dockerfile
  1. Setup-Skripte: Sie benötigen drei Skripte, um den Server einzurichten:
  • server-setup-part1.sh
  • mongodb4-setup.sh
  • server-setup-part2.sh

Alles bekommen? Eindrucksvoll! Beginnen wir mit dem Bauen.

Der Spielplan

Hier ist die Reise, die wir gleich antreten werden:

  1. Verwenden Sie Terraform, um eine EC2-Instanz auf AWS einzurichten.
  2. Führen Sie einige Skripte aus, um den Server zu konfigurieren, MongoDB zu installieren und Ihre Meteor.js-App mit Docker bereitzustellen.
  3. Passen Sie Ihre DNS-Einstellungen an, um Ihre Domain auf die IP des Servers zu verweisen.
  4. Schließen Sie alles mit der SSL-Einrichtung über Certbot ab.

Einfach genug, oder? Lassen Sie es uns Schritt für Schritt aufschlüsseln.


Terraform einrichten

Beginnen Sie mit der Organisation Ihres Terraform-Projekts. Erstellen Sie eine Verzeichnisstruktur wie diese:

project-directory/
├── main.tf
├── variables.tf
├── outputs.tf
├── run.sh

Schritt 1: Variablenkonfiguration

Definieren Sie in „variables.tf“ alle Variablen, die wir benötigen. Diese machen die Einrichtung flexibel:

variable "server_name" {
  description = "Server created by Terraform"
  type        = string
  default     = "AutomatedDeployment"
}

variable "key_pair_name" {
  description = "Key pair name"
  type        = string
  default     = "tf-key-pair"
}

variable "domain_name" {
  description = "Your domain name"
  type        = string
  default     = "xyz.domain.com"
}

Schritt 2: Das Herz – main.tf

Hier passiert die Magie. Diese Datei richtet alles ein: EC2-Instanz, Sicherheitsgruppen und Bereitstellungsschritte.

terraform {
  required_providers {
    aws = {
      source  = "hashicorp/aws"
      version = "~> 4.16"
    }
  }
  required_version = ">= 1.2.0"
}

provider "aws" {
  region = "ca-central-1"
}

resource "aws_security_group" "tf-security-group" {
  name        = var.server_name
  description = "Security group for ${var.server_name}"

  ingress {
    from_port   = 22
    to_port     = 22
    protocol    = "tcp"
    cidr_blocks = ["0.0.0.0/0"]
  }
  ingress {
    from_port   = 80
    to_port     = 80
    protocol    = "tcp"
    cidr_blocks = ["0.0.0.0/0"]
  }
  ingress {
    from_port   = 443
    to_port     = 443
    protocol    = "tcp"
    cidr_blocks = ["0.0.0.0/0"]
  }
  egress {
    from_port   = 0
    to_port     = 0
    protocol    = "-1"
    cidr_blocks = ["0.0.0.0/0"]
  }
}

resource "aws_instance" "tf-created-instance" {
  ami           = "ami-0083d3f8b2a6c7a81"
  instance_type = "t2.micro"
  key_name      = var.key_pair_name
  tags = {
    Name = var.server_name
  }
}

Schritt 3: Ausgänge

Definieren Sie, was Terraform nach der Ausführung ausgeben soll:

output "public_ip" {
  value       = aws_instance.tf-created-instance.public_ip
  description = "The public IP address of the instance"
}

Schritt 4: Automatisierungsskript

Schreiben Sie in run.sh ein Skript, um Terraform-Befehle zu automatisieren und die DNS-Weitergabe zu verwalten:

#!/bin/bash
set -e
DOMAIN="your.domain.com"

terraform apply -auto-approve

echo "Waiting for DNS propagation..."
OLD_IP=$(dig +short $DOMAIN)
while true; do
  sleep 10
  NEW_IP=$(dig +short $DOMAIN)
  [ "$NEW_IP" != "$OLD_IP" ] && break
  echo "DNS records not updated yet. Retrying..."
done

terraform apply -auto-approve

Docker-Datei für Meteor

Hier ist eine Beispiel-Dockerdatei zum Packen Ihrer Meteor.js-App:

   meteor build --server-only --directory ~/path/to/Dockerfile

Schritte zur Bereitstellung

  1. Terraform initialisieren: Führen Sie diesen Befehl aus, um Terraform einzurichten:
project-directory/
├── main.tf
├── variables.tf
├── outputs.tf
├── run.sh
  1. Bereitstellung mit Automatisierung: Führen Sie das bereitzustellende Skript aus:
variable "server_name" {
  description = "Server created by Terraform"
  type        = string
  default     = "AutomatedDeployment"
}

variable "key_pair_name" {
  description = "Key pair name"
  type        = string
  default     = "tf-key-pair"
}

variable "domain_name" {
  description = "Your domain name"
  type        = string
  default     = "xyz.domain.com"
}
  1. DNS-Update:
    Aktualisieren Sie den A-Eintrag Ihrer Domain so, dass er auf die öffentliche IP der EC2-Instanz verweist.

  2. Überprüfen:
    Sobald die DNS-Weitergabe abgeschlossen ist, überprüfen Sie Ihre Bereitstellung, indem Sie die Domäne in einem Browser aufrufen.


Und da haben Sie es! Eine vollständig automatisierte Meteor.js-App-Bereitstellung auf AWS mit Terraform und Docker. Denken Sie daran, dass jede Herausforderung nur eine weitere Gelegenheit zum Lernen ist. Wenn Sie gegen einen Stein stoßen, trinken Sie einen Schluck Chaay und beheben Sie den Fehler wie der Technikprofi, der Sie sind. Feiern Sie Ihren Bereitstellungserfolg und veröffentlichen Sie ihn überall!?

Das obige ist der detaillierte Inhalt vonAutomatisierte Bereitstellungen des Meteor.js-Bundles mithilfe von Terraform. 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