Azure在创建VM时分配角色
我正在用Java编写一个程序,它在Azure中创建一个VM实例,将脚本上载到一个容器,并在VM中下载和执行脚本。但是,我目前在授予机器对容器的访问权限方面面临困难。我补充说Azure在创建VM时分配角色,azure,azure-virtual-machine,azure-vm-role,Azure,Azure Virtual Machine,Azure Vm Role,我正在用Java编写一个程序,它在Azure中创建一个VM实例,将脚本上载到一个容器,并在VM中下载和执行脚本。但是,我目前在授予机器对容器的访问权限方面面临困难。我补充说 .withSystemAssignedManagedServiceIdentity() 到机器创建。然而,这还不够,显然我还必须向VM添加角色(在我的例子中是存储阅读器)。当我在门户中手动执行此操作时,在机器设置完成后,我会通过SSH看到我具有访问权限。但是在我的Java程序的VM创建过程中有没有一种方法可以做到这一点呢?
.withSystemAssignedManagedServiceIdentity()
到机器创建。然而,这还不够,显然我还必须向VM添加角色(在我的例子中是存储阅读器)。当我在门户中手动执行此操作时,在机器设置完成后,我会通过SSH看到我具有访问权限。但是在我的Java程序的VM创建过程中有没有一种方法可以做到这一点呢?有可能的话,您可以使用这个方法 以下是:
VirtualMachine VirtualMachine=azureResourceManager.virtualMachines()
.define(linuxVMName)
.withRegion(地区)
.withNewResourceGroup(rgName)
.withNewPrimaryNetwork(“10.0.0.0/28”)
.withPrimaryPrivateIPAddressDynamic()
.withNewPrimaryPublicIPAddress(pipName)
.WithPopularLinux最大化(知道inuxVirtualMachine.UBUNTU\u服务器\u 16\u 04\u LTS)
.withRootUsername(用户名)
.withRootPassword(密码)
.带有大小(虚拟机类型.标准\u DS2\u V2)
.使用OSDiskCaching(CachingTypes.READ_WRITE)
.withSystemAssignedManagedServiceIdentity()
.WithSystemAssignedEntityBasedAccessTo(“,BuiltInRole.READER)
.create();
谢谢!你帮我节省了很多时间去寻找和尝试那些不可能奏效的东西!非常感谢。您知道我是否必须指定资源组和存储帐户,或者是否有方法允许从该特定VM访问所有资源组/存储帐户?@vedsil抱歉我的疏忽,看起来在java中也是可能的,我错过了使用SystemAssignedEntityBasedAccess的方法,更新了我的答案。这看起来正是我需要的,我今天就试试!非常感谢。是否还有一个函数可以从例如名称中获取存储帐户ID?@vedsil是的,您可以,只需使用StorageAccount account=azureResourceManager.storageAccounts().getByResourceGroup(“,”);System.out.println(account.id())代码>
VirtualMachine virtualMachine = azureResourceManager.virtualMachines()
.define(linuxVMName)
.withRegion(region)
.withNewResourceGroup(rgName)
.withNewPrimaryNetwork("10.0.0.0/28")
.withPrimaryPrivateIPAddressDynamic()
.withNewPrimaryPublicIPAddress(pipName)
.withPopularLinuxImage(KnownLinuxVirtualMachineImage.UBUNTU_SERVER_16_04_LTS)
.withRootUsername(userName)
.withRootPassword(password)
.withSize(VirtualMachineSizeTypes.STANDARD_DS2_V2)
.withOSDiskCaching(CachingTypes.READ_WRITE)
.withSystemAssignedManagedServiceIdentity()
.withSystemAssignedIdentityBasedAccessTo("<storage-account-resource-id>", BuiltInRole.READER)
.create();