在 Azure VM 上自动执行启动任务的最简单方法是什么?



我当前的应用程序场景要求我同时启动几个VM和一些启动任务(每个VM上的启动任务触发相同的脚本,但参数不同)。以前在EC2中,我可以轻松地启动许多EC2实例,然后使用Windows任务调度程序轻松地触发可执行文件,读取每个实例的用户数据中的数据,然后一切都完成了。

我在Azure中尝试了同样的方法,但发现了许多问题:

  1. 尝试使用任务调度程序并"在启动时"启动任务,但由于系统准备后用户信息丢失,因此无法启动相同的任务
  2. 已尝试gpedit.msc并指定启动脚本。不行。我不知道为什么
  3. 尝试使用任务调度程序并在特定时间点启动任务。不行。我收到一条错误消息,上面写着"操作员或管理员拒绝了请求"

那么,在Azure虚拟机中自动化启动任务的最简单方法是什么?

你考虑过使用Azure powershell吗?

  1. 您可以使用Start-AzureVM-cmdlet来启动虚拟机
  2. 您可以使用以下内容

启动的代码片段:

$vmuri = Get-AzureWinRMUri -ServiceName $VMName
#region start hpc-azure-nodes
Invoke-Command -ConnectionUri $vmuri -Credential $credential {
    #start your tasks with the according parameters
} -ArgumentList

一个相当理想的方法是在Azure中创建一个headvm并安装一个HPC集群管理器。利用HPC集群管理器,您可以在您的限制范围内提供任意数量的Azure计算节点,部署您的软件,并从集群管理器集中启动/停止您的软件。

此外,HPC集群管理器还提供了许多有用的功能:

  • 添加/删除节点
  • 通过rdp连接到每个节点
  • 查看作业的日志记录信息
  • 还有更多

还有一个HPC powershell,它为自动化提供了一个良好的环境。诚然,这种方法需要付出更多的努力,但从长远来看,它几乎肯定会得到回报

我认为您正在寻找的是PowerShell Desired State Configuration(DSC)。

这是PowerShell 4.0中引入的管理平台。通过为系统中的每个节点提供所需状态的描述,您可以使用它来配置VM或服务器集。基本上,你可以描述你希望服务器在启动时处于的状态,如果配置发生了漂移,它会纠正它

DSC脚本可以:

  • 管理注册表项
  • 复制文件和文件夹
  • 运行PowerShell脚本
  • 部署软件
  • 管理服务器角色
  • 打开/关闭Windows功能

以下是blog.msdn.com上的一个快速教程,将帮助您入门。

最新更新