Azure 개발자 CLI 템플릿 개요

Azure 개발자 CLI(azd) 템플릿은 규칙을 따르는 azd 코드 리포지토리입니다. 프로젝트 구성, 인프라를 코드로 결합하고 선택적 애플리케이션 원본을 결합하여 반복 가능한 Azure 환경 및 배포를 만들 수 있습니다.

템플릿은 다음을 비롯한 다양한 프로젝트 형식을 지원할 수 있습니다.

  • 하나 이상의 배포 가능한 서비스를 사용하는 전체 애플리케이션입니다.
  • 애플리케이션 코드가 없는 인프라 전용 솔루션입니다.
  • 다른 개발자가 초기화하고 확장할 수 있는 재사용 가능한 시작점입니다.
  • azd를 사용해 프로비저닝 및 배포를 준비하는 기존 프로젝트.

이 문서에서는 템플릿의 구조와 명령에서 해당 파일을 사용하는 방법을 azd 설명합니다.

템플릿을 사용하는 이유

템플릿은 Azure 프로젝트를 실행하는 데 필요한 결정을 캡처합니다. 프로젝트에 따라 다음을 정의할 수 있습니다.

  • Azure 리소스 및 해당 구성.
  • 배포 가능한 애플리케이션 서비스 및 패키징 지침입니다.
  • 애플리케이션 서비스와 Azure 리소스 간의 연결입니다.
  • 환경별 매개 변수 및 출력.
  • 로컬 개발, 지속적인 통합 및 지속적인 업데이트 구성.

구성은 프로젝트와 함께 저장되므로 팀은 소스 제어의 변경 내용을 검토하고 일관된 개발, 테스트 및 프로덕션 환경을 만들 수 있습니다.

템플릿 사용 방법 azd

템플릿의 파일은 워크플로의 여러 단계를 지원합니다.azd

  • azd init 는 프로젝트를 초기화하고 환경을 만듭니다 azd . GitHub Copilot 사용하여 초기 템플릿을 생성하거나 기존 템플릿을 복사할 수도 있습니다.
  • azd provision는 인프라 정의를 평가하고 Azure 리소스를 만들거나 업데이트합니다.
  • azd package 에 따라 azure.yaml배포 가능한 애플리케이션 서비스를 준비합니다.
  • azd deploy는 각 서비스를 Azure 호스트와 연결하고 애플리케이션 패키지를 배포합니다.
  • azd up 는 프로비전, 패키징 및 배포 단계를 결합된 워크플로로 실행합니다.

템플릿 파일은 이 프로세스 전체에서 일반 소스 파일로 유지됩니다. 프로젝트의 다른 부분과 함께 검토, 편집 및 버전 관리할 수 있습니다.

Azure 개발자 CLI 템플릿 구조 살펴보기

azd 템플릿은 추가 구성 및 인프라 자산이 있는 표준 코드 리포지토리입니다. 대부분의 템플릿은 다음 구조를 사용합니다.

  • azure.yaml file - 프로젝트를 정의하고 배포 가능한 원본 디렉터리를 Azure 리소스에 매핑합니다.
  • infra 폴더 - Azure 리소스를 만드는 Bicep 또는 Terraform 코드로서의 인프라 파일을 포함합니다.
  • src 폴더 - 일반적으로 배포 가능한 애플리케이션 소스 코드를 포함합니다. 인프라 전용 템플릿은 애플리케이션 원본을 생략할 수 있으며 애플리케이션 템플릿은 다른 원본 디렉터리 이름을 사용할 수 있습니다.
  • .azure 폴더 - 에 의해 azd만들어진 로컬 환경 및 값을 포함합니다. 이 폴더는 로컬 프로젝트 상태이며 일반적으로 재사용 가능한 템플릿의 일부로 공유되지 않습니다.

예를 들어 일반적인 azd 템플릿은 다음 폴더 구조와 일치할 수 있습니다.

contoso-project/
├── azure.yaml                 # azd project and service configuration
├── infra/
│   ├── main.bicep            # Infrastructure entry point
│   └── main.parameters.json  # Maps azd values to Bicep parameters
├── src/                      # Optional application source
│   ├── api/
│   └── web/
├── .github/workflows/        # Optional GitHub Actions pipelines
└── .azure/                   # Local environment state; don't distribute

azd 템플릿에는 다음 폴더 중 하나 이상이 선택적으로 포함됩니다.

  • .github 폴더 - GitHub Actions CI/CD 워크플로 파일을 보유합니다.
  • .azdo 폴더 - CI/CD용 Azure Pipelines를 사용하기로 결정한 경우 이 폴더에 워크플로 구성 파일을 정의합니다.
  • .devcontainer 폴더 - 프로젝트에 대한 개발 컨테이너 환경을 정의합니다.

다음 다이어그램에서는 기본 템플릿 자산이 함께 작동하는 방법을 보여 줍니다.

flowchart LR
AZ[azure.yaml] -->|Defines services| SRC[Application source]
AZ -->|Selects provider and path| INFRA[Infrastructure as code]
INFRA -->|Provisions| RES[Azure resources]
INFRA -->|Exports values| ENV[azd environment]
ENV -->|Configures| SRC
AZ -->|Maps services to| RES

필수 및 선택적 자산

정확한 구조는 프로젝트에 따라 다르지만 대부분의 템플릿은 다음 자산을 사용합니다.

azure.yaml

파일은 azure.yaml 기본 프로젝트 구성 파일입니다. 프로젝트 이름을 정의하고 배포 가능한 서비스, 인프라 공급자, 후크, 워크플로 및 기타 azd 동작을 정의할 수 있습니다.

애플리케이션 서비스의 azure.yaml 경우 일반적으로 다음을 식별합니다.

  • 애플리케이션 원본의 경로입니다.
  • 프로그래밍 언어 또는 패키징 전략입니다.
  • 애플리케이션을 호스트하는 Azure 서비스입니다.
  • 빌드, 배포, 컨테이너 또는 Kubernetes 관련 설정

인프라 전용 템플릿은 애플리케이션 서비스를 생략할 수 있습니다. 전체 구성 모델은 스키마를azure.yaml 참조하세요.

다음 예제에서는 두 개의 애플리케이션 서비스를 정의합니다. 서비스 이름, 원본 경로, 언어 및 호스팅 대상은 패키지 대상과 배포 위치를 알려줍니다 azd .

name: store
services:
  api:
    project: ./src/api
    language: js
    host: containerapp
  web:
    project: ./src/web
    language: js
    host: staticwebapp

코드로서의 인프라

대부분의 템플릿에는 Bicep 또는 Terraform 파일이 있는 디렉터리가 포함되어 infra 있습니다. 이러한 파일은 프로젝트에 필요한 Azure 리소스, 역할 할당, 네트워킹, 애플리케이션 설정 및 배포 출력을 정의합니다.

기본 Bicep 공급자의 경우, 일반적으로 azd는 배포 진입점으로 infra/main.parameters.json를 사용하고 infra/main.bicep를 사용하여 azd 환경 값을 Bicep 매개 변수에 매핑합니다. Terraform 템플릿은 일반적으로 infra/main.tf 및 관련 Terraform 파일을 사용합니다.

예를 들어 Bicep 매개 변수 파일은 azd 선택한 값을 인프라 배포에 전달할 수 있습니다.

{
  "parameters": {
    "environmentName": { "value": "${AZURE_ENV_NAME}" },
    "location": { "value": "${AZURE_LOCATION}" }
  }
}

Bicep 프로비전이 완료되면 진입점의 출력을 환경 값으로 저장합니다azd. 애플리케이션 서비스 및 후크는 리소스 엔드포인트, 이름 및 기타 런타임 구성에 이러한 값을 사용할 수 있습니다.

output API_ENDPOINT string = api.outputs.uri

응용 프로그램 소스

애플리케이션 원본은 선택 사항입니다. 템플릿에 배포 가능한 서비스가 포함된 경우 각 서비스 정의는 azure.yaml 원본 디렉터리를 가리킵니다. 템플릿은 아래 src의 서비스를 구성하거나, 리포지토리의 다른 위치에서 디렉터리를 사용하거나, 리포지토리 루트에서 서비스를 가리킬 수 있습니다.

폴더 이름 자체는 중요하지 않습니다. project의 azure.yaml 값은 azd가 각 서비스를 찾는 위치를 결정합니다.

환경 구성

.azure 디렉터리에는 azd에 의해 생성된 로컬 환경 상태와 값이 포함됩니다. 여러 환경에 대한 구독, 위치, 리소스 이름, 엔드포인트 및 배포 출력 값을 포함할 수 있습니다.

이 디렉터리를 재사용 가능한 템플릿 자산이 아닌 로컬 상태로 처리합니다. 비밀 또는 환경별 값을 포함하는 환경 파일을 커밋하지 마세요.

지원 자료

템플릿에는 다음이 포함될 수도 있습니다.

  • GitHub Actions 또는 Azure Pipelines 정의
  • 도커파일과 컨테이너 구성.
  • 개발 컨테이너 구성.
  • 명령 및 서비스 후크
  • 테스트, 스크립트 및 프로젝트 설명서.

이러한 자산은 선택 사항이며 의도한 템플릿 환경을 지원하는 경우에만 포함되어야 합니다.

서비스 및 리소스 연결

애플리케이션 서비스를 azd 배포하려면 해당 정의를 azure.yaml 프로비전된 Azure 리소스와 연결해야 합니다. 기본적으로 azd 태그가 azd-service-name 서비스 이름과 일치하는 리소스를 찾습니다.

예를 들어, api라는 이름의 서비스는 azd-service-name: api 태그가 지정된 리소스에 매핑됩니다. 대신 서비스 속성을 사용하여 resourceName 배포 대상을 명시적으로 식별할 수 있습니다.

다음 Bicep 식은 리소스의 기존 태그에 디스커버리 태그를 추가합니다.

tags: union(tags, {
  'azd-service-name': 'api'
})

템플릿을 편집할 때 서비스 이름, 리소스 검색 설정, 인프라 출력 및 애플리케이션 환경 변수를 정렬된 상태로 유지합니다.

템플릿 빌드 또는 조정

권장되는 작성 환경은 을(를) 실행한 다음 azd init을(를) 선택하는 것입니다. 전용 Copilot 에이전트 세션에서는 기존 파일을 분석하고, 새 프로젝트를 계획하고, 템플릿 자산을 생성하고, 결과의 유효성을 검사할 수 있습니다. 이 워크플로 및 기타 제작 방법은 새 템플릿으로 시작을 참조하세요.

생성된 파일은 Copilot 연결되지 않습니다. 초기화 후 직접 템플릿 파일을 탐색하고 편집 할 수 있습니다. 수동으로 또는 다른 AI 코딩 에이전트를 사용하여 동일한 파일을 만들 수도 있습니다.

Microsoft, 조직 또는 개발자 커뮤니티의 템플릿이 이미 유용한 아키텍처를 제공하는 경우 기존 템플릿에서 시작하여 프로젝트에 맞게 조정합니다. 템플릿 갤러리에서 사용 가능한 템플릿을 찾아봅니다.

템플릿 사용 지침

각 템플릿은 템플릿과 함께 제공되는 계약에 따라 소유자가 라이선스를 부여합니다. 템플릿을 사용하거나 배포하기 전에 적용되는 라이선스를 결정합니다.

Microsoft 비 Microsoft 템플릿을 담당하지 않으며 보안, 개인 정보 보호, 호환성 또는 성능 문제를 차단하지 않습니다. Microsoft 제공된 템플릿을 포함한 템플릿은 Microsoft 지원 프로그램 또는 서비스에서 지원되지 않으며 보증 없이 그대로 제공됩니다.

프로비전하기 전에 모든 템플릿 파일을 검토합니다. 특히 역할 할당, 네트워크 노출, 인증 방법, 서비스 계층, 리소스 위치 및 예상 비용을 평가합니다.

다음 단계