Rumah >hujung hadapan web >tutorial js >Penggunaan Automatik himpunan Meteor.js menggunakan Terraform

Penggunaan Automatik himpunan Meteor.js menggunakan Terraform

Susan Sarandon
Susan Sarandonasal
2024-12-20 08:52:13779semak imbas

Automated Deployments of Meteor.js bundle using Terraform

Mengautomasikan Deployment pada Instance EC2 dengan Terraform dan Docker

Hei kawan! Teknologi boleh menjadi rumit, tetapi anda mempunyai ini. Anggap ini sebagai sembang teknologi sambil minum kopi...atau kegemaran peribadi saya, chaay (teh).

Mari kita mendalami cara mengautomasikan penggunaan projek Meteor.js anda pada AWS. Pada penghujung ini, anda akan berasa seperti ninja penyebaran awan. sedia? Jom!

Perkara yang Anda Perlukan

Sebelum menyingsing lengan baju, mari kumpulkan barang-barang kami. Ini senarai semaknya:

  1. Kelayakan AWS: Pastikan anda mempunyai AWS CLI dikonfigurasikan dan sedia untuk dilancarkan.

  2. Terraform: Muat turun dan pasang Terraform jika anda belum melakukannya.

  3. Pasangan Kunci SSH: Hasilkan pasangan kunci SSH. Simpan kunci peribadi berguna untuk menyambung ke tika anda kemudian.

  4. Nama Domain: Ada domain? Hebat! Pastikan anda boleh mengemas kini rekod Anya.

  5. Himpunan Meteor: Sediakan berkas projek Meteor.js anda menggunakan arahan ini:

   meteor build --server-only --directory ~/path/to/Dockerfile
  1. Skrip Persediaan: Anda memerlukan tiga skrip untuk menyediakan pelayan:
  • penyediaan-pelayan-part1.sh
  • mongodb4-setup.sh
  • penyediaan-pelayan-part2.sh

Dapatkan semuanya? Hebat! Mari mula membina.

Rancangan Permainan

Inilah perjalanan yang akan kami lalui:

  1. Gunakan Terraform untuk memutar kejadian EC2 pada AWS.
  2. Jalankan beberapa skrip untuk mengkonfigurasi pelayan, memasang MongoDB dan menggunakan apl Meteor.js anda menggunakan Docker.
  3. Ubah tetapan DNS anda untuk menghalakan domain anda ke IP pelayan.
  4. Tamatkan segala-galanya dengan persediaan SSL melalui Certbot.

Cukup mudah, bukan? Mari kita pecahkan langkah demi langkah.


Menyediakan Terraform

Mulakan dengan mengatur projek Terraform anda. Buat struktur direktori seperti ini:

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

Langkah 1: Konfigurasi Pembolehubah

Dalam pembolehubah.tf, tentukan semua pembolehubah yang kami perlukan. Ini menjadikan persediaan fleksibel:

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"
}

Langkah 2: Hati — main.tf

Di sinilah keajaiban berlaku. Fail ini menyediakan segala-galanya: contoh EC2, kumpulan keselamatan dan langkah peruntukan.

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
  }
}

Langkah 3: Output

Tentukan apa yang Terraform harus keluarkan selepas dijalankan:

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

Langkah 4: Skrip Automasi

Dalam run.sh, tulis skrip untuk mengautomasikan perintah Terraform dan mengendalikan penyebaran DNS:

#!/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

Dockerfile untuk Meteor

Berikut ialah contoh Fail Docker untuk membungkus apl Meteor.js anda:

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

Langkah-langkah untuk Digunakan

  1. Mulakan Terraform: Jalankan arahan ini untuk menyediakan Terraform:
project-directory/
├── main.tf
├── variables.tf
├── outputs.tf
├── run.sh
  1. Gunakan dengan Automasi: Jalankan skrip untuk digunakan:
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. Kemas Kini DNS:
    Kemas kini rekod A domain anda untuk menunjuk ke IP awam tika EC2.

  2. Sahkan:
    Setelah penyebaran DNS selesai, sahkan penggunaan anda dengan melawati domain dalam penyemak imbas.


Dan begitulah! Penyerahan apl Meteor.js automatik sepenuhnya pada AWS menggunakan Terraform dan Docker. Ingat, setiap cabaran hanyalah satu lagi peluang untuk belajar. Jika anda terkena batu, teguk chaay dan selesaikan masalah seperti pakar teknologi anda. Raikan kejayaan penggunaan anda dan siarkan di mana-mana sahaja!?

Atas ialah kandungan terperinci Penggunaan Automatik himpunan Meteor.js menggunakan Terraform. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn