Bicep 파일 구조 및 구문 이해
Azure Bicep에는 고유한 구문이 함께 제공되지만 쉽게 이해하고 따를 수 있습니다. 구문과 구조는 자세히 다루지 않지만 예제를 사용하여 주요 개념을 검토해 보겠습니다.
샘플 Bicep .bicep
파일
@minLength(3)
@maxLength(11)
param storagePrefix string
param storageSKU string = 'Standard_LRS'
param location string = resourceGroup().location
var uniqueStorageName = '${storagePrefix}${uniqueString(resourceGroup().id)}'
resource stg 'Microsoft.Storage/storageAccounts@2019-04-01' = {
name: uniqueStorageName
location: location
sku: {
name: storageSKU
}
kind: 'StorageV2'
properties: {
supportsHttpsTrafficOnly: true
}
resource service 'fileServices' = {
name: 'default'
resource share 'shares' = {
name: 'exampleshare'
}
}
}
module webModule './webApp.bicep' = {
name: 'webDeploy'
params: {
skuName: 'S1'
location: location
}
}
output storageEndpoint object = stg.properties.primaryEndpoints
범위
기본적으로 모든 템플릿의 대상 범위는 resourceGroup
대해 설정되지만 명시적으로 설정하여 사용자 지정할 수 있습니다. 허용되는 다른 값으로 subscription
, managementGroup
및 tenant
.
매개 변수
이전 단원에서 매개 변수를 이미 사용했습니다. 이름, 위치, 접두사 등에 대한 잠재적 값을 제공하여 런타임에 템플릿 배포를 사용자 지정할 수 있습니다.
매개 변수에는 편집기에서 유효성을 검사할 수 있는 형식이 있으며 배포 시 선택적으로 만들 수 있는 기본값도 있습니다. 또한 작성에서 잘못된 값을 방지하여 배포를 보다 안정적으로 만드는 유효성 검사 규칙을 사용할 수 있음을 확인할 수 있습니다. 자세한 내용은 Bicep 매개 변수를 참조하세요.
변수
매개 변수와 마찬가지로 변수는 보다 강력하고 읽기 쉬운 템플릿을 만드는 역할을 합니다. 모든 복잡한 식을 변수에 저장하고 템플릿 전체에서 사용할 수 있습니다. 변수를 정의하면 형식이 값에서 유추됩니다.
위의 예제에서 uniqueStorageName
리소스 정의를 간소화하는 데 사용됩니다. 자세한 내용은 Bicep의 변수을 참조하세요.
리소스
resource
키워드는 템플릿에서 리소스를 선언해야 할 때 사용됩니다. 리소스 선언에는 나중에 하위 리소스를 정의하기 위해 해당 리소스를 참조하거나 부모-자식 관계와 같은 암시적 종속성에 해당 속성을 사용하는 데 사용할 수 있는 리소스의 기호 이름이 있습니다.
location
, name
및 properties
같은 모든 리소스에 공통적인 특정 속성이 있습니다. 리소스 가격 책정 계층, SKU
등을 사용자 지정하는 데 사용할 수 있는 리소스별 속성이 있습니다.
부모를 참조하여 리소스 내 또는 외부에서 하위 리소스를 정의할 수 있습니다. 위의 예제에서 파일 공유는 스토리지 계정 리소스 내에서 정의됩니다. 리소스 외부를 정의하려는 경우 템플릿을 변경해야 합니다.
resource storage 'Microsoft.Storage/storageAccounts@2021-02-01' = {
name: 'examplestorage'
location: resourceGroup().location
kind: 'StorageV2'
sku: {
name: 'Standard_LRS'
}
}
resource service 'Microsoft.Storage/storageAccounts/fileServices@2021-02-01' = {
name: 'default'
parent: storage
}
resource share 'Microsoft.Storage/storageAccounts/fileServices/shares@2021-02-01' = {
name: 'exampleshare'
parent: service
}
모듈
실제로 재사용 가능한 템플릿을 원하는 경우 모듈 사용을 피할 수 없습니다. 모듈을 사용하면 Bicep 파일을 다른 Bicep 파일들에서 재사용할 수 있습니다. 모듈에서는 배포해야 하는 항목과 필요한 매개 변수를 정의하고 다른 파일에서 다시 사용할 때 파일을 참조하고 매개 변수를 제공하기만 하면 됩니다. 나머지는 Azure Bicep에서 처리합니다.
위의 예제에서는 여러분이 아마도 App Service
를 배포하는 모듈을 사용하고 있습니다. 자세한 내용은 Bicep 모듈 사용참조하세요.
출력
출력을 사용하여 CI/CD 파이프라인 내 또는 로컬 터미널 또는 Cloud Shell배포의 값을 외부 세계로 전달할 수 있습니다. 이렇게 하면 배포가 완료된 후 스토리지 엔드포인트 또는 애플리케이션 URL과 같은 값에 액세스할 수 있습니다.
output
키워드와 액세스하려는 속성만 있으면 됩니다.
output storageEndpoint endpoints = stg.properties.primaryEndpoints
자세한 내용은 Bicep 의출력을 참조하세요.
기타 기능
루프, 조건부 배포, 여러 줄 문자열, 기존 클라우드 리소스 참조 등 Bicep 파일 내에서 사용할 수 있는 다른 많은 기능이 있습니다. 실제로 ARM 템플릿 내의 유효한 함수는 Bicep 파일 내에서도 유효합니다.
다음 단계
다음 단원에서는 Azure Pipeline에서 Bicep을 사용하는 방법을 알아봅니다.