Api 在已部署的缩放集实例上运行自定义脚本扩展

Api 在已部署的缩放集实例上运行自定义脚本扩展,api,powershell,azure,azure-vm-scale-set,Api,Powershell,Azure,Azure Vm Scale Set,目前,作为我们软件解决方案的一部分,我正在使用自定义脚本扩展在我的azure vm服务器上按需运行脚本,我们的另一个开发团队正在将应用程序移动到一个规模集,我不再能够将自定义脚本扩展按需部署到规模集实例。我找到的在规模集实例上运行自定义脚本扩展的唯一解决方案是使用它重新配置部署模板,这种方法对我来说不好,因为脚本应该按需运行,并且经常更改,每次更新模板都是不好的做法 是否仍然可以像在普通虚拟机上一样按需在缩放集实例上配置自定义脚本扩展 vm上常规按需脚本部署的powershell示例: Set-

目前,作为我们软件解决方案的一部分,我正在使用自定义脚本扩展在我的azure vm服务器上按需运行脚本,我们的另一个开发团队正在将应用程序移动到一个规模集,我不再能够将自定义脚本扩展按需部署到规模集实例。我找到的在规模集实例上运行自定义脚本扩展的唯一解决方案是使用它重新配置部署模板,这种方法对我来说不好,因为脚本应该按需运行,并且经常更改,每次更新模板都是不好的做法

是否仍然可以像在普通虚拟机上一样按需在缩放集实例上配置自定义脚本扩展

vm上常规按需脚本部署的powershell示例:

Set-AzureRmVMCustomScriptExtension -ResourceGroupName myResourceGroup `
-VMName myVM `
-Location myLocation `
-FileUri myURL `
-Run 'myScript.ps1' `
-Name DemoScriptExtension
是否仍要在缩放集上配置自定义脚本扩展 像普通虚拟机上那样的按需实例

目前,Azure不支持这一点

我们只能在设置缩放集时使用VMS自定义脚本安装软件


有关VMS扩展的更多信息,请参阅此。

我使用PowerShell和ARM JSON模板找到了解决方法(我使用的是PowerShell版本
5.1
)。在json模板的
virtualmachineeprofile
下的
commandToExecute
中,指定一个几乎总是更改的值,它将强制命令在每次部署模板时重新执行以运行。您将在我添加的模板中看到:
'-Date',deployment().name
命令执行
deployment().name
的值在my
New AzureRmResourceGroupDeployment
命令中指定为:

-Name$($(获取日期-格式为“MM\u dd\u yyyy\u HH\u MM”)

部署名称基于日期和时间,每分钟不同

PowerShell命令:

New-AzureRmResourceGroupDeployment -ResourceGroupName $ResourceGroupName -TemplateFile $PathToJsonTemplate -TemplateParameterFile $PathToParametersFile -Debug -Name $($(Get-Date -format "MM_dd_yyyy_HH_mm")) -force
在我的脚本中,
virtualmachineeprofile
下的自定义脚本扩展部分如下所示(请注意
commandToExecute
):

这将允许您在已部署的虚拟机规模集上更新自定义脚本扩展。我希望这有帮助

"virtualMachineProfile": {
                    "extensionProfile": {
                        "extensions": [
                            {
                                "type": "Microsoft.Compute/virtualMachines/extensions",
                                "name": "MyExtensionName",
                                "location": "[parameters('location')]",
                                "properties": {
                                    "publisher": "Microsoft.Compute",
                                    "type": "CustomScriptExtension",
                                    "typeHandlerVersion": "1.8",
                                    "autoUpgradeMinorVersion": true,
                                    "settings": {
                                        "fileUris": [
                                            "[concat(parameters('customScriptExtensionSettings').storageAccountUri, '/scripts/MyScript.ps1')]"
                                        ],
                                        "commandToExecute": "[concat('powershell -ExecutionPolicy Unrestricted -File MyScript.ps1', ' -Date ', deployment().name)]"
                                    },
                                    "protectedSettings": {
                                        "storageAccountName": "[parameters('customScriptExtensionSettings').storageAccountName]",
                                        "storageAccountKey": "[listKeys(variables('accountid'),'2015-05-01-preview').key1]"
                                    }
                                }
                            },