Azure ARM模板osprofile依赖性

时间:2018-11-30 13:18:54

标签: azure deployment

创建自定义模板时出现问题。我正在尝试从vhd作为vhd创建VM,但是在部署过程中它失败并出现错误osProfile。有趣的是,在Internet的其他模板中,我看到没有osprofile部分,并且正在部署而没有问题。

所以我添加了osProfilecomputerName参数。但是,现在部署因错误而失败,因此需要adminUsernameadminPassword。我不明白在另一个脚本中怎么可能不需要它,它将创建虚拟机而不会出现问题。

还有一个事实,就是我的模板正在使用vhd创建VM,而其他模板正在使用受管磁盘创建VM。这可能有问题吗?

我的一段代码:

"apiVersion": "2017-03-30",
            "type": "Microsoft.Compute/virtualMachines",
            "name": "[parameters('vmName')]",
            "location": "[parameters('location')]",
            "dependsOn": [
                "[concat('Microsoft.Network/networkInterfaces/', variables('nicName'))]"
            ],
            "properties": {
                "hardwareProfile": {
                    "vmSize": "[parameters('vmSize')]"
                },
                "osProfile": {
                    "computerName": "[concat(parameters('vmName'))]",
                    "adminUsername": "",
                    "adminPassword": ""
                },
                "storageProfile": {
                    "osDisk": {
                        "name": "[concat(parameters('vmName'),'-osDisk')]",
                        "osType": "[parameters('osType')]",
                        "caching": "ReadWrite",
                        "image": {
                            "uri": "[parameters('osVhdUri')]"
                        },
                        "vhd": {
                            "uri": "[variables('osDiskVhdName')]"
                        },
                        "createOption": "FromImage"
                    }
                },
                "networkProfile": {
                    "networkInterfaces": [
                        {
                            "id": "[resourceId('Microsoft.Network/networkInterfaces',variables('nicName'))]"
                        }
                    ]
                },
                "diagnosticsProfile": {
                    "bootDiagnostics": {
                        "enabled": true,
                        "storageUri": "[concat(reference(concat('Microsoft.Storage/storageAccounts/', parameters('userDiagStorageAccountName')), '2016-01-01').primaryEndpoints.blob)]"
                    }
                }

我知道adminUsernameadminPassword不能为空,但是我不希望在从现有vhd创建VM时使用此参数。

成功部署的模板代码片段:

"apiVersion": "2017-03-30",
            "type": "Microsoft.Compute/virtualMachines",
            "name": "[parameters('vmName')]",
            "location": "[parameters('location')]",
            "tags": {
                "displayName": "VirtualMachine"
            },
            "dependsOn": [
                "[concat('Microsoft.Network/networkInterfaces/', variables('nicName'))]",
                "[concat(parameters('vmName'), '_OSdisk')]",
                "[concat(parameters('vmName'), '_Datadisk')]"
            ],
            "properties": {
                "hardwareProfile": {
                    "vmSize": "[parameters('vmSize')]"
                },
                "storageProfile": {
                    "osDisk": {
                        "osType": "[parameters('osType')]",
                        "caching": "ReadWrite",
                        "createOption": "Attach",
                        "managedDisk": {
                            "id": "[resourceId('Microsoft.Compute/disks', concat(parameters('vmName'), '_OSdisk'))]"
                        }
                    },
                    "dataDisks": [
                        {
                            "lun": 0,
                            "managedDisk": {
                                "id": "[resourceId('Microsoft.Compute/disks', concat(parameters('vmName'), '_Datadisk'))]"
                            },
                            "caching": "ReadOnly",
                            "createOption": "Attach"
                        }
                    ]
                },
                "networkProfile": {
                    "networkInterfaces": [
                        {
                            "id": "[resourceId('Microsoft.Network/networkInterfaces',variables('nicName'))]"
                        }
                    ]
                },
                "diagnosticsProfile": {
                    "bootDiagnostics": {
                        "enabled": true,
                        "storageUri": "[concat(reference(concat('Microsoft.Storage/storageAccounts/', variables('diagStorageAccountName')), '2016-01-01').primaryEndpoints.blob)]"
                    }
                }

这是没有osProfile模板的部署失败的打印屏幕。 enter image description here

1 个答案:

答案 0 :(得分:2)

"createOption": "FromImage"更改为"createOption": "Attach"。您正在尝试从市场映像而非现有的VHD创建VM。

在这种情况下,您可以完全删除osProfile