Azure Bicep 사용하기 (2)
10229 단어 AzureIaCAzureBicep
지금까지 한 것을 잊어 버릴 것 같기 때문에, 전회에 계속해 여기에 비망록으로서 둡니다.
지난번 Bicep 개발 환경을 준비하고 Bicep 파일에서 스토리지 계정을 배포하려고했습니다.
이번에는 리소스 종속성에 대해 Bicep 파일에서 어떻게 표현하는지 남겨 둡니다.
리소스 종속성
리소스를 배포할 때 일부 리소스가 다른 리소스 앞에 존재하는지 확인해야 할 수 있습니다. 예를 들어 가상 머신을 만들려면 먼저 네트워크 인터페이스(Unmanaged Disk의 경우 스토리지 계정도 포함)가 있어야 합니다.
ARM 템플릿에서
ARM 템플릿은 dependsOn
요소 내에 문자열의 JSON 배열에 있는 리소스 이름 또는 리소스 ID를 열거하여 이 관계(한 리소스가 다른 리소스에 종속됨)를 정의합니다.
다음 템플릿은 리소스 종속성을 다음과 같이 정의합니다.
네트워크 인터페이스 리소스는 가상 네트워크 리소스와 공용 IP 리소스에 종속됩니다
가상 머신 리소스는 네트워크 인터페이스 리소스에 의존합니다
네트워크 인터페이스 종속성
/* ネットワーク インターフェイスの定義 */
{
"type": "Microsoft.Network/networkInterfaces",
"apiVersion": "2018-10-01",
"name": "[parameters('networkInterfaceName')]",
"location": "[parameters('location')]",
"dependsOn": [
/* 依存リソース */
"[concat('Microsoft.Network/virtualNetworks/', parameters('virtualNetworkName'))]",
"[concat('Microsoft.Network/publicIpAddresses/', parameters('publicIpAddressName'))]"
],
"properties": {
/***** 中略 *****/
}
}
가상 머신 리소스 종속성
/* 仮想マシンの定義 */
{
"type": "Microsoft.Compute/virtualMachines",
"apiVersion": "2021-03-01",
"name": "[parameters('virtualMachineName')]",
"location": "[parameters('location')]",
"dependsOn": [
/* 依存リソース */
"[concat('Microsoft.Network/networkInterfaces/', parameters('networkInterfaceName'))]"
],
"properties": {
/***** 中略 *****/
}
}
Bicep 파일에서
Bicep 파일에서 이 관계를 사용하여 심볼릭 이름을 참조하면
dependsOn
속성이 자동으로 추가됩니다.리소스 ID는 리소스의 기호 이름에서 쉽게 참조할 수 있습니다. 예를 들어 네트워크 인터페이스의 리소스 ID는
networkInterfaceName_resource.id
로 참조할 수 있으며 컴파일된 ARM 템플릿에서는 resourceId 함수으로 변환됩니다.네트워크 인터페이스 종속성
var vnetId = resourceId(resourceGroup().name, 'Microsoft.Network/virtualNetworks', virtualNetworkName)
var subnetRef = '${vnetId}/subnets/${subnetName}'
/* ネットワーク インターフェイス リソースの定義 */
resource networkInterfaceName_resource 'Microsoft.Network/networkInterfaces@2018-10-01' = {
name: networkInterfaceName
location: location
properties: {
ipConfigurations: [
{
name: 'ipconfig1'
properties: {
subnet: {
/* ↓↓↓ 仮想ネットワーク リソース (サブネット) を参照 */
id: subnetRef
}
privateIPAllocationMethod: 'Dynamic'
publicIPAddress: {
/* ↓↓↓ パブリック IP リソースを参照 */
id: resourceId(resourceGroup().name, 'Microsoft.Network/publicIpAddresses', publicIpAddressName)
}
}
}
]
enableAcceleratedNetworking: enableAcceleratedNetworking
}
dependsOn: [
virtualNetworkName_resource
publicIpAddressName_resource
]
}
가상 머신 종속성
/* 仮想マシン リソースの定義 */
resource virtualMachineName_resource 'Microsoft.Compute/virtualMachines@2021-03-01' = {
name: virtualMachineName
location: location
properties: {
/*** 中略 ***/
networkProfile: {
networkInterfaces: [
{
/* ↓↓↓ ネットワーク インターフェイス リソースを参照 */
id: networkInterfaceName_resource.id
}
]
}
/*** 中略 ***/
}
}
요약
깨끗한 정보량이므로, 하고 싶은 것이 보다 알기 쉽네요
참고문헌
Reference
이 문제에 관하여(Azure Bicep 사용하기 (2)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/tetsuya-ooooo/items/d0ea22ee3d92919dd392
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(Azure Bicep 사용하기 (2)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/tetsuya-ooooo/items/d0ea22ee3d92919dd392텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)