자동화된 워크플로 적용

완료됨

이 단원에서는 자동화된 워크플로 도구에 관해 알아보고 Terraform 및 Azure와 통합하는 방법을 알아봅니다.

GitHub Actions 정보

인프라 관리자는 워크플로를 빌드하고 배포하여 프로젝트와 동일한 버전 제어를 사용해야 합니다.

GitHub Actions를 사용하면 GitHub 리포지토리에 연결된 CI/CD(연속 통합 및 지속적인 업데이트) 프로세스를 실행할 수 있습니다.

GitHub Actions를 사용하여 GitHub에서 바로 코드를 빌드, 테스트, 배포할 수 있습니다. 코드 검토를 할당하고, 분기를 관리하고, 문제를 심사할 수도 있습니다.

GitHub Actions 구성 요소

다음 다이어그램에 나온 것처럼 다양한 GitHub Actions 구성 요소를 설명해 보겠습니다.

Diagram showing the relationship of GitHub Actions workflows to their component jobs, steps, and actions.

  • 워크플로: 특정 이벤트나 활동에 의해 트리거되는 워크플로는 소프트웨어 개발 수명 주기 작업을 자동화하는 작업과 단계의 모음입니다.
  • 작업: 실행기에서 실행되는 단계 세트입니다.
  • 단계: 하나 이상의 명령 또는 동작을 실행할 수 있는 작업입니다. 각 단계는 끌어오기 요청 같은 특정 이벤트가 발생한 후 실행되는 개별 동작으로 구성됩니다.
  • 동작: 단계로 결합될 수 있는 독립 실행형 명령입니다. 여러 단계를 결합하여 작업을 만들 수 있습니다. 개별 동작은 소프트웨어 개발 작업을 자동화하는 패키지된 스크립트입니다. 워크플로를 만들려면 GitHub 리포지토리의 .github/workflows 디렉터리에 있는 .YAML 파일에 동작을 추가합니다.

Terraform GitHub 동작

hashicorp/setup-terraform 동작은 다음을 수행하여 GitHub Actions 워크플로에서 Terraform CLI를 설정합니다.

  • 특정 버전의 Terraform CLI를 다운로드하여 PATH에 추가합니다.
  • Terraform Cloud 또는 Enterprise 호스트 이름 및 API 토큰을 사용하여 Terraform CLI 구성 파일을 구성합니다.
  • 래퍼 스크립트를 설치하여 나중에 terraform 이진 파일 호출을 래핑하고 해당 STDOUT, STDERR 및 exit 코드를 각각 stdout, stderrexitcode라는 출력으로 공개합니다.

Azure에 GitHub Actions 인증

Terraform은 Azure를 사용하여 인증할 수 있는 몇 가지 옵션을 지원합니다.

  • Terraform을 대화형으로 사용하는 경우 Microsoft 계정을 통해 인증하는 것이 좋습니다.
  • 코드에서 또는 자동화로 Terraform을 사용하는 경우 Azure 서비스 주체를 통해 인증하는 것이 좋습니다.

서비스 주체는 Azure 리소스에 액세스하기 위해 애플리케이션, 호스팅된 서비스, 자동화된 도구와 함께 사용하도록 만든 ID입니다.

다음 단계

다음 단원에서는 샘플 프로젝트를 설정하고 GitHub Actions를 Terraform과 함께 사용하여 Azure에 배포합니다.

새로운 Azure Pipelines에 대한 핵심 개념

Azure Pipeline을 구성하는 구성 요소에 대해 알아보겠습니다.

Diagram of the key concepts and components in Azure Pipeline.

  • 트리거는 파이프라인을 실행하도록 지시합니다.
  • 파이프라인은 하나 이상의 스테이지로 구성됩니다. 파이프라인은 하나 이상의 환경에 배포할 수 있습니다.
  • 단계는 파이프라인에서 작업을 구성하는 방법이며 각 스테이지에는 하나 이상의 작업이 있을 수 있습니다.
  • 각 작업은 한 에이전트에서 실행됩니다. 작업은 에이전트 없이도 가능합니다.
  • 각 에이전트는 하나 이상의 단계를 포함하는 작업을 실행합니다.
  • 단계는 작업 또는 스크립트가 될 수 있으며 파이프라인의 가장 작은 빌딩 블록입니다.
  • 태스크는 REST API를 호출하거나 빌드 아티팩트를 게시하는 등의 작업을 수행하는 미리 패키지된 스크립트입니다.
  • 아티팩트는 실행에서 게시한 파일 또는 패키지의 컬렉션입니다.

여러 파이프라인 구성 요소 및 사용 방법에 대한 자세한 내용은 요약 섹션에서 제공하는 링크를 참조하세요.

Azure Pipelines에 대한 Terraform 작업

plan, apply,destroy 같은 Azure와 상호 작용하는 명령을 실행하는 경우, 작업은 Azure 서비스 연결을 사용하여 대상 구독에 대한 작업 권한을 부여합니다. Azure에 연결하는 데 권장되는 방법은 서비스 연결을 Azure 서비스 주체에 바인딩하는 것입니다. Azure 서비스 주체는 Azure 리소스에 액세스하기 위해 애플리케이션, 호스팅된 서비스, 자동화된 도구와 함께 사용하도록 만든 ID입니다.

다음 YAML 코드 조각은 Azure Pipeline Terraform 공급자 azurerm을 사용합니다. 서비스 연결은 다음과 같이 environmentServiceNameAzureRM 입력을 통해 지정됩니다.

- task: TerraformTaskV1@0
  inputs:
    provider: 'azurerm'
    command: 'apply'
    workingDirectory: $(Build.Repository.LocalPath)/terraform
    backendAzureRmContainerName: 'tfstate'
    backendAzureRmKey: 'tf/terraform.tfstate'
    environmentServiceNameAzureRM: $(serviceConnection)

Azure Pipeline Terraform 공급자로 azurerm을 사용하는 경우 Terraform 백 엔드 상태와 함께 사용할 서비스 연결 및 스토리지 컨테이너도 제공해야 합니다.

매개 변수 전달

Terraform 명령에 매개 변수를 전달하는 방법에는 여러 가지가 있습니다. 변수를 통해 파이프라인의 다양한 부분으로 데이터의 키 비트를 편리하게 가져올 수 있습니다.

다음 단계를 수행하여 빌드 파이프라인에 대한 변수를 설정할 수 있습니다.

  1. 파이프라인 페이지로 이동하여 적절한 파이프라인을 선택하고 편집을 선택합니다.
  2. 이 파이프라인에 대한 변수를 찾습니다.
  3. 변수를 추가하거나 업데이트합니다.
  4. 변수를 비밀로 표시하려면 이 값을 비밀로 유지를 선택합니다.
  5. 파이프라인 저장

파이프라인 변수에 대한 Terraform 출력

TerraformCLI 작업은 Terraform output 명령 실행을 지원합니다. CLI가 실행되는 경우 terraform output 명령에서 내보낸 각 출력 변수에서 파이프라인 변수가 생성됩니다.

다음 단계

다음 단원에서는 샘플 프로젝트를 설정하고 Azure Pipelines를 Terraform과 함께 사용하여 Azure에 배포합니다.