Azure 机器配置扩展
机器配置扩展在虚拟机 (VM) 内部执行审核和配置操作。
先决条件
若要使你的 VM 能够通过机器配置服务的身份验证,该 VM 必须有系统分配的托管标识。 可以通过设置 "type": "SystemAssigned"
属性来满足对 VM 的身份要求:
"identity": {
"type": "SystemAssigned"
}
操作系统
对机器配置扩展的操作系统支持与端到端解决方案的操作系统支持中所述相同。
Internet 连接
通过机器配置扩展安装的代理必须能够访问来宾配置分配列出的内容包,并向机器配置服务报告状态。 VM 可以使用 TCP 端口 443 上的出站 HTTPS 进行连接,或者使用专用网络提供的连接。
若要了解有关专用网络的详细信息,请参阅以下文章:
安装扩展
可以直接从 Azure CLI 或 PowerShell 安装和部署机器配置扩展。 Azure 资源管理器 (ARM)、Bicep 和 Terraform 也有部署模板。 有关部署模板的详细信息,请参阅 Microsoft.GuestConfiguration guestConfigurationAssignments。
注意
在以下部署示例中,将 <placeholder>
参数值替换为你的配置的特定值。
部署注意事项
在安装和部署机器配置扩展之前,请查看以下注意事项。
实例名称。 安装机器配置扩展时,扩展的实例名称必须设置为
AzurePolicyforWindows
或AzurePolicyforLinux
。 前面所述的安全基线定义策略需要这些特定的字符串。版本。 默认情况下,所有部署都会更新到最新版本。 除非另外指定,否则
autoUpgradeMinorVersion
属性的值默认为true
。 此功能有助于减轻在发布新版本的机器配置扩展时对更新代码的担忧。自动升级。 机器配置扩展支持
enableAutomaticUpgrade
属性。 当此属性设置为true
时,有新版本时,Azure 会自动升级到最新版本的扩展。Azure Policy。 若要大规模部署最新版本的机器配置扩展(包括身份要求),请按照创建策略分配以识别不合规资源中的步骤进行操作。 使用 Azure Policy 创建以下分配:
其他属性。 不需要在机器配置扩展上包含任何设置或受保护的设置属性。 代理从 Azure REST API 来宾配置分配资源检索此类信息。 例如,
ConfigurationUri
、Mode
和ConfigurationSetting
属性分别按配置进行托管,而不是在 VM 扩展上托管。
Azure CLI
部署适用于 Linux 的扩展:
az vm extension set --publisher Microsoft.GuestConfiguration --name ConfigurationForLinux --extension-instance-name AzurePolicyforLinux --resource-group <myResourceGroup> --vm-name <myVM> --enable-auto-upgrade true
部署适用于 Windows 的扩展:
az vm extension set --publisher Microsoft.GuestConfiguration --name ConfigurationforWindows --extension-instance-name AzurePolicyforWindows --resource-group <myResourceGroup> --vm-name <myVM> --enable-auto-upgrade true
PowerShell
部署适用于 Linux 的扩展:
Set-AzVMExtension -Publisher 'Microsoft.GuestConfiguration' -ExtensionType 'ConfigurationForLinux' -Name 'AzurePolicyforLinux' -TypeHandlerVersion 1.0 -ResourceGroupName '<myResourceGroup>' -Location '<myLocation>' -VMName '<myVM>' -EnableAutomaticUpgrade $true
部署适用于 Windows 的扩展:
Set-AzVMExtension -Publisher 'Microsoft.GuestConfiguration' -ExtensionType 'ConfigurationforWindows' -Name 'AzurePolicyforWindows' -TypeHandlerVersion 1.0 -ResourceGroupName '<myResourceGroup>' -Location '<myLocation>' -VMName '<myVM>' -EnableAutomaticUpgrade $true
ARM 模板
部署适用于 Linux 的扩展:
{
"type": "Microsoft.Compute/virtualMachines/extensions",
"name": "[concat(parameters('VMName'), '/AzurePolicyforLinux')]",
"apiVersion": "2020-12-01",
"location": "[parameters('location')]",
"dependsOn": [
"[concat('Microsoft.Compute/virtualMachines/', parameters('VMName'))]"
],
"properties": {
"publisher": "Microsoft.GuestConfiguration",
"type": "ConfigurationForLinux",
"typeHandlerVersion": "1.0",
"autoUpgradeMinorVersion": true,
"enableAutomaticUpgrade": true,
"settings": {},
"protectedSettings": {}
}
}
部署适用于 Windows 的扩展:
{
"type": "Microsoft.Compute/virtualMachines/extensions",
"name": "[concat(parameters('VMName'), '/AzurePolicyforWindows')]",
"apiVersion": "2020-12-01",
"location": "[parameters('location')]",
"dependsOn": [
"[concat('Microsoft.Compute/virtualMachines/', parameters('VMName'))]"
],
"properties": {
"publisher": "Microsoft.GuestConfiguration",
"type": "ConfigurationforWindows",
"typeHandlerVersion": "1.0",
"autoUpgradeMinorVersion": true,
"enableAutomaticUpgrade": true,
"settings": {},
"protectedSettings": {}
}
}
Bicep 模板
部署适用于 Linux 的扩展:
resource virtualMachine 'Microsoft.Compute/virtualMachines@2021-03-01' existing = {
name: 'VMName'
}
resource windowsVMGuestConfigExtension 'Microsoft.Compute/virtualMachines/extensions@2020-12-01' = {
parent: virtualMachine
name: 'AzurePolicyforLinux'
location: resourceGroup().location
properties: {
publisher: 'Microsoft.GuestConfiguration'
type: 'ConfigurationForLinux'
typeHandlerVersion: '1.0'
autoUpgradeMinorVersion: true
enableAutomaticUpgrade: true
settings: {}
protectedSettings: {}
}
}
部署适用于 Windows 的扩展:
resource virtualMachine 'Microsoft.Compute/virtualMachines@2021-03-01' existing = {
name: 'VMName'
}
resource windowsVMGuestConfigExtension 'Microsoft.Compute/virtualMachines/extensions@2020-12-01' = {
parent: virtualMachine
name: 'AzurePolicyforWindows'
location: resourceGroup().location
properties: {
publisher: 'Microsoft.GuestConfiguration'
type: 'ConfigurationforWindows'
typeHandlerVersion: '1.0'
autoUpgradeMinorVersion: true
enableAutomaticUpgrade: true
settings: {}
protectedSettings: {}
}
}
Terraform 模板
部署适用于 Linux 的扩展:
resource "azurerm_virtual_machine_extension" "gc" {
name = "AzurePolicyforLinux"
virtual_machine_id = "<myVMID>"
publisher = "Microsoft.GuestConfiguration"
type = "ConfigurationForLinux"
type_handler_version = "1.0"
auto_upgrade_minor_version = "true"
}
部署适用于 Windows 的扩展:
resource "azurerm_virtual_machine_extension" "gc" {
name = "AzurePolicyforWindows"
virtual_machine_id = "<myVMID>"
publisher = "Microsoft.GuestConfiguration"
type = "ConfigurationforWindows"
type_handler_version = "1.0"
auto_upgrade_minor_version = "true"
}
Error messages
下表列出了与启用来宾配置扩展相关的可能错误消息。
错误代码 | 说明 |
---|---|
NoComplianceReport | VM 未报告符合性数据。 |
GCExtensionMissing | 缺少机器配置(来宾配置)扩展。 |
ManagedIdentityMissing | 缺少托管标识。 |
UserIdentityMissing | 缺少用户分配的标识。 |
GCExtensionManagedIdentityMissing | 缺少机器配置(来宾配置)扩展和托管标识。 |
GCExtensionUserIdentityMissing | 缺少机器配置(来宾配置)扩展和用户分配的标识。 |
GCExtensionIdentityMissing | 缺少机器配置(来宾配置)扩展、托管标识和用户分配的标识。 |
后续步骤
- 有关 Linux 代理和扩展工作原理的详细信息,请参阅适用于 Linux 的虚拟机扩展和功能。
- 有关 Windows 来宾代理和扩展工作原理的详细信息,请参阅适用于 Windows 的虚拟机扩展和功能。
- 若要安装 Windows 来宾代理,请参阅 Azure 虚拟机代理概述。
- 若要安装 Linux 代理,请参阅了解和使用 Azure Linux 代理。