AzureVmssDeployment@1 - Azure VM 规模集部署 v1 任务

部署虚拟机规模集映像。

注释

此版本的任务使用 Azure RBAC 连接到 Azure 存储。 有关详细信息,请参阅 配置 Azure RBAC 以访问 Azure 存储

语法

# Azure VM scale set deployment v1
# Deploy a virtual machine scale set image.
- task: AzureVmssDeployment@1
  inputs:
  # Azure Details
    azureSubscription: # string. Alias: ConnectedServiceName. Required. Azure subscription. 
    action: 'Update image' # 'Update image' | 'Configure application startup'. Required. Action. Default: Update image.
    vmssName: # string. Required. Virtual Machine scale set name. 
    vmssOsType: # 'Windows' | 'Linux'. Required. OS type. 
  # Image Details
    #imageUrl: # string. Required when action = Update image || action = UpdateImage. Image URL. 
  # Configure start-up
    #customScriptsDirectory: # string. Optional. Use when action = Configure application startup || action = Update image || action = UpdateImage. Custom script directory. 
    #customScript: # string. Optional. Use when action = Configure application startup || action = Update image || action = UpdateImage. Command. 
    #customScriptArguments: # string. Optional. Use when action = Configure application startup || action = Update image || action = UpdateImage. Arguments. 
    #customScriptsStorageAccount: # string. Optional. Use when action = Configure application startup || action = Update image || action = UpdateImage. Azure storage account where custom scripts will be uploaded. 
  # Advanced
    #skipArchivingCustomScripts: false # boolean. Skip Archiving custom scripts. Default: false.

输入

azureSubscription - Azure 订阅
输入别名ConnectedServiceName. string。 必填。

选择规模集的 Azure 资源管理器订阅。


action - 操作
string。 必填。 允许的值:Update image(使用映像更新 VM 规模集),Configure application startup(在 VM 规模集上运行自定义脚本 VM 扩展)。 默认值:Update image

选择使用 VHD 映像更新 VM 规模集和/或使用自定义脚本 VM 扩展运行部署/安装脚本。
VHD 映像方法更适合快速缩放和执行回滚。 扩展方法对于部署后配置、软件安装或任何其他配置/管理任务非常有用。
只有在使用自定义映像创建 VM 规模集时,才能使用 VHD 映像更新 VM 规模集,如果 VM 规模集是使用 Azure 中提供的平台/库映像创建的,则更新将失败。
自定义脚本 VM 扩展方法可用于使用自定义映像或平台/库映像创建的 VM 规模集。


vmssName - 虚拟机规模集名称
string。 必填。

要使用 VHD 映像或使用自定义脚本 VM 扩展更新的 VM 规模集的名称。


vmssOsType - OS 类型
string。 必填。 允许的值:WindowsLinux

选择 VM 规模集的作系统类型。


imageUrl - 图像 URL
stringaction = Update image || action = UpdateImage时是必需的。

指定 VHD 映像的 URL。 如果它是 Azure 存储 blob URL,则存储帐户位置应与规模集位置相同。


customScriptsDirectory - 自定义脚本目录
string。 可选。 当 action = Configure application startup || action = Update image || action = UpdateImage时使用。

包含将使用自定义脚本 VM 扩展运行的自定义脚本的目录的路径。 扩展方法适用于部署后配置、应用程序/软件安装或任何其他应用程序配置/管理任务。 例如:该脚本可以设置应用程序使用的机器级环境变量,如数据库连接字符串。


customScript - 命令
string。 可选。 当 action = Configure application startup || action = Update image || action = UpdateImage时使用。

将使用自定义脚本 VM 扩展运行的脚本。 此脚本可以调用目录中的其他脚本。 将使用下面传递的参数调用该脚本。
此脚本与此类参数共轭可用于执行命令。 例如:
1. Update-DatabaseConnectionStrings.ps1 -clusterType dev -user $(dbUser) -password $(dbUserPwd) 将更新 Web 应用程序 web.config 中的连接字符串。
2. install-secrets.sh --key-vault-type prod -key serviceprincipalkey 将创建一个包含服务主体密钥的加密文件。


customScriptArguments - 参数
string。 可选。 当 action = Configure application startup || action = Update image || action = UpdateImage时使用。

将使用传递的参数调用自定义脚本。 可以使用 Build/Release 变量,这使得使用 secret 变得容易。


customScriptsStorageAccount - 将上传自定义脚本的 Azure 存储帐户
string。 可选。 当 action = Configure application startup || action = Update image || action = UpdateImage时使用。

自定义脚本扩展在 VM 规模集中的每个虚拟机上下载并执行你提供的脚本。 这些脚本将存储在此处指定的存储帐户中。 指定预先存在的 ARM 存储帐户。


skipArchivingCustomScripts - 跳过存档自定义脚本
boolean。 默认值:false

默认情况下,此任务会创建包含自定义脚本的目录的压缩存档。 这可以提高上传到 Azure 存储时的性能和可靠性。 如果未选中,则不会完成存档,并且将单独上传所有文件。


任务控制选项

除任务输入之外,所有任务都具有控制选项。 有关详细信息,请参阅 控件选项和常见任务属性

输出变量

没有。

注解

使用此任务部署虚拟机规模集映像。

脚本执行报告为成功,但 VMSS 实例未更新

规模集具有一个升级策略,用于确定 VM 如何使用最新的规模集模型 up-to日期,如果升级策略设置为手动,则必须手动升级每个 VM。 有关详细信息,请参阅 如何使用最新的规模集模型将 VM up-to日期。 可以更改更新策略或手动升级每个 VM。 例如,若要将策略升级到 Automatic,请使用以下 Az CLI 命令:az vmss update --set upgradePolicy.mode=Automatic -g <resource group name> -n <vmss name>

错误:“权限被拒绝:脚本不可执行”

如果尝试运行自定义脚本,但脚本不可执行,则会出现此问题。

若要解决此问题,请先确保 customScript 输入在脚本名称 ./之前没有 'test.sh' 或其他任何内容:

    customScript: 'test.sh'

接下来,请尝试在虚拟机规模集任务之前添加命令行任务:

    - task: CmdLine@2
      inputs:
        script: 'chmod 777 $(System.DefaultWorkingDirectory)/test.sh' 

配置 Azure RBAC 以访问 Azure 存储

此版本的任务使用使用工作负载联合身份验证和 Azure RBAC 配置的 Azure 资源管理器服务连接 来连接到 Azure 存储,而不是存储帐户密钥或共享访问签名 (SAS)。 若要从此任务连接到 Azure 存储,必须将存储帐户上的 “存储 Blob 数据参与者 ”角色分配给为 azureSubscription配置的服务连接的标识。

有关详细信息,请参阅分配 Azure 角色以访问 blob 数据和分配角色的步骤

AzureVmssDeployment@1 任务需要以下额外的 RBAC 角色,这些角色配置为访问 中 customScriptsStorageAccount配置的存储帐户。

角色 资源 用户
参与者虚拟机参与者 虚拟机规模集 azureSubscription
存储 blob 数据参与者 保存自定义脚本的 Azure 存储帐户 azureSubscription
存储 Blob 数据读取者 保存自定义脚本的 Azure 存储帐户 虚拟机规模集系统分配的托管标识

用于自定义脚本访问的 Azure RBAC 访问。

要求

要求 DESCRIPTION
管道类型 YAML,经典版本,经典版本
运行时间 代理,DeploymentGroup
需求 没有
功能 此任务不满足作业中后续任务的任何要求。
命令限制 任意
Settable 变量 任意
代理版本 2.209.0 或更高版本
任务类别 部署