如何使用模板创建来宾配置分配
将来宾配置包分配给多台计算机的最佳方法是使用 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 提供程序 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"
}
}
}
后续步骤
- 阅读来宾配置概述。
- 设置自定义来宾配置包开发环境。
- 为来宾配置创建包项目。
- 从开发环境测试包项目。
- 发布包项目,以便计算机可以访问它。
- 使用
GuestConfiguration
模块创建 Azure Policy 定义,用于大规模管理环境。 - 使用 Azure 门户分配自定义策略定义。
- 了解如何查看来宾配置策略分配的合规性详细信息。