Java 创建 ARM 虚拟机磁盘类型选择的问题

问题描述

Azure 门户创建 ARM 虚拟机时,我们直接可以选择虚拟机的磁盘类型,但是在Azure Management Libraries for Java的 API 中我们无法找到直接设置磁盘类型的 API.默认创建的磁盘类型是 HDD,如何通过 API 设置磁盘类型?

问题分析

系统磁盘或数据磁盘的类型取决于使用的存储账户类型,如果是基于普通存储账户创建的磁盘,则磁盘类型为 HDD;如果是基于高级存储创建的磁盘,则磁盘类型为 SDD。更多信息参考:

关于 Azure Windows VM 的磁盘和 VHD(磁盘类型小节)

高性能高级存储以及非托管 Azure VM 磁盘

解决方法

认证凭据

在使用 Azure Management Libraries for Java 时,我们需要通过 AD Application 进行授权认证。建议使用最新版 Powershell 按以下脚本操作:

复制

# 1.在 PowerShell 中,登录 Azure 账户

Login-AzureRmAccount -EnvironmentName AzureChinaCloud

# 2.选择当前订阅 ID

Set-AzureRmContext -SubscriptionId "订阅 ID"

# 3.创建 AD Application

$azureAdApplication = New-AzureRmADApplication -DisplayName "georgeapp" -HomePage "https://www.georgeapp.org" -IdentifierUris "https://www.georgeapp.org/example" -Password "1QAZxsw2"

$azureAdApplication

# 4.为你的 AD 应用创建服务凭证

New-AzureRmADServicePrincipal -ApplicationId $azureAdApplication.ApplicationId

# 5.为服务凭证授权。如果想了解更多内容,请参考:https://azure.microsoft.com/en-us/documentation/articles/role-based-access-control-what-is/

New-AzureRmRoleAssignment -RoleDefinitionName Contributor -ServicePrincipalName $azureAdApplication.ApplicationId

执行上述操作后,就可以获取可用的认证凭据信息:

tentant-id:第二步执行完成后返回

application-id:第三步执行完成后返回

application-password:第三步中设置的 Password

代码实现

复制

public void createWindows(

String resourceGroupName,

String vmName,

String vmStorageAccountName,

String vmUserName,

String vmPassword,

KnownWindowsVirtualMachineImage vmImage,

Region vmRegion,

VirtualMachineSizeTypes vmSize) throws Exception {

if (azure == null) {

return;

}

StorageAccount storageAccount =azure

.storageAccounts()

.getByGroup(resourceGroupName, vmStorageAccountName);

VirtualMachine windowsVM = azure

.virtualMachines()

.define(vmName)

.withRegion(vmRegion)

.withNewResourceGroup(resourceGroupName)

.withNewPrimaryNetwork("10.0.0.0/28")

.withPrimaryPrivateIpAddressDynamic()

.withoutPrimaryPublicIpAddress()

.withPopularWindowsImage(vmImage)

.withAdminUserName(vmUserName)

.withPassword(vmPassword)

.withNewDataDisk(10)

.withExistingStorageAccount(storageAccount)

.withSize(vmSize).create();

}

@org.junit.Test

public void test() throws Exception {

VmOperation vmOp = new VmOperation(

"tentant-id",

"application-id",

"application-password",

"subId");

vmOp.createWindows(

"资源组",

"虚拟机名称",

"存储账户名称",

"虚拟机 RDP 用户名",

"虚拟机 RDP 密码",

"虚拟机 Image",

"虚拟机 Region",

"虚拟机 Size");

测试结果

设定为普通存储账户

设定为高级存储账户                                    立即访问http://market.azure.cn

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 本文内容 问题描述 问题分析 解决方法 问题描述 在Azure 门户创建 ARM 虚拟机时,我们直接可以选择虚拟机...
    ITknight阅读 1,351评论 0 0
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,095评论 19 139
  • 为了增强虚拟机 (VM) 的安全性以及符合性,可以加密 Azure 中的虚拟磁盘。 磁盘是使用 Azure 密钥保...
    ITknight阅读 4,785评论 0 0
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 33,273评论 18 399
  • 忘了有多久 再也没有抬头望望星空 数一下那闪亮的星 忘了有多久 再也没有执笔画丹青 触摸那很远亦很近的风景 忘了有...
    依依惜若阅读 1,351评论 12 9

友情链接更多精彩内容