템플릿 함수를 사용하여 Azure Resource Manager 템플릿의 유연성 강화
이 시나리오에서는 가능한 한 쉽게 다른 환경에 ARM(Azure Resource Manager) 템플릿을 배포하려고 합니다. 까다로운 작업 중 하나는 Azure Storage 계정에 고유한 이름을 지정하는 것입니다.
이 문제를 해결하기 위해 ARM 템플릿 함수를 사용하여 식을 만듭니다.
ARM 템플릿 함수란?
ARM 템플릿 함수는 배포하는 동안 동적으로 값을 가져와 ARM 템플릿을 보다 유연하게 사용할 수 있도록 합니다.
함수를 이해하려면 먼저 식을 이해해야 합니다. 식은 템플릿이 배포될 때 평가되는 값입니다. 식은 대괄호 []
로 시작하고 끝나며 문자열, 정수, 부울, 배열 또는 개체를 반환할 수 있습니다.
이 학습 경로의 이전 모듈에서는 Resource Manager 템플릿에서 이미 식을 사용했습니다. 예를 들어 다음을 사용했습니다.
"parameters": {
"location": {
"type": "string",
"defaultValue": "[resourceGroup().location]"
}
},
식은 defaultValue:
특성의 값입니다. 이 식에는 resourceGroup()
ARM 템플릿 함수가 포함되어 있습니다. 이 함수는 이 템플릿이 배포되는 리소스 그룹에 대한 정보를 반환합니다. .location
은 함수에서 반환된 개체에서 하나의 속성을 검색합니다. 함수를 사용하여 필요한 값을 동적으로 생성할 수 있습니다.
ARM 템플릿 함수를 사용하여 작업하는 방법
함수를 사용할 때 몇 가지 규칙을 따라야 합니다.
문자열 값을 함수에 전달할 때는 작은따옴표를 사용합니다. 예:
concat('storage',uniqueString(resourceGroup().id))
. 이 함수는concat
이며 함수에 전달하는 문자열은'storage'
입니다.템플릿 함수에서 리터럴 값을 사용하려면 ‘이스케이프 문자’가 필요합니다. 이스케이프 문자는 이스케이프 처리하려는 항목에 따라 다릅니다.
속성을 null로 설정하려면
null
또는[json('null')]
을 사용할 수 있습니다. null을 매개 변수로 제공하면 JSON 함수는 빈 개체를 반환합니다."stringValue": null, "objectValue": "[json('null')]"
Resource Manager는 여러 ARM 템플릿 함수를 제공합니다. 함수는 형식을 기반으로 다음과 같이 그룹으로 나열됩니다.
- 배열 함수: 배열 작업에 사용합니다. 예를 들어
first
및last
가 있습니다. - 비교 함수: 템플릿에서 비교를 수행하는 데 사용합니다. 예를 들어
equals
및greater
가 있습니다. - 날짜 함수: 날짜 작업에 사용합니다. 예를 들어
utcNow
및dateTimeAdd
가 있습니다. - 배포 값 함수: 템플릿의 섹션 값 및 배포와 관련된 값을 가져오는 데 사용합니다. 예를 들어
environment
및parameters
가 있습니다. - 논리 함수: 논리 조건을 지정할 때 사용합니다. 예를 들어
if
및not
이 있습니다. - 숫자 함수: 정수 작업에 사용합니다. 예를 들어
max
및mod
가 있습니다. - 개체 함수: 개체 작업에 사용합니다. 예를 들어
contains
및length
가 있습니다. - 리소스 함수: 리소스 값을 가져오는 데 사용합니다. 예를 들어
resourceGroup
및subscription
이 있습니다. - 문자열 함수: 문자열 작업에 사용합니다. 예를 들어
length
및startsWith
가 있습니다.
하나의 식에서 여러 함수를 사용하는 방법
여러 템플릿 함수를 함께 사용하여 사용자 고유의 식을 만들 수 있습니다. 이 시나리오에서는 접두사 입력을 리소스 그룹 ID의 해시와 결합하여 각 리소스 그룹의 고유한 이름을 만드는 식을 만들어야 합니다. 이 식의 결과로 dev2hu6fktr577wh
및 staging5his8hgr67tt5
와 같은 스토리지 계정 이름이 생성됩니다. 4가지 함수를 사용하여 이 문자열 값을 생성할 수 있습니다. 예를 들면 다음과 같습니다.
"[toLower(concat('Storage',uniqueString(resourceGroup().id)))]"
이 식을 살펴보겠습니다.
concat부터 이 함수는 임의 개수의 인수를 사용하고 매개 변수에 대해 문자열 또는 배열을 허용할 수 있습니다. 여기서는 "Storage"
리터럴 문자열을 사용하고 다른 함수 uniqueString의 결과와 연결합니다. uniqueString
함수는 매개 변수를 기준으로 결정적 해시 문자열을 만듭니다. 이 식에서는 다른 함수인 resourceGroup을 사용하여 현재 리소스 그룹 ID의 해시를 만듭니다.
지금까지 논의한 식의 출력은 다음과 같습니다.
명명 규칙을 준수하려면 이 문자열을 모두 소문자로 지정해야 합니다. 여기서는 toLower 함수를 외부 함수로 추가합니다.
결과 문자열은 다음과 같습니다.