> 웹 프론트엔드 > 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 인스턴스에서 배포 자동화

안녕 친구! 기술은 까다로울 수 있지만 해냈습니다. 이것을 커피를 마시며 기술적인 대화를 나누거나...또는 제가 개인적으로 가장 좋아하는 차(차)라고 생각하세요.

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. 설정 스크립트: 서버를 설정하려면 세 가지 스크립트가 필요합니다.
  • 서버-설정-part1.sh
  • mongodb4-setup.sh
  • 서버-설정-part2.sh

모든 것을 얻었나요? 엄청난! 구축을 시작하겠습니다.

게임 계획

우리가 앞으로 나아갈 여정은 다음과 같습니다.

  1. Terraform을 사용하여 AWS에서 EC2 인스턴스를 가동하세요.
  2. 일부 스크립트를 실행하여 서버를 구성하고, MongoDB를 설치하고, Docker를 사용하여 Meteor.js 앱을 배포하세요.
  3. 도메인이 서버의 IP를 가리키도록 DNS 설정을 조정하세요.
  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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:dev.to
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿