我想为基于ARM模板的VM部署禁用“Windows更新”。我在最近的Microsoft中找到了相关设置enableAutomaticUpdate
。计算提供程序架构。但我没有找到使用此设置的任何ARM模板。我搜索了几个与Windows VM部署相关的Azure快速入门模板——但没有一个打算在预配时控制Windows更新服务的行为。我知道CLASSIC部署模型可用的选项,但我正在明确寻找使用Azure资源管理器部署模型的解决方案。
{
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
...
{
"apiVersion": "2015-06-15",
"type": "Microsoft.Compute/virtualMachines",
"name": "[parameters('vmName')]",
"location": "[parameters('vmLocation')]",
"tags": {
"displayName": "VirtualMachine"
},
"dependsOn": [
"[concat('Microsoft.Storage/storageAccounts/', parameters('vmStorageAccountName'))]",
"[concat('Microsoft.Network/networkInterfaces/', variables('nicName'))]"
],
"properties": {
"hardwareProfile": {
"vmSize": "[parameters('vmSize')]"
},
"osProfile": {
"computerName": "[parameters('vmName')]",
"adminUsername": "[parameters('adminUsername')]",
"adminPassword": "[parameters('adminPassword')]"
},
"windowsConfiguration": {
"enableAutomaticUpdates": false
},
...
我试图在现有ARM模板中使用属性windowsConfiguration导致部署失败,并显示此错误消息(在Azure门户中显示)。
在“Properties”类型的对象上找不到成员“windowsConfiguration”。路径的属性。windowsConfiguration’,第1行,位置259。(代码:BadRequest)
当我将Microsoft. Compute升级到版本2015-08-01,尝试引用包含配置属性enableAutomaticUpdate
的架构时,VM部署失败并出现此错误消息。显然我做错了什么。
{
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
...
{
"apiVersion": "2015-08-01",
"type": "Microsoft.Compute/virtualMachines",
"name": "[parameters('vmName')]",
"location": "[parameters('vmLocation')]",
"tags": {
"displayName": "VirtualMachine"
},
"dependsOn": [
"[concat('Microsoft.Storage/storageAccounts/', parameters('vmStorageAccountName'))]",
"[concat('Microsoft.Network/networkInterfaces/', variables('nicName'))]"
],
"properties": {
"hardwareProfile": {
"vmSize": "[parameters('vmSize')]"
},
"osProfile": {
"computerName": "[parameters('vmName')]",
"adminUsername": "[parameters('adminUsername')]",
"adminPassword": "[parameters('adminPassword')]"
},
"windowsConfiguration": {
"enableAutomaticUpdates": false
},
...
未找到用于位置“西欧”和类型“虚拟机”的API版本“2015-08-01”的注册资源提供商。支持的api版本是“2015-05-01-preview,2015-06-15, 2016-03-30”。支持的位置是“eastus, eastus2, Westus, centalus, northcentalus, southcentalus, northeurope, westeurope, eastasia, southeastasia, Japan anEast, Japan anWest, Australia aliaEast, Australia aliasou东北,巴西南部”。(代码:未注册提供商找到)
我想了解一些关于如何编写ARM模板的指导,这些模板使用Azure Compute Provider架构版本2015-08-01在设置时禁用Windows更新。我的NET解决方案使用Azure SDK 2.7.1。
查看上面的错误消息,您将位置传递为“West Europe”,而它应该是“westeurope”。区域名称应以小写形式传递。
您可以使用JSON模板中的以下行“位置”来使用资源组的位置:“[resourceGroup()。位置]”这将是更好的做法。
我非常接近解决方案。我只是误解了模式。根据架构的这一部分,Windows配置是osProfile的一部分。如果ARM模板是这样编写的,Azure资源管理器就会理解我想要什么,并在资源调配时禁用AutomaticUpdates。
{
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
...
{
"apiVersion": "2015-06-15",
"type": "Microsoft.Compute/virtualMachines",
"name": "[parameters('vmName')]",
"location": "[resourceGroup().location]",
"tags": {
"displayName": "VirtualMachine"
},
"dependsOn": [
"[concat('Microsoft.Storage/storageAccounts/', parameters('vmStorageAccountName'))]",
"[concat('Microsoft.Network/networkInterfaces/', variables('nicName'))]"
],
"properties": {
"hardwareProfile": {
"vmSize": "[parameters('vmSize')]"
},
"osProfile": {
"computerName": "[parameters('vmName')]",
"adminUsername": "[parameters('adminUsername')]",
"adminPassword": "[parameters('adminPassword')]",
"windowsConfiguration": {
"enableAutomaticUpdates": false
}
},
...
Azure Portal中不可思议的工具资源浏览器显示了给定资源的当前配置。如您所见,EnableAutomaticUpdates设置为false。
{
"properties": {
"vmId": "10400cdd-26be-4be4-99d8-2d5c22d96911",
"hardwareProfile": {
"vmSize": "Standard_D2"
},
"storageProfile": {
"imageReference": {
"publisher": "MicrosoftWindowsServer",
"offer": "WindowsServer",
"sku": "2012-R2-Datacenter",
"version": "latest"
},
"osDisk": {
"osType": "Windows",
"name": "osdisk",
"createOption": "FromImage",
"vhd": {
"uri": "this_is_not_for_public_use"
},
"caching": "ReadWrite"
},
"dataDisks": []
},
"osProfile": {
"computerName": "this_is_not_for_public_use",
"adminUsername": "this_is_not_for_public_use",
"windowsConfiguration": {
"provisionVMAgent": true,
"enableAutomaticUpdates": false
},
"secrets": []
},
"networkProfile": {
"networkInterfaces": [
{
"id": "this_is_not_for_public_use/providers/Microsoft.Network/networkInterfaces/ComputeNode15-Nic"
}
]
},
"provisioningState": "Creating"
},
"id": "this_is_not_for_public_use/providers/Microsoft.Compute/virtualMachines/this_is_not_for_public_use",
"name": "this_is_not_for_public_use",
"type": "Microsoft.Compute/virtualMachines",
"location": "westeurope",
"tags": {
"displayName": "VirtualMachine"
}
}
我更改了模板以使用资源组的位置—在大多数情况下,这是一个有用的选项。感谢Martyn C提供的提示和宝贵的反馈,将我推向了正确的方向。
我正在处理ARM模板并需要执行条件部署。例如,我在变量“子网”中定义了两个网络安全组。 网络安全组nsg_bastion1需要使用预设规则进行特殊处理,因为它是Azure Bastion子网的网络安全组。nsg_client1将分配一些自定义规则,此时这些规则并不重要。 为了区分非堡垒和堡垒网络安全组,我创建了两个条件资源块: 条件属性检查子网是否称为“AzureBastionSubnet”。我已
当部署模板验证失败时,我的代码中出现了一个错误:行105和列9处的模板资源myVMć无效:模板函数reourceId无效。使用详情请看https://aka.ms/arm-template-expressions。使用详情请见https://aka.ms/arm-template-expressions。(代码:InvalidTemboard)。 我已经尝试解决这个错误但我不会 } 结果是,这将使
最近我开始创建一个新的资源组,但它似乎被困在配置服务器场资源上。重新启动部署会输出以下错误: 我没有时间等待它的到期。有没有办法取消Azure ARM部署?
用户管理是使虚拟资源能派上用场的另一个很好的例子。考虑下面的设置。 你有三个用户:John、Graham 和 Steven。为了简化管理大量主机,你为两种类型的用户定义了类: developers 和 sysadmins。每个机器都需要包含 sysadmins,但只有一部分机器允许 developer 访问: node server { include user::sysadmins } n
我试图完全清理资源组在Azure。 删除资源组不是选项(访问权限:参与者,而不是所有者) 做到这一点的最优雅和明显的方法(也在一些文章中描述)是使用“空”部署模板执行完整的部署: 删除SQL Server开始“...”接受“...”失败“...”开始“...”接受“...”失败“... 你想到主意了。 其他时候效果很好。 您将得到数据库删除的无限循环“开始..接受..失败..开始..接受..失败.
熟悉使用 Vagrant 管理虚拟机的流程。 查看状态 如果你已经登录到了虚拟机上,先退出来。在命令行下看到下面提示符就表示你已经登录到虚拟机上了: [[email protected] ~]$ 输入命令: exit 应该会返回: logout Connection to 127.0.0.1 closed. 现在你的位置应该是在项目的根目录下面,先查看一下虚拟机的状态: vagrant st