你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

如何使用 Azure Rest API 创建计算机配置分配

本文提供了部署内置配置项的示例,可以使用 cUrl 或任意您选择的 http 客户端来执行。

在以下各节中,示例包含一个类型属性,其名称以Microsoft.Compute/virtualMachines开头。 来宾配置资源提供程序 Microsoft.GuestConfiguration 是一种需要引用父类型的 扩展资源

若要修改其他资源类型(如 已启用 Arc 的服务器)的示例,请将父类型更改为资源提供程序的名称。 对于已启用 Arc 的服务器,资源提供程序为 Microsoft.HybridCompute/machines

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

  • <base_url> - 对于所有请求,内容相同,但请确保更新提供程序以根据需要在Microsoft.Compute/virtualMachinesMicrosoft.HybridCompute/machines之间进行选择。

    https://management.azure.com/subscriptions/<vm_Subscription>/resourceGroups/<vm_ResourceGroup>/providers/<providerType>
    
  • <vm_name> - 指定用于此次任务的计算机资源名称

  • <configuration_name> - 指定要应用的配置的名称。

  • <api_version> - 选择相应的 API 版本。 最新版本为 2022-01-25.

分配内置配置

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

HTTP PUT https://<baseUrl>/<vm_name>/providers/Microsoft.GuestConfiguration/guestConfigurationAssignments/<configuration_Name>?api-version=2022-01-25

此请求需要授权标头格式的身份验证。 可以使用 Get-AzAccessToken cmdlet 检索 Azure 访问令牌。

Authorization Bearer <yourTokenHere>

请求由以下属性组成,这些属性共同构成了计算机配置分配。

Azure 资源属性

这些字段是示例请求中所述的顶级属性,由以下属性组成。

  • Name - Built-In 计算机配置包的名称
  • Location - 混合计算或虚拟机资源的位置
  • Guest Configuration Parameters - 特定于来宾配置的附加参数的 JSON 对象。

这些参数表示大多数计算机配置分配,并在以下列表中定义:

  • Name - Built-In 计算机配置包的名称
  • Version - 要使用的包的版本。 您可以使用 "1.*" 始终部署软件包的最新版本。
  • ContentUri - 分配自定义包时,此属性定义包含包内容的可访问位置的 URI。
  • ContentHash - 分配自定义包时是必需的。
  • ContentType - BuiltInCustom。 服务会自动设置此值。
  • AssignmentType - 分配一种 工作分配类型
  • ConfigurationParameters - 要传入赋值的参数数组。 这些因套餐而异。
  • ConfigurationSettings - 定义分配的其他配置选项。 有关详细信息,请参阅 配置设置

工作分配类型

分配类型定义来宾配置代理应如何处理分配。 有效值为:

  • Audit - 仅评估与工作分配的符合性。 不要进行任何更改。
  • ApplyAndAutoCorrect - 持续审核并自动更正合规性。
  • ApplyAndMonitor - 应用设置一次,然后监视符合性,但未更正设置。
  • ApplyOnce - 立即应用设置。

配置参数

要传入机器配置分配的键值对的数组。 对于每对:

  • 该键定义要配置的参数的名称。
  • 该值定义了要为分配设置或审核的目标值。

配置设置

这些属性表示计算机配置提供的其他可配置设置。

  • ConfigurationMode - 有效值与 赋值类型相同。 此值必须与 Assignment Type 的值相同。
  • ActionAfterReboot - 在应用重启后控制机器配置代理的操作。
  • RebootIfNeeded - 如果模块支持,则允许在需要重新启动时禁止重启。

示例请求

let baseUrl = https://management.azure.com
let subscription = /subscriptions/<yourSubscription>
let resourceGroup = resourceGroups/<yourResourceGroup>
let provider = providers/Microsoft.Compute
let vm = <yourVm>

curl --request PUT \
  --url '$baseUrl/$subscription/$resourceGroup$/$providers/$vm/providers/Microsoft.GuestConfiguration/guestConfigurationAssignments/AuditSecureProtocol?api-version=2022-01-25' \
  --header 'authorization: Bearer yourKeyHere \
  --header 'content-type: application/json' \
  --data '{
  "properties": {
    "guestConfiguration": {
      "kind": "Machine Configuration",
      "name": "AuditSecureProtocol",
      "version": "1.*",
      "contentType": "Builtin",
      "assignmentType": "Audit",
      "configurationParameter": [
        {
          "name": "[SecureWebServer]s1;MinimumTLSVersion",
          "value": "1.2"
        }
      ],
      "configurationProtectedParameter": [],
      "configurationSetting": {
        "configurationMode": "Audit",
        "allowModuleOverwrite": false,
        "actionAfterReboot": "",
        "refreshFrequencyMins": 5,
        "rebootIfNeeded": true,
        "configurationModeFrequencyMins": 15
      }
    },
    "complianceStatus": "Compliant",
    "assignmentHash": null,
    "provisioningState": "Succeeded",
    "resourceType": null,
    "vmssVMList": null
  },
  "name": "AuditSecureProtocol",
  "location": "westus2"
}'

响应

响应包含创建的分配。 响应会自动定义每个必需的参数。

{
  "properties": {
    "name": "AuditSecureProtocol",
    "location": "<vmLocation",
    "guestConfiguration": {
      "name": "AuditSecureProtocol",
      "version": "1.*",
      "contentType": "Builtin",
      "assignmentType": null,
      "configurationParameter": [
        {
          "name": "[SecureWebServer]s1;MinimumTLSVersion",
          "value": "1.2"
        }
      ],
      "configurationSetting": {
        "configurationMode": "MonitorOnly",
        "allowModuleOverwrite": false,
        "actionAfterReboot": "",
        "refreshFrequencyMins": 5,
        "rebootIfNeeded": true,
        "configurationModeFrequencyMins": 15
      }
    }
  },
  "name": "AuditSecureProtocol",
  "location": "westus2"
}