如何通过Azure自动化账户为Azure虚拟机配置更新管理?
问题分析与解答
当前配置不足以启用Azure虚拟机更新管理
你的现有Terraform配置完成了基础资源搭建:创建Windows VM并配置监控代理、部署Log Analytics Updates解决方案、创建自动化账户及更新计划,但缺少更新管理功能的核心依赖,具体如下:
- 缺少更新管理专用Runbook:Azure更新管理依赖官方内置Runbook(如
UpdateManagement-Tasks)执行更新评估、安装操作,你仅创建了自动化计划,未关联任何Runbook,也未导入必要的Runbook资源。 - 自动化计划未绑定任务:
azurerm_automation_schedule.weekly-updates仅定义了执行周期,未关联具体更新任务,无法触发任何更新操作。 - VM未完成更新管理注册:需要确保OMS Agent将VM状态同步到Log Analytics,让Updates解决方案识别并关联到自动化账户,这一步当前配置未覆盖。
关于azurerm_template_deployment的疑问
早期部署Azure更新管理时,官方推荐用ARM模板一键完成所有依赖配置(包括导入Runbook、关联计划、配置权限等),手动用Terraform单个资源逐个构建会繁琐且易遗漏。
现在虽然Terraform的azurerm provider提供了部分单独资源,但使用azurerm_template_deployment调用官方ARM模板依然是高效方式,能一次性完成更新管理的完整配置,避免手动配置的复杂性。
补充Terraform配置建议
你可以添加以下配置补全更新管理核心组件:
1. 使用azurerm_template_deployment部署完整更新管理配置
resource "azurerm_template_deployment" "update_management" { name = "update-management-deployment" resource_group_name = var.rg_name location = var.location template_content = <<JSON { "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", "contentVersion": "1.0.0.0", "parameters": { "automationAccountName": { "type": "string" }, "scheduleName": { "type": "string" } }, "resources": [ { "type": "Microsoft.Automation/automationAccounts/runbooks", "apiVersion": "2020-01-13-preview", "name": "[concat(parameters('automationAccountName'), '/UpdateManagement-Tasks')]", "location": "[resourceGroup().location]", "properties": { "runbookType": "PowerShell", "logVerbose": false, "logProgress": false, "publishContentLink": { "uri": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.automation/automation-update-management/UpdateManagement-Tasks.ps1", "version": "1.0.0.0" } } }, { "type": "Microsoft.Automation/automationAccounts/jobSchedules", "apiVersion": "2020-01-13-preview", "name": "[concat(parameters('automationAccountName'), '/', parameters('scheduleName'))]", "dependsOn": [ "[resourceId('Microsoft.Automation/automationAccounts/runbooks', parameters('automationAccountName'), 'UpdateManagement-Tasks')]" ], "properties": { "schedule": { "name": "[parameters('scheduleName')]" }, "runbook": { "name": "UpdateManagement-Tasks" } } } ] } JSON parameters = { automationAccountName = azurerm_automation_account.automation_account.name scheduleName = azurerm_automation_schedule.weekly-updates.name } depends_on = [azurerm_automation_schedule.weekly-updates, azurerm_log_analytics_linked_service.link_automation_account_with_log_analytics] }
2. 验证关键依赖
确保以下配置正常生效:
- VM上的
OmsAgentForWindows扩展已正确连接Log Analytics工作区 - Log Analytics的
Updates解决方案已成功部署并关联自动化账户 - 自动化账户与Log Analytics的链接(
azurerm_log_analytics_linked_service)已生效
内容的提问来源于stack exchange,提问作者One Developer
相关产品推荐
相关产品推荐

