如果你是像我一样的懒人或在 Azure 上管理了大量 Linux 虚拟机,定时为系统批量安装补丁和更新就会成一个问题。当然有很多现成的解决方案,甚至自己写脚本批量实施是一种方法。我们本文不介绍第三方解决方案,要介绍的是微软为解决这一问题而开发的 Azure VM OSPatching 扩展。
Azure VM OSPatching 扩展可以帮助 Linux 管理自定义和配置 Linux 操作系统更新,其中包括:
- 指定时间和频率安装 Linux 系统补丁
- 指定安装哪些补丁
- 配置更新后的重启行为
下面我们就来详细说明。
前提条件
- Azure Linux VM已经安装 Microsoft Azure Linux Agent (最低 2.0.6 版本)
- 管理端已安装 Cross-Platform CLI 或 Azure PowerShell
OSPatching扩展参数
参数名 | 描述 | 值类型 | 默认值 |
---|---|---|---|
disabled | 禁用扩展 | 必要, boolean | false |
stop | 取消更新 | 必要, boolean | false |
rebootAfterPatch | 更新后重启系统 | 可选, string | RebootIfNeed |
category | 更新类型 | 可选, string | Important |
installDuration | 安装总时间 | 可选, string | 01:00 |
oneoff | 立即修补操作系统 | 可选, boolean | false |
intervalOfWeeks | 更新频率(周) | 可选, string | 1 |
dayOfWeek | 补丁在一周中哪天安装(可指定多个) | 可选, string | Everyday |
startTime | 补丁开始安装时间 | 可选, string | 03:00 |
distUpgradeList | 从repo列表全面升级(例如Ubuntu中的dist-upgrade) | 可选, string | /etc/apt/sources.list.d/custom.list |
vmStatusTest | 包括 local, idleTestScript 和 healthyTestScript | 可选, object | |
local | 指定用户自定义脚本路径 | 可选, boolean | false |
{ "disabled": false, "stop": false, "rebootAfterPatch": "RebootIfNeed|Required|NotRequired|Auto", "category": "Important|ImportantAndRecommended", "installDuration": "", "oneoff": false, "intervalOfWeeks": "", "dayOfWeek": "Sunday|Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Everyday", "startTime": "", "distUpgradeList": "", "vmStatusTest": { "local": false, } }
部署Azure VM OSPatching
大家可以使用 Azure CLI、Azure Powershell 和 ARM 模板来部署 Azure VM OSPatching 扩展,由于我平常主要用 PowerShell 比较,所以就介绍 PowerShell 的方法。
1. 先登录到 Azure 账户:
Add-AzureAccount
2. 再用类似如下部署文件配置 Azure VM OSPatching 部署:
$VmName = '' $vm = Get-AzureVM -ServiceName $VmName -Name $VmName $ExtensionName = 'OSPatchingForLinux' $Publisher = 'Microsoft.OSTCExtensions' $Version = '' $PublicConfig = ConvertTo-Json -InputObject @{ "disabled" = $false; "stop" = $true|$false; "rebootAfterPatch" = "RebootIfNeed|Required|NotRequired|Auto"; "category" = "Important|ImportantAndRecommended"; "installDuration" = ""; "oneoff" = $true|$false; "intervalOfWeeks" = ""; "dayOfWeek" = "Sunday|Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Everyday"; "startTime" = ""; "vmStatusTest" = (@{ "local" = $false; }) } Set-AzureVMExtension -ExtensionName $ExtensionName -VM $vm ` -Publisher $Publisher -Version $Version ` -PrivateConfiguration $PrivateConfig -PublicConfiguration $PublicConfig | Update-AzureVM
实际事例
$VmName = 'fulinsg' $vm = Get-AzureVM -ServiceName $VmName -Name $VmName $ExtensionName = 'OSPatchingForLinux' $Publisher = 'Microsoft.OSTCExtensions' $Version = '2.0' $PublicConfig = ConvertTo-Json -InputObject @{ "disabled" = $false; "stop" = $false; "rebootAfterPatch" = "RebootIfNeed"; "category" = "ImportantAndRecommended"; "installDuration" = "00:30"; "oneoff" = $true; "dayOfWeek" = "Everyday"; "startTime" = "03:00"; "vmStatusTest" = (@{ "local" = $false; }) } Set-AzureVMExtension -ExtensionName $ExtensionName -VM $vm ` -Publisher $Publisher -Version $Version ` -PublicConfiguration $PublicConfig | Update-AzureVM
查看状态
检查 Azure VM OSPatching 对 Linux 更新配置状态和设置:
- PowerShell 查看 OSPatching 扩展配置:
Get-AzureDeployment -ServiceName "Your Service Name"
- Azure Portal 查看 OSPatching 扩展配置:
- 要查看 OSPatching 扩展详细状态及操作系统更新设置,可参考 Linux VM 中的如下位置:
/var/lib/waagent/Microsoft.OSTCExtensions.OSPatchingForLinux-version/status/
查看系统更新状态
Linux VM 补丁更新状态和错误记录到如下日志当中:
/var/log/azure/Microsoft.OSTCExtensions.OSPatchingForLinux//extension.log /var/log/waagent.log
Azure VM OSPatching支持的Linux发行版
- Ubuntu 12.04 和更高版本
- CentOS 6.5 和更高版本
- Oracle Linux 6.4.0.0.0 和更高版本
- openSUSE 13.1 和更高版本
- SUSE Linux Enterprise Server 11 SP3 和更高版本
- FreeBSD
最新评论
可以共存,但虚拟机维护起来更麻烦了呀。
关掉之后重启下系统再试试呢
不能共存吗?
我是家庭版,看着关掉了,但是破解程序一运行还是弹窗,搞不了