首頁 > web前端 > js教程 > 使用 Terraform 自動部署 Meteor.js 包

使用 Terraform 自動部署 Meteor.js 包

Susan Sarandon
發布: 2024-12-20 08:52:13
原創
774 人瀏覽過

Automated Deployments of Meteor.js bundle using Terraform

使用 Terraform 和 Docker 在 EC2 執行個體上自動部署

嘿夥計!技術可能很棘手,但你已經掌握了。將其視為一邊喝咖啡一邊技術聊天……或者我個人最喜歡的 Chaay(茶)。

讓我們深入了解如何在 AWS 上自動部署 Meteor.js 專案。到此結束時,您會感覺自己像一個雲端部署忍者。準備好?走吧!

你需要什麼

在捲起袖子之前,讓我們先收拾好東西。這是清單:

  1. AWS 憑證:確保您已設定 AWS CLI 並準備好運作。

  2. Terraform:如果尚未安裝,請下載並安裝 Terraform。

  3. SSH 金鑰對:產生 SSH 金鑰對。請妥善保管私鑰,以便稍後連接到您的執行個體。

  4. 網域名稱:有網域嗎?偉大的!確保您可以更新其 A 記錄。

  5. Meteor Bundle:使用以下指令準備 Meteor.js 專案包:

   meteor build --server-only --directory ~/path/to/Dockerfile
登入後複製
登入後複製
  1. 設定腳本:您需要三個腳本來設定伺服器:
  • 伺服器設定-part1.sh
  • mongodb4-setup.sh
  • 伺服器設定-part2.sh

東西都齊全了嗎?驚人的!讓我們開始建造吧。

遊戲計劃

這是我們即將繼續的旅程:

  1. 使用 Terraform 在 AWS 上啟動 EC2 執行個體。
  2. 執行一些腳本來設定伺服器、安裝 MongoDB 並使用 Docker 部署 Meteor.js 應用程式。
  3. 調整您的 DNS 設定,將您的網域指向伺服器的 IP。
  4. 透過 Certbot 透過 SSL 設定完成一切。

很簡單,對吧?讓我們一步步分解。


設定 Terraform

首先組織您的 Terraform 專案。建立一個像這樣的目錄結構:

project-directory/
├── main.tf
├── variables.tf
├── outputs.tf
├── run.sh
登入後複製
登入後複製

第1步:變數配置

在variables.tf中,定義我們需要的所有變數。這些使設定變得靈活:

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"
}
登入後複製
登入後複製

第 2 步:心臟 — main.tf

這就是奇蹟發生的地方。此文件設定了所有內容:EC2 實例、安全性群組和設定步驟。

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
  }
}
登入後複製

第 3 步:輸出

定義 Terraform 運作後應輸出的內容:

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

第 4 步:自動化腳本

在 run.sh 中,寫一個腳本來自動化 Terraform 指令並處理 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
登入後複製

Meteor 的 Dockerfile

這是一個用於打包 Meteor.js 應用程式的範例 Dockerfile:

   meteor build --server-only --directory ~/path/to/Dockerfile
登入後複製
登入後複製

部署步驟

  1. 初始化 Terraform: 執行以下命令來設定 Terraform:
project-directory/
├── main.tf
├── variables.tf
├── outputs.tf
├── run.sh
登入後複製
登入後複製
  1. 自動化部署: 運行腳本進行部署:
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 更新:
    更新您網域的 A 記錄以指向 EC2 執行個體的公用 IP。

  2. 驗證:
    DNS 傳播完成後,透過在瀏覽器中存取網域來驗證您的部署。


就是這樣!使用 Terraform 和 Docker 在 AWS 上完全自動化地部署 Meteor.js 應用程式。請記住,每一個挑戰都是另一個學習的機會。如果您遇到了困難,請喝一口茶,然後像技術專家一樣排除故障。慶祝您的部署成功並將其發佈到各處! ?

以上是使用 Terraform 自動部署 Meteor.js 包的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:dev.to
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板