azure - 在 Azure 中使用 Ansible 将用户分配的托管标识 (UAMI) 分配给 VM
问题描述
我在 Azure 环境中有一个用户分配的托管标识 (UAMI),我可以使用以下 azure-cli 命令以编程方式将其分配给我选择的任何 VM:
az vm identity assign --ids [Resource ID of VM] --identities [Resource ID of UAMI]
我现在的问题是有没有办法在 Ansible 中做到这一点?当我查看“azure_rm_virtualmachine”模块文档时,似乎没有办法在创建 VM 时分配 UAMI;即使有启用系统管理标识的功能。
我一直在查看“azure_rm_roleassignment”文档,但尽管我尝试通过各种方式插入我的 VM 和 UAMI 的 ID,Ansible 每次都会返回某种错误。例如,使用以下内容:
- name: Create a role assignment
azure_rm_roleassignment:
scope: "/subscriptions/{{ subscriptionID }}/"
assignee_object_id: "{{ VMresourceID }}"
role_definition_id:
"{{ UAMIresourceID }}"
错误消息是:“创建角色分配时出错:Azure 错误:InvalidPrincipalId\n消息:主体 ID 'XXX' 无效。主体 ID 必须是 GUID。”
有任何想法吗?提前致谢!
解决方案
如我所见,您assignee_object_id
使用VM资源ID设置了,我认为这是问题所在。无论您选择系统分配或用户分配的托管标识,assignee_object_id
都应该是它的对象 Id,而不是资源 Id。您可以通过 CLI 命令获取对象 ID:
az vm identity show -g group_name -n vm_name --query principalId -o tsv
查看有关assignee_object_id
.
推荐阅读
- angular - 测试主机组件总是给出虚假的“不是已知元素”错误,可能是 karma-webpack 问题?
- pandas - Pandas:使用一列的值根据两列计算表中的行数
- javascript - 如何使用 vanilla Java Script 仅显示所需部分并隐藏所有其他部分?
- c# - 在 HTML 中显示数组中的数组
- r - 从 DF 中的开始日期为每个 Id 分配每月日期记录
- html - HTML 图像不会链接到页面
- mongodb - 如何使用 docker-compose 使用 mongo 容器设置身份验证和副本集?
- node.js - 如何在mongodb中使用promise显示数据
- python - Python多重继承超级方法调用
- angular - .map 无法从 HttpClient 访问