ホームページ >ウェブフロントエンド >jsチュートリアル >Terraform を使用した Meteor.js バンドルの自動デプロイメント

Terraform を使用した Meteor.js バンドルの自動デプロイメント

Susan Sarandon
Susan Sarandonオリジナル
2024-12-20 08:52:13805ブラウズ

Automated Deployments of Meteor.js bundle using Terraform

Terraform と Docker を使用した EC2 インスタンスへのデプロイの自動化

やあ、相棒!テクノロジーは難しいかもしれませんが、これはできます。これは、コーヒーを飲みながらの技術的なチャットと考えてください...または、私の個人的なお気に入りであるチャイ (お茶)。

AWS での Meteor.js プロジェクトのデプロイを自動化する方法を見てみましょう。これを終える頃には、あなたもクラウド導入の忍者になった気分になるでしょう。準備ができて?行きましょう!

必要なもの

袖をまくる前に、持ち物を揃えましょう。チェックリストは次のとおりです:

  1. AWS 認証情報: AWS CLI が設定され、ロールする準備ができていることを確認してください。

  2. Terraform: Terraform をまだダウンロードしてインストールしていない場合は、インストールします。

  3. SSH キー ペア: SSH キー ペアを生成します。後でインスタンスに接続できるように、秘密キーを手元に保管してください。

  4. ドメイン名: ドメインをお持ちですか?素晴らしい! A レコードを更新できることを確認してください。

  5. Meteor バンドル: 次のコマンドを使用して Meteor.js プロジェクト バンドルを準備します:

   meteor build --server-only --directory ~/path/to/Dockerfile
  1. セットアップ スクリプト: サーバーをセットアップするには 3 つのスクリプトが必要です:
  • サーバーセットアップ-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 アップデート:
    EC2 インスタンスのパブリック IP を指すようにドメインの A レコードを更新します。

  2. 確認:
    DNS の伝達が完了したら、ブラウザでドメインにアクセスして展開を確認します。


そして、これで完成です! Terraform と Docker を使用した、AWS 上での完全に自動化された Meteor.js アプリのデプロイメント。すべての課題は学習の機会にすぎないことを忘れないでください。岩にぶつかったら、チャイを一口飲んで、技術のプロのようにトラブルシューティングを行ってください。導入の成功を祝い、どこにでも投稿してください!

以上がTerraform を使用した Meteor.js バンドルの自動デプロイメントの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。