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

news/2024/7/4 12:41:53

问题描述

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

disk-type

问题分析

系统磁盘或数据磁盘的类型取决于使用的存储账户类型,如果是基于普通存储账户创建的磁盘,则磁盘类型为 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");

测试结果

  • 设定为普通存储账户

    standard-storage-account

  • 设定为高级存储账户

    premium-storage-account                                                               立即访问http://market.azure.cn


http://www.niftyadmin.cn/n/4076675.html

相关文章

toast的简单用法

2019独角兽企业重金招聘Python工程师标准>>> 废话不多说,直接上代码: /*** toast自带的设置图片类型的方法** param view*/ public void btn1(View view) {Toast toast Toast.makeText(MainActivity.this, "带图片的toast", Toast…

Mac登录项损坏了该怎么办

苹果电脑的登录项坏了怎么办,这些无效的登录项实际上在应用程序被删除的时候就没有用了,那么我们要将这些失效的链接删除应该怎么做呢? 这个有两种方法可以删除一个是手动一个是使用软件。 1.如何智能清理mac登陆项? 使用cleanmym…

在ASP中过滤用户输入 提高安全性

安全对于所有应用程序来说都是十分重要的。一个简单应用程序里的某个失误都会造成对数据库或者其他企业资源未经授权的访问,因此安全尤其重要。一种常用的攻击方法是将命令嵌入到用户的回应里,而从用户输入里过滤掉这些非法的字符就能够防止这种攻击。 允…

通过 Powershell 来替换 ARM 模式下虚拟机的网络接口

需求描述 客户在部署完 ARM 模式的虚拟机以后,由于误操作在虚拟机内部禁用了网卡导致远程访问虚拟机受到限制,以下是通过 Powershell 命令来替换原有虚拟网络接口实现虚拟网卡重置功能。 Note 本文只限于 ARM 模式下的虚拟机,经典模式的虚拟机…

Microsoft Visual Studio 发展历史

Microsoft Visual Studio(简称VS)是美国微软公司的开发工具包系列产品。VS是一个基本完整的开发工具集,它包括了整个软件生命周期中所需要的大部分工具,如UML工具、代码管控工具、集成开发环境(IDE)等等。所写的目标代码适用于微软…

把数据插入到数据库的两种方法

把表单中的数据插入到数据库中有两种方法。1.直接使用sql语句的 优点:速度快,不耗资源 缺点:不能传递太长的字段内容,字段比较多时不易排错。 推荐有经验的编程者优先考虑. 具体操作: 假设表单中有以下…

kali linux中goldendict查词慢的问题

2021年3月30日 在kali linux中安装goldendict 我默认使用的还是kali的官网的源 apt install goldendict下载后打开,添加有道词典的来源,并进行启用 添加完成后进行搜索,但是网页结果迟迟不出来,我就发现大事不妙,但我…

sklearn调包侠之KNN算法

天下武功,唯快不破。今天就正式讲解如何通过《sklearn小抄》武林秘籍,成为一代宗师调包侠。欲练此功,必先自宫;就算自宫,未必成功;若不自宫,也能成功。传说江湖(机器学习领域&#x…