我是 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 资源的诊断设置
- 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