繁体   English   中英

具有启动任务的Windows Azure虚拟机

[英]Windows Azure Virtual Machine with Startup Task

是否可以通过API将(参数化的)启动任务添加到Windows Azure虚拟机? 启动计算机后,我需要执行一个cmdlet,并且代码取决于两个参数,这两个参数对于每台计算机而言都是不同的。 我知道对于Web / Worker角色来说很容易做到这一点,但是对于虚拟机也可以做到吗?

对于VM的首次运行,您可以通过CustomData注入启动任务。 这适用于Linux和Windows VM。 您只需要根据REST API文档对文件(无论是文本文件还是二进制文件)进行正确的64位基础编码。

CustomData放在特定位置的文件中,您可以使用查找该文件的代码,并根据需要采取某种启动操作:

  • Windows: %SYSTEMDRIVE%\\AzureData\\CustomData.bin
  • Linux: /var/lib/waagent/CustomData

注意:此请求也将添加到CLI(拉取请求已可用-不确定是否在最新版本中)。

编辑是的,自定义数据现在是Azure CLI的一部分,作为azure vm create的参数,因此无需自己搞乱base-64编码:

在此处输入图片说明

否。当前没有开箱即用的功能。

但是,无论如何,您都将要处理VM,因此可以创建自己的映像。 您可以在RunOnce注册表项中注册“启动任务”。 然后使用此设置sysprep OS。

这样,您基本上将拥有一个启动任务,该任务将在您的计算机首次启动时执行,并且不会在随后的VM重新启动时执行。

对于Web / Worker角色,将参数纳入VM的代码并不容易。 对于您想要的任何内容,您都必须直接查询Azure管理API。 从运行在Azure VM上的代码中可以获得的唯一属性基本上是常规的OS属性-即主机名,主机IP地址。 您甚至都不知道您的云服务名称,也不知道您的虚拟IP地址(可以通过whatismyip.net或类似服务通过服务找到)。 因此,我的方法是将参数放入Azure表存储中,并使用计算机名称作为rowKey。 因此,我可以基于VM名称存储任何特定于VM的值。 然后,我的“启动”任务将查询表存储,并提供我的主机名作为rowKey(以及一些常见的分区键模式),以便它获取所有必需的设置。

使用IaaS Management Studio,您可以设置启动脚本,该启动脚本将在VM启动时运行。 总之,它会在检测到Powershell端口打开时激活远程Powershell并远程运行脚本。

我是该工具的开发人员,但我实际上并没有真正理解“参数化”的含义,换句话说,您希望脚本可以访问VM信息吗?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM