AWS EC2에 간단한 애플리케이션 배포

4836 단어 awsbeginners
이 글은 GitHub Marketplace에서 타사 작업을 활용하는 GitHub Actions를 통해 간단한 Nodejs 앱을 AWS EC2로 자동화하는 방법을 안내합니다.



GitHub ActionsAWS EC2에 대한 자세한 내용은 이 문서를 확인하십시오.

Nodejs 앱 만들기



nodejs 앱을 설정하는 기본 방법은 각각 NodeJSNPM 웹 사이트를 확인하고 다운로드하여 설치하는 것입니다. 또한 nodejs 앱을 만드는 과정을 안내하는 이 문서repo를 확인하세요.

Terraform으로 EC2 가동



만들기ec2.tf
terraform {
  cloud {
    organization = "arterycloud"

    workspaces {
      name = "Nautty-dev"
    }
  }
}

provider "aws" {
  region  = var.region
  profile = "terraform-user"
}

resource "aws_instance" "web" {
  ami           = "ami-xxxxxxxxxxxx"
  instance_type = "t2.micro"
  count         = 1

  tags = {
    Name = "Nautty-dev"
  }
}

variable "region" {
  default     = "us-east-1"
  description = "AWS Region"
  type        = string
}


SSH 키 생성



이 경우 SSH를 통해 ec2 instance에 연결하고 키를 생성합니다. 새 SSH 키를 생성하려면 이 항목step을 확인하십시오.
  • authorized key에 공개 키를 추가합니다. 이렇게 하는 주된 이유는 (xx.pub)를 authorized key에 추가하여 개인 키를 사용하는 Github Action이 서버에 액세스할 수 있도록 하기 위함입니다.

  • 이 명령을 실행하여 공개 키를 authorized key에 추가합니다.

    cat xxx.pub  >> authorized keys
    


  • 개인 키를 저장소의 비밀에 추가합니다.



  • EC2 인스턴스에 배포하도록 워크플로 설정



    워크플로 생성에 대한 자세한 내용은 여기article를 참조하십시오.

    name: EC2 CI/CD
    
    on:
      push:
        branches: [ "ft/week7_cicd" ]
    
    defaults:
      run:
        working-directory: ./week7/
    
    jobs:
      build:
    
        runs-on: ubuntu-latest
    
        strategy:
          matrix:
            node-version: [16.x]
    
        steps:
        - uses: actions/checkout@v3
        - name: Use Node.js ${{ matrix.node-version }}
          uses: actions/setup-node@v3
          with:
            node-version: ${{ matrix.node-version }}
            cache: 'npm'
            cache-dependency-path: './week7/package-lock.json'
        - run: npm i
    
        - name: Deploy to EC2 instance
          uses: easingthemes/ssh-deploy@main
          env:
            SSH_PRIVATE_KEY: ${{ secrets.SSH_PRIVATE_KEY }}
            REMOTE_HOST: ${{ secrets.REMOTE_HOST }}
            REMOTE_USER: ${{ secrets.REMOTE_USER }}
            TARGET: ${{ secrets.TARGET }}
            SOURCE: ""
    
        - name: Executing remote ssh commands using ssh key
          uses: appleboy/ssh-action@master
          with:
            host: ${{ secrets.REMOTE_HOST }}
            username: ${{ secrets.REMOTE_USER }}
            key: ${{ secrets.SSH_PRIVATE_KEY }}
            script: |
                # sudo npm install pm2 -g && pm2 update
                cd /home/ubuntu/nautilus-devops/week7
                # sudo pm2 start index.js --name=week7 
                sudo pm2 restart week7
    


    위의 코드는 몇 가지 작업을 수행합니다.
  • 이름이 EC2 CI/CD인 워크플로를 생성합니다.
  • 코드를 확인합니다.
  • 빌드에 대한 종속성 및 요구 사항을 설정하고 npm 빌드 시스템에 대한 캐시를 구성합니다.
  • easingthemes/ssh-deploy action에서 사용할 수 있는 타사 작업인 GitHub marketplace을 사용하여 EC2 인스턴스에 배포하면 ssh를 사용하여 서버에 코드를 배포하고 러너에서 rsync 수행하는 데 도움이 됩니다.
  • appleboy/ssh-action@master을 사용하여 원격 ssh 명령을 실행합니다.

  • 요약



    이 문서는 GitHub에서 AWS EC2로 코드를 자동으로 배포하는 방법을 이해하는 데 도움이 됩니다.

    좋은 웹페이지 즐겨찾기