\"code\":\"UnsupportedRequestContent\",\"message\":\"请求内容格式不正确或不支持。\"}

问题描述 投票:0回答:1

我是 Ansible 新手,我正在尝试使用 ansible 模块 azure_rm_resource 为 Azure VNET 创建 Azure 诊断设置。我收到了这个特定的错误。我不知道如何解决它。任何建议都会有帮助。

Ansible task:

- name: Create Log diagonistics Setting with storage account
         azure_rm_resource:
                url: https://management.azure.com/subscriptions/sub_id/resourceGroups/rg/providers/Microsoft.Network/virtualNetworks/vnet1/providers/Microsoft.Insights/diagnosticSettings/test?api-version=2021-05-01-preview
                method: PUT
                client_id: "{{ client_id }}"
                secret: "{{ secret_val }}"
                tenant: "{{ tenant }}"
                subscription_id: "{{ subscription }}"
                body:
                   properties:
                          storageAccountId: /subscriptions/sub_id/resourceGroups/rg/providers/Microsoft.Storage/storageAccounts/staccount 
                          metrics:
                              category: AllMetrics
                              enabled: true
                          logs:
                              categoryGroup: allLogs
                              enabled: true
                          logAnalyticsDestinationType: null

我已经尝试使用 LoganalyicsworkspaceworkspaceId 仍然存在同样的问题。修改了api版本但是没有用。尝试使用ansible模块azure.azcollection.azure_rm_monitordiagnosticsetting,但尽管我安装了azure.azcollection,但它未被识别。

我想创建/更新 Azure 资源的诊断设置

azure ansible azure-rm
1个回答
0
投票
- name: Create Log diagonistics Setting with storage account
         azure_rm_resource:
                url: https://management.azure.com/subscriptions/sub_id/resourceGroups/rg/providers/Microsoft.Network/virtualNetworks/vnet1/providers/Microsoft.Insights/diagnosticSettings/test?api-version=2021-05-01-preview

Url 应在引号中转义,并按如下方式替换 sub_id:

url: "https://management.azure.com/subscriptions/{{ subscription }}/resourceGroups/rg/providers/Microsoft.Network/virtualNetworks/vnet1/providers/Microsoft.Insights/diagnosticSettings/test?api-version=2021-05-01-preview"

如果其他字段的值存储在变量中,也可以替换它们。

body:
    properties:
        storageAccountId: /subscriptions/sub_id/resourceGroups/rg/providers/Microsoft.Storage/storageAccounts/staccount 
        metrics:
          category: AllMetrics
          enabled: true
        logs:
          categoryGroup: allLogs
          enabled: true
        logAnalyticsDestinationType: null

您需要将存储帐户 ID 用引号引起来,并根据需要再次替换。

在日志部分,我不相信可以使用

categoryGroup
- 不适用于虚拟网络(Microsoft.Network/virtualNetworks)。使用
category
- 与指标相同,目前唯一支持的类别是
VMProtectionAlerts

另一件事是,类别组是在 2021 年 11 月才引入的,您使用的 API 版本是 2021 年 5 月预览版,因此如果您将来需要指定类别组,则需要使用较新的管理 API 版本.

所以,你的 yaml 应该是这样的:

Ansible task:

- name: Create Log diagonistics Setting with storage account
         azure_rm_resource:
                url: "https://management.azure.com/subscriptions/{{ subscription }}/resourceGroups/rg/providers/Microsoft.Network/virtualNetworks/vnet1/providers/Microsoft.Insights/diagnosticSettings/test?api-version=2021-05-01-preview"
                method: PUT
                client_id: "{{ client_id }}"
                secret: "{{ secret_val }}"
                tenant: "{{ tenant }}"
                subscription_id: "{{ subscription }}"
                body:
                   properties:
                          storageAccountId: "/subscriptions/{{ subscription }}/resourceGroups/rg/providers/Microsoft.Storage/storageAccounts/staccount 
                          metrics:
                              category: AllMetrics
                              enabled: true
                          logs:
                              category: VMProtectionAlerts
                              enabled: true
                          logAnalyticsDestinationType: null
© www.soinside.com 2019 - 2024. All rights reserved.