programing

리소스가 템플릿에 정의되지 않았습니다.

sourcejob 2023. 5. 29. 10:37
반응형

리소스가 템플릿에 정의되지 않았습니다.

아래 템플릿 배포:

https://gist.github.com/rnkhouse/aea0a8fd395da37b19466348b919d620

{
    "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "location": {
            "type": "String"
        },
        "virtualNetworkName": {
        "type": "string",
        "metadata": {
            "description": "This is the name of the Virtual Network"
        }
        },
        "networkInterfaceName": {
        "type": "string",
        "metadata": {
            "description": "This is the prefix name of the Network interfaces"
        }
        },
        "loadBalancerName": {
        "type": "string",
        "metadata": {
            "description": "This is the name of the load balancer"
        }
        },
        "adminUsername": {
        "type": "string",
        "metadata": {
            "description": "Admin username"
        }
        },
        "adminPublicKey": {
        "type": "string",
        "metadata": {
            "description": "SSH Public Key"
        }
        },
        "imagePublisher": {
        "type": "string",
        "defaultValue": "Canonical",
        "metadata": {
            "description": "Image Publisher"
        }
        },
        "vmNamePrefix": {
        "type": "string",
        "metadata": {
            "description": "Prefix to use for VM names"
        }
        },
        "imageOffer": {
        "type": "string",
        "defaultValue": "UbuntuServer",
        "metadata": {
            "description": "Image Offer"
        }
        },
        "imageSKU": {
        "type": "string",
        "defaultValue": "14.04.5-LTS",
        "metadata": {
            "description": "Image SKU"
        }
        },
        "vmStorageAccountContainerName": {
        "type": "string",
        "defaultValue": "vhds",
        "metadata": {
            "description": "This is the storage account container name"
        }
        },
        "storageAccountName": {
        "type": "string",
        "metadata": {
            "description": "Storage account name"
        }
        },
        "vmSize": {
        "type": "string",
        "defaultValue": "Standard_D1",
        "metadata": {
            "description": "This is the allowed list of VM sizes"
        }
        },
        "subnetName": {
            "defaultValue": "subnet-2",
            "type": "String"
        }
    },
    "variables": {
        "availabilitySetName": "[concat(parameters('subnetName'),'-AVSET')]",
        "addressPrefix": "1.0.0.0/16",
        "subnetPrefix": "1.0.2.0/24",
        "storageAccountType": "Standard_LRS",
        "vnetID": "[resourceId(resourceGroup().name,'Microsoft.Network/virtualNetworks',parameters('virtualNetworkName'))]",
        "subnetRef": "[concat(variables('vnetID'),'/subnets/',parameters ('subnetName'))]",
        "numberOfInstances": 2,
        "lbID": "[resourceId('Microsoft.Network/loadBalancers',parameters('loadBalancerName'))]"
    },
    "resources": [
        {
        "apiVersion": "2015-05-01-preview",
        "type": "Microsoft.Storage/storageAccounts",
        "name": "[parameters('storageAccountName')]",
        "location": "[parameters('location')]",
        "properties": {
            "accountType": "[variables('storageAccountType')]"
        }
        },
        {
        "apiVersion": "2016-04-30-preview",
        "type": "Microsoft.Compute/availabilitySets",
        "name": "[variables('availabilitySetName')]",
        "location": "[parameters('location')]",
        "properties": {
            "platformFaultDomainCount": "2",
            "platformUpdateDomainCount": "2",
            "managed": "true"
        }
        },
        {
        "apiVersion": "2015-05-01-preview",
        "type": "Microsoft.Network/virtualNetworks/subnets",
        "name": "[concat(parameters('virtualNetworkName'), '/', parameters('subnetName'))]",
        "location": "[parameters('location')]",
        "properties": {
            "addressPrefix": "[variables('subnetPrefix')]"
        }
        },
        {
        "apiVersion": "2015-05-01-preview",
        "type": "Microsoft.Network/networkInterfaces",
        "name": "[concat(parameters('networkInterfaceName'), copyindex())]",
        "location": "[parameters('location')]",
        "copy": {
            "name": "nicLoop",
            "count": "[variables('numberOfInstances')]"
        },
        "dependsOn": [
            "[concat('Microsoft.Network/loadBalancers/', parameters('loadBalancerName'))]"
        ],
        "properties": {
            "ipConfigurations": [
            {
                "name": "ipconfig1",
                "properties": {
                "privateIPAllocationMethod": "Dynamic",
                "subnet": {
                    "id": "[variables('subnetRef')]"
                },
                "loadBalancerBackendAddressPools": [
                    {
                    "id": "[concat(variables('lbID'), '/backendAddressPools/BackendPool1')]"
                    }
                ]
                }
            }
            ]
        }
        },
        {
        "apiVersion": "2015-05-01-preview",
        "type": "Microsoft.Network/loadBalancers",
        "name": "[parameters('loadBalancerName')]",
        "location": "[parameters('location')]",
        "dependsOn": [],
        "properties": {
            "frontendIPConfigurations": [
            {
                "properties": {
                "subnet": {
                    "id": "[variables('subnetRef')]"
                },
                "privateIPAddress": "1.0.2.50",
                "privateIPAllocationMethod": "Static"
                },
                "name": "LoadBalancerFrontend"
            }
            ],
            "backendAddressPools": [
            {
                "name": "BackendPool1"
            }
            ],
            "loadBalancingRules": [
            {
                "properties": {
                "frontendIPConfiguration": {
                    "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/frontendIpConfigurations/LoadBalancerFrontend')]"
                },
                "backendAddressPool": {
                    "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/BackendPool1')]"
                },
                "probe": {
                    "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/probes/lbprobe')]"
                },
                "protocol": "Tcp",
                "frontendPort": 80,
                "backendPort": 80,
                "idleTimeoutInMinutes": 15
                },
                "Name": "lbrule"
            }
            ],
            "probes": [
            {
                "properties": {
                "protocol": "Tcp",
                "port": 80,
                "intervalInSeconds": 15,
                "numberOfProbes": 2
                },
                "name": "lbprobe"
            }
            ]
        }
        },
        {
        "apiVersion": "2016-04-30-preview",
        "type": "Microsoft.Compute/virtualMachines",
        "name": "[concat(parameters('vmNamePrefix'), copyindex())]",
        "copy": {
            "name": "virtualMachineLoop",
            "count": "[variables('numberOfInstances')]"
        },
        "location": "[parameters('location')]",
        "dependsOn": [
            "[concat('Microsoft.Storage/storageAccounts/', parameters('storageAccountName'))]",
            "[concat('Microsoft.Network/networkInterfaces/', parameters('networkInterfaceName'), copyindex())]",
            "[concat('Microsoft.Compute/availabilitySets/', variables('availabilitySetName'))]"
        ],
        "properties": {
            "availabilitySet": {
            "id": "[resourceId('Microsoft.Compute/availabilitySets',variables('availabilitySetName'))]"
            },
            "hardwareProfile": {
            "vmSize": "[parameters('vmSize')]"
            },
            "osProfile": {
            "computerName": "[concat(parameters('vmNamePrefix'), copyIndex())]",
            "adminUsername": "[parameters('adminUsername')]",
            "linuxConfiguration": {
                "disablePasswordAuthentication": "true",
                "ssh": {
                    "publicKeys": [
                        {
                            "path": "[concat('/home/', parameters('adminUsername'), '/.ssh/authorized_keys')]",
                            "keyData": "[parameters('adminPublicKey')]"
                        }
                    ]
                }
            }
            },
            "storageProfile": {
            "imageReference": {
                "publisher": "[parameters('imagePublisher')]",
                "offer": "[parameters('imageOffer')]",
                "sku": "[parameters('imageSKU')]",
                "version": "latest"
            },
            "osDisk": {
                "createOption": "FromImage"
            }
            },
            "networkProfile": {
            "networkInterfaces": [
                {
                "id": "[resourceId('Microsoft.Network/networkInterfaces',concat(parameters('networkInterfaceName'),copyindex()))]"
                }
            ]
            },
            "diagnosticsProfile": {
            "bootDiagnostics": {
                "enabled": "true",
                "storageUri": "[concat('http://',parameters('storageAccountName'),'.blob.core.windows.net')]"
            }
            }
        }
        }
    ]
}

오류:

"상태 코드: 400 및 메시지:배포 템플릿 유효성 검사에 실패했습니다. '리소스 'Microsoft.Network/virtualNetworks/mtes-dev-VNET'이(가) 템플릿에 정의되어 있지 않습니다.사용에 대한 자세한 내용은 https://aka.ms/arm-template 을 참조하십시오.

이미 다른 템플릿에서 가상 네트워크를 생성했으며 여기에서 동일한 리소스 그룹을 사용하고 있습니다.하지만, 저는 여전히 오류를 극복하고 있습니다.조언 부탁드립니다!

제거한다.dependsOn코드의 Vnet은 해당 리소스가 템플릿의 일부일 경우에만 필요하며, 이미 배포된 경우에는 필요하지 않습니다.

리소스가 템플릿에 정의되지 않았습니다'를 검색한 후 여기에 도착하는 다른 사용자는 이 오류 메시지의 또 다른 원인으로 다음 양식을 참조할 수 있습니다.

reference('<some complete id outside this template>')

또는

listkeys('<some complete id outside this template>')

오류 메시지는 알 수 없지만 현재 템플릿 외부에 정의된 리소스를 참조할 때 API 버전을 포함해야 합니다.

예.

reference('<some complete id outside this template>', '2018-03-01')

동일한 오류 코드를 검색하는 중에 이 문제를 발견했습니다.하지만 다른 문제가 있었습니다. 템플릿 내의 다른 리소스의 하위 리소스를 참조하고 있었습니다.저는 그것들이 현재 템플릿 밖에서 고려되고 있다고 생각합니다.

예.

{
    "$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json",
    "contentVersion": "1.0.0.0",
    "resources": [    
        {
            "type": "Microsoft.Network/virtualNetworks",
            "name": "vnetName",
            "location": "[resourceGroup().location]",
            "apiVersion": "2018-11-01",
            "properties": {
                ...
                }
            },
            "resources": [
                {
                    "type": "subnets",
                    "apiVersion": "2018-11-01",
                    "name": "subnetName",
                    "dependsOn": [
                        "[resourceId('Microsoft.Network/virtualNetworks', vnetName)]"
                    ],
                    "properties": {
                        ...
                    }
                }
            }
        },
        {
            "apiVersion": "2016-02-01",
            "name": "deploymentName",
            "type": "Microsoft.Resources/deployments",
            "dependsOn": [
                "[resourceId('Microsoft.Network/virtualNetworks.subnets', vnetName, subnetName)]"
            ],
        }
    ]
}

여기서 해결책은 상위 리소스를 배포에 배치하고 이에 의존하는 것입니다.

예.

{
    "$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json",
    "contentVersion": "1.0.0.0",
    "resources": [    
        {
            "apiVersion": "2016-02-01",
            "name": "deployment1",
            "type": "Microsoft.Resources/deployments",
            "resources": [
                {
                    "type": "Microsoft.Network/virtualNetworks",
                    "name": "vnetName",
                    "location": "[resourceGroup().location]",
                    "apiVersion": "2018-11-01",
                    "properties": {
                        ...
                    },
                    "resources": [
                        {
                            "type": "subnets",
                            "apiVersion": "2018-11-01",
                            "name": "subnetName",
                            "dependsOn": [
                                "[resourceId('Microsoft.Network/virtualNetworks', vnetName)]"
                            ],
                            "properties": {
                                ...
                            }
                        }
                    ]
                }
            ]
        },
        {
            "apiVersion": "2016-02-01",
            "name": "deployment2",
            "type": "Microsoft.Resources/deployments",
            "dependsOn": [
                "deployment1"
            ],
        }
    ]
}

저도 같은 문제가 있었습니다. 기본적으로 해결책은 다음과 같습니다.

"dependsOn": [
  resourceid('Microsoft.Resources/deployments','deployment1')]
]

다음을 사용해야 합니다.

"dependsOn": [
  "deployment1"
],

언급URL : https://stackoverflow.com/questions/43482219/the-resource-is-not-defined-in-the-template

반응형