Azure vm 预配和用户分配的标识?

Posted

技术标签:

【中文标题】Azure vm 预配和用户分配的标识?【英文标题】:Azure vm provisioning and user assigned identity? 【发布时间】:2022-01-12 03:41:15 【问题描述】:

我正在寻求解决尝试应用到我正在使用 python sdk 创建身份的 vm 的问题。代码:

print("Creating VM " + resource_name)
compute_client.virtual_machines.begin_create_or_update(
    resource_group_name,
    resource_name,
    
        "location": "eastus",
        "storage_profile": 
            "image_reference": 
                # Image ID can be retrieved from `az sig image-version show -g $RG -r $SIG -i $IMAGE_DEFINITION -e $VERSION --query id -o tsv`
                "id": "/subscriptions/..image id"
            
        ,
        "hardware_profile": 
            "vm_size": "Standard_F8s_v2"
        ,
        "os_profile": 
            "computer_name": resource_name,
            "admin_username": "adminuser",
            "admin_password": "somepassword",
            "linux_configuration": 
                "disable_password_authentication": True,
                "ssh": 
                    "public_keys": [
                        
                            "path": "/home/adminuser/.ssh/authorized_keys",
                            # Add the public key for a key pair that can get access to SSH to the runners
                            "key_data": "ssh-rsa …"
                        
                    ]
                
            
        ,
        "network_profile": 
            "network_interfaces": [
                
                    "id": nic_result.id
                
            ]
        ,
        "identity": 
            "type": "UserAssigned",
            "user_assigned_identities": 
                "identity_id":  myidentity 
            
        
    

最后一部分,身份:我在网络上的某个地方找到了(不确定在哪里),但是当我尝试使用它时它失败了,出现了一些奇怪的设置/获取错误。如果我注释掉身份:块,虚拟机将创建良好,但我需要用户分配的身份。我今天大部分时间都在尝试查找有关 begin_create_or_update 选项的信息和有关身份的信息,但我没有运气。我正在寻求有关如何将用户分配的 python 标识应用于我正在创建的虚拟机的帮助。

【问题讨论】:

如果回答对您有帮助,请Accept it as an Answer,以便遇到相同问题的其他人可以找到此解决方案并解决他们的问题。 【参考方案1】:

Set and Get 错误是因为您以错误的方式声明标识块。

如果您有一个现有的用户分配的身份,那么您可以使用如下的身份块:

    "identity": 
        "type": "UserAssigned",
        "user_assigned_identities": 
            '/subscriptions/948d4068-xxxxxxxxxxxxxxx/resourceGroups/ansumantest/providers/Microsoft.ManagedIdentity/userAssignedIdentities/mi-identity' : 
            

如您所见,在user_assigned_identities 内它将是:

'User Assigned Identity ResourceID':

而不是

"identity_id":'User Assigned Identity ResourceID'

输出:

【讨论】:

以上是关于Azure vm 预配和用户分配的标识?的主要内容,如果未能解决你的问题,请参考以下文章

Azure 中没有用于 Ansible VM 预配的名为 packaging.version 的模块

在具有外部访问权限的 Azure VM 中预配 SQL Always on

如何使用服务托管标识在 Azure 中使用 Terraform 预配资源

如果用户是用户分配托管标识,则确定 Azure SQL Server 中的用户名

Azure Devops Server 能否预配硬件

具有托管标识(用户分配)的 Azure SQL 无法针对 AAD 使用