使用 terraform 创建 azure automation dsc 配置和 dsc 配置节点似乎不起作用
Creating azure automation dsc configuration and dsc configuration node using terraform doesn't seems to be working
作为我发布过程的第一步,我 运行 下面的 terraform 代码
resource "azurerm_automation_account" "automation_account" {
for_each = data.terraform_remote_state.pod_bootstrap.outputs.ops_rg
name = "${local.automation_account_prefix}-${each.key}"
location = each.key
resource_group_name = each.value.name
sku_name = "Basic"
tags = {
environment = "development"
}
}
按预期创建的自动化帐户,我可以在 Azure 门户中看到它们。
我还有创建几个 windows VM 的 terraform 代码,每个 VM 创建都伴随以下内容
resource "azurerm_virtual_machine_extension" "dsc" {
name = "DevOpsDSC"
virtual_machine_id = var.vm_id
publisher = "Microsoft.Powershell"
type = "DSC"
type_handler_version = "2.83"
settings = <<SETTINGS_JSON
{
"configurationArguments": {
"RegistrationUrl": "${var.dsc_server_endpoint}",
"NodeConfigurationName": "${var.dsc_config}",
"ConfigurationMode": "${var.dsc_mode}",
"ConfigurationModeFrequencyMins": 15,
"RefreshFrequencyMins": 30,
"RebootNodeIfNeeded": false,
"ActionAfterReboot": "continueConfiguration",
"AllowModuleOverwrite": true
}
}
SETTINGS_JSON
protected_settings = <<PROTECTED_SETTINGS_JSON
{
"configurationArguments": {
"RegistrationKey": {
"UserName": "PLACEHOLDER_DONOTUSE",
"Password": "${var.dsc_primary_access_key}"
}
}
}
PROTECTED_SETTINGS_JSON
}
结果如下
因此为每个 VM 创建了 VM 扩展,状态显示配置成功。
下一步我运行下面的terraform代码
resource "azurerm_automation_dsc_configuration" "iswebserver" {
for_each = data.terraform_remote_state.pod_bootstrap.outputs.ops_rg
name = "iswebserver"
resource_group_name = each.value.name
automation_account_name = data.terraform_remote_state.ops.outputs.automation_account[each.key].name
location = each.key
content_embedded = "configuration iswebserver {}"
}
resource "azurerm_automation_dsc_nodeconfiguration" "iswebserver" {
for_each = data.terraform_remote_state.pod_bootstrap.outputs.ops_rg
name = "iswebserver.localhost"
resource_group_name = each.value.name
automation_account_name = data.terraform_remote_state.ops.outputs.automation_account[each.key].name
depends_on = [azurerm_automation_dsc_configuration.iswebserver]
content_embedded = file("${path.cwd}/iswebserver.mof")
}
mof文件内容如下
/*
@TargetNode='IsWebServer'
@GeneratedBy=P120bd0
@GenerationDate=02/25/2021 17:33:16
@GenerationHost=D-MJ05UA54
*/
instance of MSFT_RoleResource as $MSFT_RoleResource1ref
{
ResourceID = "[WindowsFeature]IIS";
IncludeAllSubFeature = True;
Ensure = "Present";
SourceInfo = "D:\DSC\testconfig.ps1::5::9::WindowsFeature";
Name = "Web-Server";
ModuleName = "PsDesiredStateConfiguration";
ModuleVersion = "1.0";
ConfigurationName = "TestConfig";
};
instance of OMI_ConfigurationDocument
{
Version="2.0.0";
MinimumCompatibleVersion = "1.0.0";
CompatibleVersionAdditionalProperties= {"Omi_BaseResource:ConfigurationName"};
Author="P120bd0";
GenerationDate="02/25/2021 17:33:16";
GenerationHost="D-MJ05UA54";
Name="TestConfig";
};
在 运行 代码之后我得到了以下结果
配置按预期创建,单击 UI 网格中的配置条目,导致以下内容
意味着节点配置也已创建。我的期望是,对于每个虚拟机,我将看到节点配置为 mof 文件中提供的 运行 配置,但节点 UI 显示空节点
所以我试图手动配置节点以将所有和平连接在一起
失败并显示以下内容
所以我完全被弄糊涂了。一方面,azurerm_virtual_machine_extension 允许创建扩展并将其绑定到自动化帐户。此外还有 azurerm_automation_dsc_configuration 和 azurerm_automation_dsc_nodeconfiguration 允许创建配置和节点配置。但最重要的是,您无法连接所有这些点来创建节点。
只是为了确认配置有效,我在没有使用 azurerm_virtual_machine_extension 的情况下创建了额外的虚拟机,我能够成功地将这个 MV 添加到创建的节点配置中
问题出在 azurerm_virtual_machine_extension dsc_configuration 参数中。该值需要与 azurerm_automation_dsc_nodeconfiguration 资源的名称 属性 相同。
作为我发布过程的第一步,我 运行 下面的 terraform 代码
resource "azurerm_automation_account" "automation_account" {
for_each = data.terraform_remote_state.pod_bootstrap.outputs.ops_rg
name = "${local.automation_account_prefix}-${each.key}"
location = each.key
resource_group_name = each.value.name
sku_name = "Basic"
tags = {
environment = "development"
}
}
按预期创建的自动化帐户,我可以在 Azure 门户中看到它们。
我还有创建几个 windows VM 的 terraform 代码,每个 VM 创建都伴随以下内容
resource "azurerm_virtual_machine_extension" "dsc" {
name = "DevOpsDSC"
virtual_machine_id = var.vm_id
publisher = "Microsoft.Powershell"
type = "DSC"
type_handler_version = "2.83"
settings = <<SETTINGS_JSON
{
"configurationArguments": {
"RegistrationUrl": "${var.dsc_server_endpoint}",
"NodeConfigurationName": "${var.dsc_config}",
"ConfigurationMode": "${var.dsc_mode}",
"ConfigurationModeFrequencyMins": 15,
"RefreshFrequencyMins": 30,
"RebootNodeIfNeeded": false,
"ActionAfterReboot": "continueConfiguration",
"AllowModuleOverwrite": true
}
}
SETTINGS_JSON
protected_settings = <<PROTECTED_SETTINGS_JSON
{
"configurationArguments": {
"RegistrationKey": {
"UserName": "PLACEHOLDER_DONOTUSE",
"Password": "${var.dsc_primary_access_key}"
}
}
}
PROTECTED_SETTINGS_JSON
}
结果如下
因此为每个 VM 创建了 VM 扩展,状态显示配置成功。
下一步我运行下面的terraform代码
resource "azurerm_automation_dsc_configuration" "iswebserver" {
for_each = data.terraform_remote_state.pod_bootstrap.outputs.ops_rg
name = "iswebserver"
resource_group_name = each.value.name
automation_account_name = data.terraform_remote_state.ops.outputs.automation_account[each.key].name
location = each.key
content_embedded = "configuration iswebserver {}"
}
resource "azurerm_automation_dsc_nodeconfiguration" "iswebserver" {
for_each = data.terraform_remote_state.pod_bootstrap.outputs.ops_rg
name = "iswebserver.localhost"
resource_group_name = each.value.name
automation_account_name = data.terraform_remote_state.ops.outputs.automation_account[each.key].name
depends_on = [azurerm_automation_dsc_configuration.iswebserver]
content_embedded = file("${path.cwd}/iswebserver.mof")
}
mof文件内容如下
/*
@TargetNode='IsWebServer'
@GeneratedBy=P120bd0
@GenerationDate=02/25/2021 17:33:16
@GenerationHost=D-MJ05UA54
*/
instance of MSFT_RoleResource as $MSFT_RoleResource1ref
{
ResourceID = "[WindowsFeature]IIS";
IncludeAllSubFeature = True;
Ensure = "Present";
SourceInfo = "D:\DSC\testconfig.ps1::5::9::WindowsFeature";
Name = "Web-Server";
ModuleName = "PsDesiredStateConfiguration";
ModuleVersion = "1.0";
ConfigurationName = "TestConfig";
};
instance of OMI_ConfigurationDocument
{
Version="2.0.0";
MinimumCompatibleVersion = "1.0.0";
CompatibleVersionAdditionalProperties= {"Omi_BaseResource:ConfigurationName"};
Author="P120bd0";
GenerationDate="02/25/2021 17:33:16";
GenerationHost="D-MJ05UA54";
Name="TestConfig";
};
在 运行 代码之后我得到了以下结果
配置按预期创建,单击 UI 网格中的配置条目,导致以下内容
意味着节点配置也已创建。我的期望是,对于每个虚拟机,我将看到节点配置为 mof 文件中提供的 运行 配置,但节点 UI 显示空节点
所以我试图手动配置节点以将所有和平连接在一起
失败并显示以下内容
所以我完全被弄糊涂了。一方面,azurerm_virtual_machine_extension 允许创建扩展并将其绑定到自动化帐户。此外还有 azurerm_automation_dsc_configuration 和 azurerm_automation_dsc_nodeconfiguration 允许创建配置和节点配置。但最重要的是,您无法连接所有这些点来创建节点。
只是为了确认配置有效,我在没有使用 azurerm_virtual_machine_extension 的情况下创建了额外的虚拟机,我能够成功地将这个 MV 添加到创建的节点配置中
问题出在 azurerm_virtual_machine_extension dsc_configuration 参数中。该值需要与 azurerm_automation_dsc_nodeconfiguration 资源的名称 属性 相同。