如何使用模板创建来宾配置分配

将来宾配置包分配给多台计算机的最佳方法是使用 Azure Policy。 也可以将来宾配置包分配给单台计算机。

内置配置和自定义配置

若要将来宾配置包分配给单台计算机,请修改以下示例。 有一种情况。

  • 使用指向已发布的包的链接,将自定义配置应用于计算机。

扩展其他资源类型

在以下每个部分,示例都包含一个名称以 Microsoft.Compute/virtualMachines 开头的类型属性。 来宾配置资源提供程序 Microsoft.GuestConfiguration 是必须引用父类型的扩展资源

将以下“<>”字段替换为特定于你的环境的值:

  • <vm_name>:配置将应用到的计算机资源的名称
  • <configuration_name>:要应用的配置的名称
  • <vm_location>:将在其中创建来宾配置分配的 Azure 区域
  • <Url_to_Package.zip>:对于自定义内容包,为指向 .zip 文件的 HTTPS 链接
  • <SHA256_hash_of_package.zip>:对于自定义内容包,使用 .zip 文件的 SHA256 哈希

使用 Azure 资源管理器模板分配配置

可以部署包含来宾配置分配资源的 Azure 资源管理器模板

以下示例分配自定义配置。

{
    "apiVersion": "2020-06-25",
    "type": "Microsoft.Compute/virtualMachines/providers/guestConfigurationAssignments",
    "name": "<vm_name>/Microsoft.GuestConfiguration/<configuration_name>",
    "location": "<vm_location>",
    "dependsOn": [
        "Microsoft.Compute/virtualMachines/<vm_name>"
    ],
    "properties": {
        "guestConfiguration": {
            "name": "<configuration_name>",
            "contentUri": "<Url_to_Package.zip>",
            "contentHash": "<SHA256_hash_of_package.zip>",
            "assignmentType": "ApplyAndMonitor"
        }
    }
}

以下示例分配 AzureWindowBaseline 内置配置。

{
    "apiVersion": "2020-06-25",
    "type": "Microsoft.Compute/virtualMachines/providers/guestConfigurationAssignments",
    "name": "<vm_name>/Microsoft.GuestConfiguration/<configuration_name>",
    "location": "<vm_location>",
    "dependsOn": [
        "Microsoft.Compute/virtualMachines/<vm_name>"
    ],
    "properties": {
        "guestConfiguration": {
            "name": "AzureWindowsBaseline",
            "version": "1.*",
            "assignmentType": "ApplyAndMonitor",
            "configurationParameter": [
            {
                "name": "Minimum Password Length;ExpectedValue",
                "value": "16"
            },
            {
                "name": "Minimum Password Length;RemediateValue",
                "value": "16"
            },
            {
                "name": "Maximum Password Age;ExpectedValue",
                "value": "75"
            },
            {
                "name": "Maximum Password Age;RemediateValue",
                "value": "75"
            }
        ]
        }
    }
}

使用 Bicep 分配配置

可以使用 Azure Bicep 来部署来宾配置分配。

以下示例分配自定义配置。

resource myVM 'Microsoft.Compute/virtualMachines@2021-03-01' existing = {
  name: '<vm_name>'
}

resource myConfiguration 'Microsoft.GuestConfiguration/guestConfigurationAssignments@2020-06-25' = {
  name: '<configuration_name>'
  scope: myVM
  location: resourceGroup().location
  properties: {
    guestConfiguration: {
      name: '<configuration_name>'
      contentUri: '<Url_to_Package.zip>'
      contentHash: '<SHA256_hash_of_package.zip>'
      version: '1.*'
      assignmentType: 'ApplyAndMonitor'
    }
  }
}

以下示例分配 AzureWindowBaseline 内置配置。

resource myWindowsVM 'Microsoft.Compute/virtualMachines@2021-03-01' existing = {
  name: '<vm_name>'
}

resource AzureWindowsBaseline 'Microsoft.GuestConfiguration/guestConfigurationAssignments@2020-06-25' = {
  name: 'AzureWindowsBaseline'
  scope: myWindowsVM
  location: resourceGroup().location
  properties: {
    guestConfiguration: {
      name: 'AzureWindowsBaseline'
      version: '1.*'
      assignmentType: 'ApplyAndMonitor'
      configurationParameter: [
        {
          name: 'Minimum Password Length;ExpectedValue'
          value: '16'
        }
        {
          name: 'Minimum Password Length;RemediateValue'
          value: '16'
        }
        {
          name: 'Maximum Password Age;ExpectedValue'
          value: '75'
        }
        {
          name: 'Maximum Password Age;RemediateValue'
          value: '75'
        }
      ]
    }
  }
}

使用 Terraform 分配配置

可以使用 Terraform部署来宾配置分配。

重要

Terraform 提供程序 azurerm_policy_virtual_machine_configuration_assignment 未更新,还不支持 assignmentType 属性,仅支持执行审核的配置。

另请注意,我们应在必要时在提供商资源中添加 environment = "china"

provider "azurerm" {
  ....
  environment  = "china"
  subscription_id = "<your_subscription_id>"
  ....
  features {}
}

以下示例分配自定义配置。

resource "azurerm_virtual_machine_configuration_policy_assignment" "<configuration_name>" {
  name               = "<configuration_name>"
  location           = azurerm_windows_virtual_machine.example.location
  virtual_machine_id = azurerm_windows_virtual_machine.example.id
  configuration {
    name            = "<configuration_name>"
    contentUri      =  '<Url_to_Package.zip>'
    contentHash     =  '<SHA256_hash_of_package.zip>'
    version         = "1.*"
    assignmentType  = "ApplyAndMonitor
  }
}

以下示例分配 AzureWindowBaseline 内置配置。

resource "azurerm_virtual_machine_configuration_policy_assignment" "AzureWindowsBaseline" {
  name               = "AzureWindowsBaseline"
  location           = azurerm_windows_virtual_machine.example.location
  virtual_machine_id = azurerm_windows_virtual_machine.example.id
  configuration {
    name    = "AzureWindowsBaseline"
    version = "1.*"
    parameter {
      name  = "Minimum Password Length;ExpectedValue"
      value = "16"
    }
    parameter {
      name  = "Minimum Password Length;RemediateValue"
      value = "16"
    }
    parameter {
      name  = "Minimum Password Age;ExpectedValue"
      value = "75"
    }
    parameter {
      name  = "Minimum Password Age;RemediateValue"
      value = "75"
    }
  }
}

后续步骤