部署适用于 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
部署模板
Azure 资源管理器 (ARM)、Bicep 和 Terraform 也有部署模板。 有关部署模板的详细信息,请参阅 Microsoft.GuestConfiguration guestConfigurationAssignments。
注意
在以下部署示例中,将 <placeholder> 参数值替换为你的配置的特定值。
部署注意事项
在安装和部署机器配置扩展之前,请查看以下注意事项。
实例名称。 安装机器配置扩展时,扩展的实例名称必须设置为 AzurePolicyforWindows 或 AzurePolicyforLinux。 前面所述的安全基线定义策略需要这些特定的字符串。
版本。 默认情况下,所有部署都会更新到最新版本。 除非另外指定,否则 autoUpgradeMinorVersion 属性的值默认为 true。 此功能有助于减轻在发布新版本的机器配置扩展时对更新代码的担忧。
自动升级。 机器配置扩展支持 enableAutomaticUpgrade 属性。 当此属性设置为 true 时,有新版本时,Azure 会自动升级到最新版本的扩展。 有关详细信息,请参阅 Azure 中 VM 和虚拟机规模集的自动扩展升级。
Azure Policy。 若要大规模部署最新版本的机器配置扩展(包括身份要求),请按照创建策略分配以识别不合规资源中的步骤进行操作。 使用 Azure Policy 创建以下分配:
其他属性。 不需要在机器配置扩展上包含任何设置或受保护的设置属性。 代理从 Azure REST API 来宾配置分配资源检索此类信息。 例如,ConfigurationUri、Mode 和 ConfigurationSetting 属性分别按配置进行托管,而不是在 VM 扩展上托管。
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: {}
}
}
部署适用于 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"
}
错误消息
下表列出了与启用来宾配置扩展相关的可能错误消息。
| 错误代码 |
说明 |
|
NoComplianceReport |
VM 未报告符合性数据。 |
|
GCExtensionMissing |
缺少机器配置(来宾配置)扩展。 |
|
ManagedIdentityMissing |
缺少托管标识。 |
|
UserIdentityMissing |
缺少用户分配的标识。 |
|
GCExtensionManagedIdentityMissing |
缺少机器配置(来宾配置)扩展和托管标识。 |
|
GCExtensionUserIdentityMissing |
缺少机器配置(来宾配置)扩展和用户分配的标识。 |
|
GCExtensionIdentityMissing |
缺少机器配置(来宾配置)扩展、托管标识和用户分配的标识。 |
后续步骤