Terraform 및 AWS CodePipeline(CloudGuruChallenge 시리즈)을 사용하여 AWS에 인프라를 배포(1/3부분)
이 글은 CodePipeline을 사용하여AWS에 CI/CD 파이프라인을 만들고 CodePipeline은Terraform을 사용하여AWS에 인프라를 배치하는 것에 관한 것이다.
컨텐트
1. 프로젝트 개요
이 프로젝트는 시리즈#CloudGuruChallenge – Event-Driven Python on AWS의 첫 번째 부분입니다.여기에 우리는 s3 메모리통과 lambda 함수를 배치했다.lambda 함수는 AWS Step 함수 작업 흐름의 일부가 될 것입니다. 이 작업 흐름은 이 시리즈의 다음 부분에서 개발될 것입니다. S3 메모리통은 lambda 배치를 저장하는 데 사용됩니다.
프로세스 자동화를 위해 Terraform은 IaC(인프라는 코드로), AWS CodePipeline은 CI/CD에 사용됩니다.
2. 지형 구축
AWS에서 Terraform 사용을 시작하는 데 필요한 단계는 다음과 같습니다.
공급자tf
terraform {
required_providers {
aws = {
source = "hashicorp/aws"
version = "~> 3.0"
}
}
}
# Configure the AWS Provider
provider "aws" {
region = "us-east-1"
}
백엔드.tfterraform {
backend "s3" {
bucket = "YOUR-BUCKET-NAME"
key = "terraform.tfstate"
region = "YOUR-REGION-NAME"
dynamodb_table = "terraform-state-lock"
}
}
예시 lambda 함수를 만듭니다.py를 와 로 압축합니다.이름이 lambda function payload인 tf 파일입니다.지퍼그런 다음 S3 및 lambda의 IaC를 다음과 같이 쓸 수 있습니다.S3.tf
resource "aws_s3_bucket" "lambda_s3_buckets" {
bucket = "YOUR-BUCKET-NAME"
acl = "private"
force_destroy = true
}
resource "aws_s3_bucket_object" "object" {
bucket = "YOUR-BUCKET-NAME"
key = "YOUR-PATH-TO-STORE-LAMBDA-DEPLOYMENT"
source = "lambda_function_payload.zip"
depends_on = [
aws_s3_bucket.lambda_s3_buckets,
]
}
람다.tfresource "aws_lambda_function" "state_machine_lambdas" {
function_name = "YOUR-FUNCTION-NAME"
role = "ROLE-ARN"
handler = "lambda_function.lambda_handler"
s3_bucket = "BUCKET-NAME_WITH-LAMBDA-DEPLOYMENT"
s3_key = "PATH-TO-LAMBDA-DEPLOYMENT"
runtime = "python3.8"
depends_on = [
aws_s3_bucket_object.object,
]
}
모든 음식을 저장하다.tf 파일은 terraform이라는 폴더에 있습니다.3. AWS 코드 파이핑 설정
AWS 코드 파이핑은 CI/CD(지속적인 통합/지속적인 제공)에 사용됩니다.AWS 무료 층은 매달 1개의 무료 파이프를 허용한다.우리의 파이프라인은 다섯 가지 단계, 즉 출처, 구축(지형계획), 구축(수동 비준 절차), 지형 응용과 배치를 포함한다.
원시 단계
여기서 Github는 파이프의 원본 저장소로 사용됩니다.이 단계의 구성은 다음과 같습니다.
1단계: 소스 구성
건조단계(지형계획단계)
이 단계는 두 가지 구축, 하나의 수동 승인 절차와 하나의 배치 절차를 포함한다.첫 번째 건조는 지형 계획을 위한 것이다.AWS 코드 빌드는 빌드 프로젝트를 작성하는 데 사용됩니다.이 기능을 설정하려면 파이프 단계의 구축 단계에서 다음과 같은 새로운 조작 그룹을 추가하십시오
CodePipeline에 구축 작업 추가
이 항목은 AWS 코드 생성 항목이어야 하며, 항목 만들기를 누르면 만들 수 있으며, 이 항목은 아래와 같이 마법사를 열 수 있습니다.
지형 계획의 코드 구축 프로젝트
위의 주요 구성은 다음과 같습니다.
지형도.yml
version: 0.1
phases:
install:
commands:
- "apt install unzip -y"
- "wget
https://releases.hashicorp.com/terraform/0.14.10/terraform_0.14.10_linux_amd64.zip"
- "unzip terraform_0.14.10_linux_amd64.zip"
- "mv terraform /usr/local/bin/"
pre_build:
commands:
- terraform -chdir=Terraform init -input=false
build:
commands:
- terraform -chdir=Terraform $TF_COMMAND_P -input=false -no-color
post_build:
commands:
- echo terraform $TF_COMMAND_P completed on `date`
수동 승인 단계
다음과 같이 Terraform plan 작업 후에 수동 승인 구축 작업을 만듭니다.
구축 단계 수동 승인
승인 및 거부에 대한 알림을 받으려면 SNS 주제를 만들고 이메일 주소에 가입해야 합니다.
지형 응용 단계
Terraform plan for Terraform Apply build stage와 유사한 절차에 따라 다음buildspec 파일을 사용합니다.
지형 적용.yml
version: 0.1
phases:
install:
commands:
- "apt install unzip -y"
- "wget https://releases.hashicorp.com/terraform/0.14.10/terraform_0.14.10_linux_amd64.zip"
- "unzip terraform_0.14.10_linux_amd64.zip"
- "mv terraform /usr/local/bin/"
pre_build:
commands:
- terraform -chdir=Terraform init -input=false
build:
commands:
- terraform -chdir=Terraform $TF_COMMAND_A -input=false -auto-approve
post_build:
commands:
- echo terraform $TF_COMMAND_A completed on `date`
배치 단계
현재 마지막 단계는 배치입니다. 코드 구축은 s3 버킷을 통해 코드를 lambda에 배치하는 데 사용됩니다.repo에 lambda code라는 폴더를 만들고 lambda 함수를 저장합니다.나는 그것을 좋아한다.새 코드 구축 프로젝트를 만듭니다.코드 구축 프로젝트의 모든 절차는 동일합니다.프로젝트의buildspec 파일은 다음과 같습니다.
배치 상태 기계 코드.yml
version: 0.1
phases:
pre_build:
commands:
- mkdir -p ./lambda_code/zipped
- zip -r -j lambda_code/zipped/lambda-function-payload.zip lambda_code/*
build:
commands:
- aws s3 sync ./lambda_code/zipped s3://YOUR-BUCKET-NAME/YOUR-S3-KEY --delete
- aws lambda update-function-code --function-name YOUR-FUNCTION-NAME --s3-bucket YOUR-BUCKET-NAME --s3-key YOUR-S3-KEY-TO-FILE
post_build:
commands:
- echo state_machine_code was deployed to lambda from S3 bucket on `date`
4. 파이프의 최종 뷰
위의 단계를 완료하면 파이프는 다음 그림과 유사해야 합니다.
파이핑 최종 뷰
github로 보내면 트리거 파이프를 터치합니다. 모든 구축 작업의details 옵션을 통해 구축 과정을 볼 수 있습니다.
5. 결론
이 문서에서 AWS CodePipleine을 통해 terraform이 있는 AWS에 인프라를 배치하는 방법에 대해 설명합니다.이 시리즈의 다음 부분에서는 클라우드워치 이벤트를 통해 트리거되는 AWS Step Functions 워크플로우를 설정하는 방법을 보여 드리겠습니다.기대해주세요!
Reference
이 문제에 관하여(Terraform 및 AWS CodePipeline(CloudGuruChallenge 시리즈)을 사용하여 AWS에 인프라를 배포(1/3부분)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/thakurrishabh/deploying-infrastructure-on-aws-with-terraform-and-aws-codepipeline-series-1-3-cloudguruchallenge-5n텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)