ホームページ >ウェブフロントエンド >jsチュートリアル >Terraform を使用した Meteor.js バンドルの自動デプロイメント
やあ、相棒!テクノロジーは難しいかもしれませんが、これはできます。これは、コーヒーを飲みながらの技術的なチャットと考えてください...または、私の個人的なお気に入りであるチャイ (お茶)。
AWS での Meteor.js プロジェクトのデプロイを自動化する方法を見てみましょう。これを終える頃には、あなたもクラウド導入の忍者になった気分になるでしょう。準備ができて?行きましょう!
袖をまくる前に、持ち物を揃えましょう。チェックリストは次のとおりです:
AWS 認証情報: AWS CLI が設定され、ロールする準備ができていることを確認してください。
Terraform: Terraform をまだダウンロードしてインストールしていない場合は、インストールします。
SSH キー ペア: SSH キー ペアを生成します。後でインスタンスに接続できるように、秘密キーを手元に保管してください。
ドメイン名: ドメインをお持ちですか?素晴らしい! A レコードを更新できることを確認してください。
Meteor バンドル: 次のコマンドを使用して Meteor.js プロジェクト バンドルを準備します:
meteor build --server-only --directory ~/path/to/Dockerfile
すべてを理解しましたか?素晴らしい!構築を始めましょう。
これが私たちがこれから行こうとしている旅です:
とても簡単ですよね?段階的に見ていきましょう。
Terraform プロジェクトを整理することから始めます。次のようなディレクトリ構造を作成します:
project-directory/ ├── main.tf ├── variables.tf ├── outputs.tf ├── run.sh
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" }
ここで魔法が起こります。このファイルは、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 } }
実行後に Terraform が出力する内容を定義します:
output "public_ip" { value = aws_instance.tf-created-instance.public_ip description = "The public IP address of the instance" }
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.js アプリをパッケージ化するためのサンプル Dockerfile を次に示します:
meteor build --server-only --directory ~/path/to/Dockerfile
project-directory/ ├── main.tf ├── variables.tf ├── outputs.tf ├── run.sh
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" }
DNS アップデート:
EC2 インスタンスのパブリック IP を指すようにドメインの A レコードを更新します。
確認:
DNS の伝達が完了したら、ブラウザでドメインにアクセスして展開を確認します。
そして、これで完成です! Terraform と Docker を使用した、AWS 上での完全に自動化された Meteor.js アプリのデプロイメント。すべての課題は学習の機会にすぎないことを忘れないでください。岩にぶつかったら、チャイを一口飲んで、技術のプロのようにトラブルシューティングを行ってください。導入の成功を祝い、どこにでも投稿してください!
以上がTerraform を使用した Meteor.js バンドルの自動デプロイメントの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。