问题描述

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

问题分析

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

解决方法

认证凭据

在使用 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

Java 创建 ARM 虚拟机磁盘类型选择的问题的更多相关文章

  1. Azure Powershell使用已有特殊化非托管磁盘创建ARM虚拟机

    生成已有特殊化非托管磁盘的方法主要有如下两种: 1.使用StorageExplorer存储管理工具,复制特殊化磁盘到一个新的容器下 2.New Portal中删除虚拟机,默认vhd文件会保留在存储账号 ...

  2. Azure CLI2.0 捕获Linux ARM非托管磁盘虚拟机并创建ARM托管磁盘虚拟机

    1.系统内部取消预配VM,创建了测试文件目录及文件:hlm20180904/ hlm20180904.txt 2.使用CLI2.0创建VM映像 a.登陆CLI2.0 备注:在 Azure 中国区使用 ...

  3. 用PowerShell在China Azure创建ARM虚拟机

    Azure目前有两种工作模式:ASM和ARM. 在国内的Azure,我们都是使用ASM的模式.但这种模式有很多限制,比如每个VM必须有一个公网地址,部署不能批量部署等等.ARM对Azure的整体架构做 ...

  4. mysql创建表时字段类型选择与优化

    一.选择原则 1.应该尽量使用可以正确存储数据的最小字段类型 2.选用简单的数据类型,例如:一个是尽量用mysql内置的字段类型来存储日期和时间:另一个存储IP地址尽量用整型:能用整型的尽量不用字符串 ...

  5. kvm创建新虚拟机

    安装图形化管理界面yum install virt-manager -y 安装好之后 新建虚拟机,我使用的方法是使用ISO镜像文件安装 选择镜像 设置内存 如此,一步一步走下去即可,不再截图 创建好之 ...

  6. Python 基于固定 IP 来命名 ARM 虚拟机的实现

    问题描述 希望通过 Python 批量创建 ARM 虚拟机,并且在虚拟机命名时加入固定 IP 信息,方便管理维护. 问题分析 在创建 ARM 虚拟机之前,先创建固定 IP,然后获取固定 IP 地址,创 ...

  7. 利用ARM批量自动化创建SSD多磁盘RAID0虚拟机

    在实际生产环境大规模部署的时候,有时需要能批量创建多台Linux虚拟机,并且该虚拟机带多个硬盘,一些数据库环境,比如MySQL和MongoDB等,会需要超过10000de IOPS, 那么创建的虚拟机 ...

  8. 使用版本 1.0.0 的 Azure ARM SDK for Java 创建虚拟机时报错

    问题描述 我们可以通过使用 Azure ARM SDK 来管理 Azure 上的资源,因此我们也可以通过 SDK 来创建 ARM 类型的虚拟机,当我们使用 1.0.0 版本的 Azure SDK fo ...

  9. Azure Powershell使用已有Image创建ARM非托管磁盘虚拟机

    生成Image映像文件,记录好Image的URL(下面URL为测试URL,具体请参考实际):ImageURL:https://hlmrgstoragen.blob.core.chinacloudapi ...

随机推荐

  1. vue 遇到的一个问题......

    当我用 @tap 或者 @click 触发 ajax事件时,返回的结果会非常慢--- 我也不清楚为啥会这样....(仅仅在chrome下会这样--- 所以 我用 touchend 方法替代了 该方法. ...

  2. php 缓冲函数

    php.ini中有两个关键参数会影响到php的缓存输出控制: output_buffering :on/off 或者整数 .设置为 on 时,将在所有脚本中使用输出缓存控制,不限制缓存的大小.而设置为 ...

  3. P2048 [NOI2010]超级钢琴

    传送门 考虑维护前缀和 $sum[i]$ 那么对于每一个位置 $i$ ,左端点为 $i$ 右端点在 $[i+L-1,i+R-1]$ 区间的区间最大值容易维护 维护三元组 $(o,l,r)$ ,表示左端 ...

  4. 江西理工大学南昌校区排名赛 A: 单身狗的卡片游戏

    题目描述 萌樱花是一只单身狗. 萌樱花今天在桌子上摆出了N张卡片,每张卡片i写着一个数字Ai 他不喜欢卡片上的数字多个出现,于是他想搞点事情拆分它们. 从桌子上选出三张卡,去掉一张数字最大,一张数字最 ...

  5. [转] Spring Integration 系统集成

    [From] http://blog.csdn.net/w_x_z_/article/details/53316618 pring Ingegration 提供了基于Spring的EIP(Enterp ...

  6. Jmeter4.0----HTTP Cookie管理器(9)

    1.说明 在脚本编写的过程中,我们常常会遇到用户登录之后的相关操作,但是又不想去通过脚本先模拟用户登录,再使用cookie值保持登录,做后续的操作的情况下,我们就会用到HTTP Cookie管理. H ...

  7. Vue省市区三级联选择器V-Distpicker的使用

    Vue省市区三级联选择器V-Distpicker的使用 最近用的Vue+Element UI时,有些地方需要用到省市区三联选择器,网上安装并尝试了多种类似的插件,但都因为无法正常实现或是没有眼缘而弃用 ...

  8. curl -w函数

    url_effective 最终获取的url地址,尤其是当你指定给curl的地址存在301跳转,且通过-L继续追踪的情形. http_code http状态码,如200成功,301转向,404未找到, ...

  9. git安装以及webstorm配置git

    下载及安装请移步   https://www.cnblogs.com/specter45/p/github.html 用webstorm上传代码时,首先要先下载git,网址一搜就可以搜到,然后开始配置 ...

  10. npm是什么NPM的全称是Node Package Manager

    npm是什么NPM的全称是Node Package Manager