2022년 전에 정리한 문서들

ECS CI/CD Workshop 정리(1)

반가운사람2 2022. 8. 23. 19:45
반응형

먼저 Cloud9에 IDE 환경을 사용자는 생성하도록 합니다. 따로 정리하지 않겠습니다.

1. 텍스트 유틸리티 설치: jq 도구와 gettext 도구를 설치합니다.

sudo yum -y install jq gettext

2. env-vars.sh 스크립트를 설정합니다. 필요한 모든 환경 변수의 추적을 기록하는 함수를 정의합니다.

cat <<EoF > ~/env-vars.sh
#!/bin/bash

save_var() {
  if [ \$? -eq 0 ]; then
    export \$1=\$2
    echo export \$1=\$2 >> ~/env-vars.sh
  fi
}
EoF
chmod +x ~/env-vars.sh
source ~/env-vars.sh
echo "[[ -s ~/env-vars.sh ]] && source ~/env-vars.sh" >> ~/.bash_profile

3. 현재 리전을 기본값으로 CLI에 설정

save_var AWS_REGION $(curl -s 169.254.169.254/latest/dynamic/instance-identity/document | jq -r .region)
aws configure set default.region ${AWS_REGION}
aws configure get default.region

4. 계정 ID를 환경 변수 설정합니다.

save_var AWS_ACCOUNT_ID $(aws sts get-caller-identity --query Account --output text)

5. 워크샵에서 사용하는 리소스를 다운로드합니다.

cd ~/environment
git clone https://github.com/aws-samples/cicd-for-ecs-workshop-code.git

6. ECS에 Cloudwatch Container Insights를 활성화합니다.

aws ecs put-account-setting-default --name containerInsights --value enabled

#활성화 확인
aws ecs list-account-settings --effective-settings --name containerInsights

7. 환경 부분까지 이어서 작성하도록 하겠습니다. 로드 벨런서 및 ECS에 대한 서비스 연결 역할이 있는지 확인합니다.

aws iam get-role --role-name "AWSServiceRoleForElasticLoadBalancing" || aws iam create-service-linked-role --aws-service-name "elasticloadbalancing.amazonaws.com"
aws iam get-role --role-name "AWSServiceRoleForECS" || aws iam create-service-linked-role --aws-service-name "ecs.amazonaws.com"

8. Workshop에서는  Cloudformation에서 사용하는 stack을 제공합니다. 이제 템플릿파일을 이용해서 인프라 환경을 배포합니다.

cd ~/environment/cicd-for-ecs-workshop-code/setup
aws cloudformation deploy \
  --stack-name prod-cluster \
  --template-file Cluster-ECS-EC2-2AZ-ALB-1NAT.yaml \
  --parameter-overrides "EnvironmentName=prod" \
  --capabilities CAPABILITY_IAM &
aws cloudformation deploy \
  --stack-name staging-cluster \
  --template-file Cluster-ECS-EC2-2AZ-ALB-1NAT.yaml \
  --parameter-overrides "EnvironmentName=staging" \
  --capabilities CAPABILITY_IAM &
클러스터 생성에는 몇 분이 소요되지만 그 동안에는 사용 가능한 클러스터에 의존하지 않으므로 실습 0으로 진행할 수 있습니다. 그래서 Lab 0번을 바로 하겠습니다.
반응형