0Pricing
CI/CD with GitHub Actions & DevOps Pipelines · 강의

인프라 업데이트 자동화

검토 및 승인 단계를 포함해 인프라 변경 사항을 안전하게 계획하고 적용하며 제거하는 워크플로를 구현합니다.

인프라 업데이트 자동화은(는) CoddyKit의 무료 CI/CD with GitHub Actions & DevOps Pipelines 강의입니다. 이것은 4개 중 3번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 CI/CD with GitHub Actions & DevOps Pipelines 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. CI/CD with GitHub Actions & DevOps Pipelines 강의에는 총 4개의 강의가 포함되어 있습니다.

IaC 업데이트를 자동화하는 이유

인프라를 수동으로 관리하면 느리고 오류가 발생하기 쉽습니다. 코드형 인프라(IaC)는 인프라를 코드로 정의하여 이러한 문제를 해결합니다.

GitHub Actions와 같은 도구로 IaC 업데이트를 자동화하면 일관성과 속도가 향상되고 사람의 실수가 줄어듭니다. 또한 인프라가 항상 정의된 상태와 일치하도록 보장합니다.

IaC 워크플로 수명 주기

IaC 자동화는 계획, 적용, 그리고 경우에 따라 삭제라는 명확한 수명 주기를 따릅니다. 각 단계를 CI/CD 처리 흐름에 통합할 수 있습니다.

  • 계획: 변경 사항을 적용하지 않고 검토합니다.
  • 적용: 계획한 변경 사항을 인프라에 반영합니다.
  • 삭제: 인프라 리소스를 제거합니다(각별히 주의하여 사용하세요!).

GitHub Actions를 사용하면 이러한 단계를 안전하게 관리할 수 있습니다.

Terraform으로 변경 사항 계획하기

변경하기 전에 어떤 일이 일어날지 파악하는 것이 중요합니다. Terraform의 plan 명령은 인프라 수정 내용을 미리 확인하는 데 도움이 됩니다.

이 명령은 코드에서 정의한 원하는 상태와 현재 인프라 상태를 비교하고, 어떤 리소스가 추가, 변경 또는 삭제될지 보여 줍니다.

간단한 Terraform 프로젝트에서 다음 명령을 실행해 보세요.

echo "Initializing Terraform..."
terraform init

echo "Running terraform plan..."
terraform plan

`terraform plan` 워크플로

코드가 기본 브랜치에 푸시될 때마다 terraform plan을 자동으로 실행하는 GitHub Actions 워크플로를 만들어 보겠습니다. 이렇게 하면 제안된 변경 사항에 대한 피드백을 즉시 받을 수 있습니다.

그런 다음 계획의 출력 결과를 풀 리퀘스트 또는 워크플로 로그에서 직접 검토할 수 있습니다.

name: 'Terraform Plan'

on:
  pull_request:
    branches:
      - main

jobs:
  terraform:
    name: 'Terraform Plan'
    runs-on: ubuntu-latest

    steps:
    - name: Checkout repository
      uses: actions/checkout@v4

    - name: Setup Terraform
      uses: hashicorp/setup-terraform@v3

    - name: Terraform Init
      id: init
      run: terraform init

    - name: Terraform Plan
      id: plan
      run: terraform plan -no-color

환경을 사용한 수동 승인

인프라 변경 사항을 자동으로 적용하면 위험할 수 있습니다. GitHub Environments를 사용하면 워크플로에 수동 승인 단계를 추가할 수 있습니다.

환경(예: "스테이징", "프로덕션")을 정의하고, 배포 작업을 진행하기 전에 특정 검토자를 지정하거나 대기 시간을 두도록 규칙을 설정할 수 있습니다.

이렇게 하면 민감한 작업을 수행하기 전에 중요한 사람의 검토 절차를 둘 수 있습니다.

변경 사항 적용 워크플로

변경 사항을 안전하게 적용하기 위해 보호된 GitHub Environment를 대상으로 하는 워크플로를 구성하겠습니다. 작업은 일시 중지되고 지정된 팀 구성원의 승인을 기다립니다.

승인된 후에만 terraform apply 명령이 실행되어 인프라를 업데이트합니다.

name: 'Terraform Apply'

on:
  workflow_dispatch:
    inputs:
      environment:
        description: 'Environment to deploy to'
        required: true
        default: 'staging'

jobs:
  terraform:
    name: 'Terraform Apply'
    runs-on: ubuntu-latest
    environment: ${{ github.event.inputs.environment }} # Target environment for approval

    steps:
    - name: Checkout repository
      uses: actions/checkout@v4

    - name: Setup Terraform
      uses: hashicorp/setup-terraform@v3

    - name: Terraform Init
      id: init
      run: terraform init

    - name: Terraform Apply
      id: apply
      run: terraform apply -auto-approve

안전한 인프라 삭제

terraform destroy 명령은 Terraform 구성에 정의된 모든 리소스를 영구적으로 제거합니다. 이는 매우 강력하며 잠재적으로 위험한 작업입니다.

임시 테스트 환경을 해체하는 경우처럼 구체적이고 통제된 상황에서만 사용해야 합니다. 진행하기 전에 항상 다시 확인하세요!

강력한 수동 승인 절차와 여러 번의 확인 없이 `destroy`를 자동화하지 마세요.

echo "Preparing to destroy infrastructure..."
terraform init
terraform plan -destroy
read -p "Are you absolutely sure you want to destroy ALL resources? (yes/no): " CONFIRM
if [ "$CONFIRM" = "yes" ]; then
  echo "Destroying infrastructure..."
  terraform destroy -auto-approve
else
  echo "Destroy operation cancelled."
fi

통제된 인프라 삭제

`destroy`를 실행할 때도 GitHub Environments를 추가 보호 계층으로 활용할 수 있습니다. 이렇게 하면 적절한 권한 없이 누군가 실수로 또는 악의적으로 프로덕션 리소스를 삭제하는 일을 방지할 수 있습니다.

워크플로에는 승인이 필요해야 하며, 가능하면 특정 역할을 가진 사용자만 수동으로 실행할 수 있어야 합니다.

name: 'Terraform Destroy'

on:
  workflow_dispatch:
    inputs:
      environment:
        description: 'Environment to destroy'
        required: true
        default: 'staging'

jobs:
  terraform:
    name: 'Terraform Destroy'
    runs-on: ubuntu-latest
    environment: ${{ github.event.inputs.environment }} # Target environment for approval

    steps:
    - name: Checkout repository
      uses: actions/checkout@v4

    - name: Setup Terraform
      uses: hashicorp/setup-terraform@v3

    - name: Terraform Init
      id: init
      run: terraform init

    - name: Terraform Destroy
      id: destroy
      run: terraform destroy -auto-approve

IaC 자동화 모범 사례

강력하고 안전한 IaC 처리 흐름을 유지하려면 다음 지침을 따르세요.

  • 코드 검토: IaC 변경 사항에 항상 코드 검토를 요구합니다.
  • 최소 권한: 워크플로 토큰과 서비스 계정에 꼭 필요한 최소 권한만 부여합니다.
  • 상태 잠금: Terraform과 같은 IaC 도구가 상태 잠금을 사용하여 동시에 수정되는 일을 방지하도록 합니다.
  • 작고 점진적인 변경: 규모가 크고 하나로 뭉친 인프라 업데이트를 피합니다.
  • 환경 분리: 서로 다른 승인 규칙을 적용하는 별도의 환경(dev, staging, prod)을 사용합니다.

IaC 워크플로 확인

계획, 적용, 리소스 삭제를 통한 IaC 업데이트 자동화 방법을 배웠습니다. 이제 이러한 프로세스를 안전하게 보호하는 방법을 제대로 이해했는지 확인해 보겠습니다.

복습: 자동화된 IaC 업데이트

이번 단원에서는 GitHub Actions를 사용하여 코드형 인프라 워크플로를 자동화하는 방법을 배웠습니다. 다음 내용을 다뤘습니다.

  • 변경 사항을 안전하게 미리 확인하기 위해 terraform plan 실행하기
  • 인프라를 적용하거나 삭제하기 전에 수동 승인 절차로 GitHub Environments 사용하기
  • 통제된 terraform apply 및 terraform destroy 작업을 위한 워크플로 구현하기
  • 안전하고 안정적인 IaC 자동화를 위한 주요 모범 사례

IaC를 자동화하면 클라우드 리소스를 효율적이고 자신 있게 관리할 수 있습니다!

자주 묻는 질문

“인프라 업데이트 자동화” 강의는 무료인가요?

네 — “인프라 업데이트 자동화” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 CI/CD with GitHub Actions & DevOps Pipelines 강의 전체를 잠금 해제할 수 있습니다. CI/CD with GitHub Actions & DevOps Pipelines 강의에는 총 4개의 강의가 포함되어 있습니다.

“인프라 업데이트 자동화”에서 뭘 배우나요?

검토 및 승인 단계를 포함해 인프라 변경 사항을 안전하게 계획하고 적용하며 제거하는 워크플로를 구현합니다. 브라우저에서 직접 실행하는 실습 코드로 CI/CD with GitHub Actions & DevOps Pipelines을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

CI/CD with GitHub Actions & DevOps Pipelines을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 CI/CD with GitHub Actions & DevOps Pipelines은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 3번째 강의입니다.

“인프라 업데이트 자동화” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 CI/CD with GitHub Actions & DevOps Pipelines 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 CI/CD with GitHub Actions & DevOps Pipelines 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. Terraform 및 GitHub Actions를 활용한 IaC
  2. 클라우드 리소스 관리
  3. 인프라 업데이트 자동화
  4. Terraform 상태 및 원격 백엔드 관리
← CI/CD with GitHub Actions & DevOps Pipelines(으)로 돌아가기