Агент мониторинга Microsoft Azure не может обеспечить Terraform
Попытка установить агент MMA как часть развертывания виртуальной машины с использованием Terraform. Я уверен, что ошибка происходит из-за синтаксиса используемого мной расширения, но мне не повезло определить, каким оно должно быть. Агент устанавливает, но не присоединяется к рабочей области Log Analytics. Я храню идентификатор рабочей области и первичный ключ в хранилище ключей и передаю их в Terraform во время выполнения. Из журналов расширений на ВМ похоже, что он получает правильный идентификатор рабочей области, но я не могу сказать, правильно ли он получает ключ. Ниже приведен синтаксис Terraform, который я использую:
resource "azurerm_virtual_machine_extension" "lawks-test" {
name = "MMA_${azurerm_virtual_machine.test.name}"
location = "${azurerm_resource_group.test.location}"
resource_group_name = "${azurerm_resource_group.test.name}"
virtual_machine_name = "${azurerm_virtual_machine.test.name}"
publisher = "Microsoft.EnterpriseCloud.Monitoring"
type = "MicrosoftMonitoringAgent"
type_handler_version = "1.0"
settings = <<SETTINGS
{
"workspaceId": "${data.terraform_remote_state.corerg.on_workspace_id}"
}
SETTINGS
protected_settings = <<PROTECTED_SETTINGS
{
"workspaceKey": "${var.on_laws_key}"
}
PROTECTED_SETTINGS
Ниже показано, что показано в одном из файлов журнала расширений:
11/19/2018 9:43:51 PM +00:00 Managed Service Identity extension (Microsoft.ManagedIdentity.ManagedIdentityExtensionForWindows) not found on this box, automaticManagement will be skipped on this box.
11/19/2018 9:43:51 PM +00:00 HandlerConfig found, default config will be override, CloudType changed to 1
11/19/2018 9:43:51 PM +00:00 GET http://169.254.169.254/metadata/instance?api-version=2017-08-01 with requestId 9a17250a-bfd0-4e4b-b9d3-aa4ceaf9007e
11/19/2018 9:43:52 PM +00:00 azureResourceId from metadata service.
11/19/2018 9:43:52 PM +00:00 automaticManagement not enabled.
11/19/2018 9:43:52 PM +00:00 systemWorkspace provision failed due to AutomaticManagementNotEnabled
11/19/2018 9:43:52 PM +00:00 only configSpecifiedWorkspace available.
11/19/2018 9:43:52 PM +00:00 SettingFile changed, re-apply configuration.
11/19/2018 9:43:52 PM +00:00 Adding workspace /subscriptions/<my_subscription_id>/resourcegroups/resource_group/providers/microsoft.operationalinsights/workspaces/my-workspace.
11/19/2018 9:43:53 PM +00:00 Unknown error during enable command : System.ArgumentException: Value does not fall within the expected range.
at System.Dynamic.ComRuntimeHelpers.CheckThrowException(Int32 hresult, ExcepInfo& excepInfo, UInt32 argErr, String message)
at CallSite.Target(Closure , CallSite , ComObject , String , String , Int32 )
at System.Dynamic.UpdateDelegates.UpdateAndExecute4[T0,T1,T2,T3,TRet](CallSite site, T0 arg0, T1 arg1, T2 arg2, T3 arg3)
at System.Dynamic.UpdateDelegates.UpdateAndExecuteVoid4[T0,T1,T2,T3](CallSite site, T0 arg0, T1 arg1, T2 arg2, T3 arg3)
at Microsoft.EnterpriseCloud.Monitoring.MicrosoftMonitoringAgent.Extension.MMAConfigHelper.AddCloudWorkspace(String workspaceId, String workspaceKey, Nullable`1 cloudType)
at Microsoft.EnterpriseCloud.Monitoring.MicrosoftMonitoringAgent.Extension.EnableProgram.Main(String[] args)
2 ответа
Спасибо за те, что ответили. Я обнаружил, в чем проблема, пытаясь выполнить установку вручную. Ресурс azurerm_log_analytics_workspace имеет 2 атрибута, которые относятся к идентификатору:
id - The Log Analytics Workspace ID
а также
workspace_id - The Workspace (or Customer) ID for the Log Analytics Workspace
Я неправильно пытался использовать "идентификатор", который является неправильным. Как только я использовал атрибут "workspace_id", установка работала нормально... без изменений в форматировании кода Terraform.
Единственное, чего мне не хватает в Terraform, так это документации.
Только что проверил, вот рабочий пример:
resource "azurerm_resource_group" "test" {
name = "acctestRG1"
location = "UK West"
}
resource "azurerm_virtual_network" "test" {
name = "acctvn"
address_space = ["10.0.0.0/16"]
location = "${azurerm_resource_group.test.location}"
resource_group_name = "${azurerm_resource_group.test.name}"
}
resource "azurerm_subnet" "test" {
name = "acctsub"
resource_group_name = "${azurerm_resource_group.test.name}"
virtual_network_name = "${azurerm_virtual_network.test.name}"
address_prefix = "10.0.2.0/24"
}
resource "azurerm_network_interface" "test" {
name = "acctni"
location = "${azurerm_resource_group.test.location}"
resource_group_name = "${azurerm_resource_group.test.name}"
ip_configuration {
name = "testconfiguration1"
subnet_id = "${azurerm_subnet.test.id}"
private_ip_address_allocation = "dynamic"
}
}
resource "azurerm_virtual_machine" "test" {
name = "acctvm1z"
location = "${azurerm_resource_group.test.location}"
resource_group_name = "${azurerm_resource_group.test.name}"
network_interface_ids = ["${azurerm_network_interface.test.id}"]
vm_size = "Standard_DS2_v2"
storage_image_reference {
publisher = "MicrosoftWindowsServer"
offer = "WindowsServer"
sku = "2016-Datacenter-smalldisk"
version = "latest"
}
storage_os_disk {
name = "myosdisk1"
caching = "ReadWrite"
create_option = "FromImage"
managed_disk_type = "Standard_LRS"
}
os_profile {
computer_name = "hostname1"
admin_username = "testadmin"
admin_password = "Password1234!qwe"
}
os_profile_windows_config {
provision_vm_agent = "true"
}
}
resource "azurerm_virtual_machine_extension" "test" {
name = "omsagent"
location = "${azurerm_resource_group.test.location}"
resource_group_name = "${azurerm_resource_group.test.name}"
virtual_machine_name = "${azurerm_virtual_machine.test.name}"
publisher = "Microsoft.EnterpriseCloud.Monitoring"
type = "MicrosoftMonitoringAgent"
type_handler_version = "1.0"
settings = <<SETTINGS
{
"workspaceId": "workspaceId"
}
SETTINGS
protected_settings = <<PROTECTED_SETTINGS
{
"workspaceKey": "workspaceKey"
}
PROTECTED_SETTINGS # NOTICE THIS STARTS EXACTLY AT THE START OF THE STRING
}
если это не помогает, проблема в том, как вы передаете workspaceKey (так что вам не хватает части ключа или чего-то в этом роде)