[AWS] Code Series를 이용한 CI/CD 구축 방법

Jiyeon's TechNote·2022년 4월 8일
0
post-custom-banner

DevOps의 기본인 CI/CD를 AWS의 서비스를 이용하여 구축하는 방법에 대해서 작성했습니다.
해당 포스팅에서는 빌드를 진행하지 않았기 때문에 CodeBuild는 사용하지 않았습니다.

시나리오
CodeCommit에 테라폼 소스를 업로드 하고 VSCode와 연동하여 push진행 하면 인스턴스에 자동으로 배포

  1. 사전 준비
    EC2인스턴스를 생성하고 Terraform, codedeploy-agent 를 인스턴스에 설치

Terraform 설치

wget https://releases.hashicorp.com/terraform/1.0.7/terraform_1.0.7_linux_amd64.zip
unzip terraform_1.0.7_linux_amd64.zip
sudo mv terraform /usr/bin/

CloudDeploy-Agent 설치

sudo apt install ruby -y
wget https://aws-codedeploy-ap-northeast-2.s3.amazonaws.com/latest/install
chmod 755 install
sudo ./install auto

sudo service codedeploy-agent start
  1. 사전에 준비된 인스턴스에 IAM Role 생성하여 연결
    필요 정책 : AmazonEC2RoleforAWSCodeDeploy, AmazonVPCFullAccess

  2. AWS CodeCommit 리포지토리 생성


CodeCommit을 로컬 VScode와 연동 하는 방법

1-1) IAM 사용자 생성 후 CodeCommit 접근을 위한 권한 추가

필요 정책 : AWSCodeCommitPowerUser

1-2) 보안 자격 증명에서 https 자격증명 생성

자격 증명 생성 하면 id랑 패스워드 나옴 잘 저장해두기

1-3) CodeCommit에서 URL 복제

1-4) VScode에서 git 연동하기에 해당 URL 입력하고 ID,PW 입력하면 연동 완료


  1. 리포지토리에 파일 추가

vpc 생성하는 코드인 vpc.tf

provider "aws" {
  region = "ap-northeast-1"
}

variable "vpc_cidr" {
  description = "CIDR for the VPC"
  default     = "10.166.0.0/16"
}

variable "tag" {
  default     = "Terraform"
}

resource "aws_vpc" "main" {
  cidr_block           = var.vpc_cidr
  enable_dns_support   = true
  enable_dns_hostnames = true
  tags = {
    Name = "${var.tag}-VPC"
  }
}

CodeDeploy 실행시키는 appspec.yml 코드

version: 0.0
os: linux
files:
  - source: /
    destination: /home/ubuntu/terraform/

hooks:
  AfterInstall:
    - location: /scripts/run_terraform.sh
      timeout: 300
      runas: root

→ files 부분은 리포지토리 소스를 서버의 어느 디렉토리에 복사할지 경로부분

→ hooks 부분은 리포지토리에서 실행시킬 스크립트 작성해주는 부분

/home/ubuntu/terraform/ 경로에 복사된 파일들을 실행시키는 terraform 명령어를 스크립트(run_terraform.sh)에 작성해서 추가함

terraform -chdir=/home/ubuntu/terraform/ init
terraform -chdir=/home/ubuntu/terraform/ apply -auto-approve
  1. CodeDeploy 애플리케이션 생성

먼저 배포를 진행할 역할을 추가 생성함

필요 정책 : AWSCodeDeployRole

위에서 생성한 역할 입력하여 애플리케이션 생성

  1. CodePipeline 생성

위에 생성한 CodeCommit과 CodeDploy를 이어주는 파이프라인을 생성하여 자동으로 배포가 이루어질 수 있도록 함

  1. 로컬에서 소스 push 해주면 자동으로 CodePipeline통해서 Deploy되고 VPC 생성됨

AWS를 이용한 간단한 CI/CD 테스트 였습니다.

profile
바쁘다 바빠 현대사회 엔지니어🙋‍♀️
post-custom-banner

0개의 댓글