AzureVM简介

Hong Ooi公司

AzureVM是一个用于与Azure中的虚拟机和虚拟机规模集进行交互的包。您可以从R命令行部署、启动、关闭、运行脚本、取消分配和删除VM和缩放集。它使用由AzureRMR包管理虚拟机资源和模板。

虚拟机

这里有一个简单的例子。我们使用默认设置创建虚拟机,运行shell命令,调整虚拟机大小,然后将其删除。

图书馆(AzureVM)

子<- AzureRMR公司::获取azure登录()$
    获取订阅(“子id”)

#从订阅对象调用create_vm()将在其自己的资源组中创建vm
#默认为Ubuntu 18.04虚拟机,大小Standard_DS3_v2,通过SSH密钥登录
#调用sub$list_vm_sizes()获取您所在地区的可用大小
虚拟机<- 附属的$创建_vm(“myubuntuvm”,用户配置(“我的名字”,“~/.ssh/id_rsa.pub”),
                    位置=“澳大利亚”)

#VM使用的一些资源
虚拟机$获取vnet()
虚拟机$获取公共信息源()
虚拟机$获取磁盘(_D)(“操作系统”)

#远程运行shell脚本或命令(将是Windows VM上的PowerShell)
虚拟机$运行脚本(“echo hello world!>/tmp/hello.txt”)

# ... 然后停下来
虚拟机$停止()

# ... 并调整大小
虚拟机$调整大小(“Standard_DS4_v2”)

# ... 并将其删除(可以对其自己组中的VM异步执行此操作)
虚拟机$删除()

AzureVM附带了许多预定义的配置,用于部署常用的VM映像。例如,要创建可通过SSH、JupyterHub和RStudio Server访问的Ubuntu DSVM:

附属的$创建_vm(“mydsvm”,用户配置(“我的名字”,“~/.ssh/id_rsa.pub”),配置=“ubuntu_dsvm”,
              位置=“澳大利亚东部”)

要创建可通过RDP访问的Windows Server 2019虚拟机,请执行以下操作:

附属的$创建_vm(“mywinvm”,用户配置(“我的名字”,密码=“使用-strong密码!”),配置=“windows_2019”,
              位置=“澳大利亚东部”)

可用的预定义配置包括ubuntu_18.04(默认设置),ubuntu_16.04,ubuntu_dsvm,2019年窗口,2016年窗口,windows _ dsvm,rhel_7.6,铑-8,中心_7.5,centos_7.6,debian_8_背靠背debian_9_背靠背。您可以将这些参数与其他几个参数结合起来,根据您的需要自定义VM部署:

#Windows Server 2016,附带500GB数据磁盘,不可公开访问
附属的$创建_vm(“mywinvm2”,用户配置(“我的名字”,密码=“使用-strong密码!”),
              尺寸=“标准_DS4_v2”,配置=“windows_2016”,数据磁盘=500,知识产权=无效的,
              位置=“澳大利亚”)

#Ubuntu DSVM,支持GPU
附属的$创建_vm(“mydsvm”,用户配置(“我的名字”,“~/.ssh/id_rsa.pub”),尺寸=“标准_NC12”,
              配置=“ubuntu_dsvm_ss”,
              位置=“澳大利亚”)

#Red Hat VM,提供HTTP/HTTPS服务
附属的$创建_vm(“myrhvm”,用户配置(“我的名字”,“~/.ssh/id_rsa.pub”),配置=“rhel_8”,
              天然气=nsg配置(列表(nsg_rule_allow_http,nsg_roule_allow _https)),
              位置=“澳大利亚”)

完全定制由vm_配置函数,它还允许您从市场或磁盘指定要部署的映像。(预定义的配置实际上调用vm_配置,每个特定配置都有相应的参数。)

##自定义VM配置:带数据磁盘的Windows 10 Pro 1903
##这假设您拥有有效的Win10桌面许可证
用户<- 用户配置(“我的名字”,密码=“使用-strong密码!”)
图像<- 图像配置(
     出版商=“MicrosoftWindowsDesktop”,
     报价=“窗口-10”,
     库存单位=“19h1-pro”
)
数据磁盘<- 列表(
    数据磁盘配置(250,类型=“高级_LRS”),
    数据磁盘配置(1000,类型=“标准_LRS”)
)
天然气<- nsg配置(
    列表(nsg_rule_allow_rdp)
)
附属的$创建_vm(“mywin10vm”,用户,
    配置=vm_配置(
        图像=图像,
        密钥登录=错误的,
        数据磁盘=数据磁盘,
        天然气=nsg、,
        属性=列表(许可证类型=“Windows_Client”(Windows客户端))
),
    位置=“澳大利亚”
)

虚拟机缩放集

相当于创建_vm对于scaleset,是创建_vm_scaleset方法。默认情况下,新的缩放集将附带负载平衡器和自动缩放器,但其实例将无法从外部访问。

#默认为Ubuntu 18.04 scaleset,大小Standard_DS1_v2
附属的$创建_vm_scaleset(“缪宾图斯”,用户配置(“我的名字”,“~/.ssh/id_rsa.pub”),实例=5,
                       位置=“澳大利亚”)

每个预定义的VM配置都有相应的缩放集配置。要指定低级缩放集选项,请使用缩放集选项功能。以下是一些规模集部署示例:

#Windows Server 2019
附属的$创建_vm_scaleset(“麦文斯”,用户配置(“我的名字”,密码=“使用-strong密码!”),实例=5,
                       配置=“windows_2019_ss”,
                       位置=“澳大利亚”)

#RHEL缩放集,用于HTTP/HTTPS
附属的$创建_vm_scaleset(“myrhels”,用户配置(“我的名字”,“~/.ssh/id_rsa.pub”),实例=5,
                        配置=“rhel_8_ss”,
                        天然气=nsg配置(列表(nsg_rule_allow_http,nsg_roule_allow _https)),
                        位置=“澳大利亚”)

#Ubuntu DSVM、支持GPU、公共实例、无负载平衡器或自动缩放器
附属的$创建_vm_scaleset(“mydsvmss”,用户配置(“我的名字”,“~/.ssh/id_rsa.pub”),实例=5,
                       尺寸=“标准_NC6”,配置=“ubuntu_dsvm_ss”,
                       选项=缩放集选项(公众=真的),
                       负载平衡器=无效的,自动标尺=无效的,
                       位置=“澳大利亚”)

#大型Debian尺度集(多个放置组),使用点虚拟机(低优先级)
#需要将实例大小设置为支持低功耗
附属的$创建_vm_scaleset(“聚酯薄膜”,用户配置(“我的名字”,“~/.ssh/id_rsa.pub”),实例=10,
                       尺寸=“标准_DS3_v2”,配置=“debian_9_backports_ss”,
                       选项=缩放集选项(优先级=“地点”,大比例尺集=真的),
                       位置=“澳大利亚”)

如果您有一个大的缩放集,那么使用缩放集实例可能会很乏味,因为R一次只能连接到一个实例。为了解决这个问题,AzureVM可以利用AzureRMR提供的进程池功能与scaleset并行连接,从而显著提高速度。池在第一次需要时自动创建,并在会话结束时删除。

#这将创建一个最多包含10个与scaleset对话的进程的池
我的慷慨$运行脚本(“echo hello world!>/tmp/hello.txt”)

您可以使用全局azure_vm_min池大小azure_vm_maxpoolsize选项,其默认值分别为2和10。要关闭并行连接,请设置选项(azure_vm_maxpoolsize=0)。请注意,池大小与比例尺集规模;它只控制可以同时与AzureVM通信的实例数量。

共享资源

通过提供AzureRMR,您还可以在部署中包含现有Azure资源az_源对象作为参数创建_vm创建_vm_scaleset呼叫。例如,在这里我们创建了一个VM和一个缩放集,它们共享一个虚拟网络/子网。

##同一资源组和虚拟网络中的VM和scaleset
#首先,创建resgroup
rg公司<- 附属的$创建资源组(“rgname”,“澳大利亚”)

#创建主控形状
rg公司$创建_vm(“mastervm”,用户配置(“我的名字”,“~/.ssh/id_rsa.pub”))

#获取vnet资源
vnet(虚拟网络)<- rg公司$获取资源(类型=“Microsoft.Network/virtualNetworks”,姓名=“mastervm-vnet”)

#创建缩放集
#由于NSG与vnet关联,我们也不需要创建新的NSG
rg公司$创建_vm_scaleset(“奴隶”,用户配置(“我的名字”,“~/.ssh/id_rsa.pub”),
                      实例=5,vnet(虚拟网络)=vnet、,天然气=无效的)