首页 > 解决方案 > 在 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。”

有任何想法吗?提前致谢!

标签: azureansibleazure-managed-identity

解决方案


如我所见,您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.


推荐阅读