你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

Microsoft.Batch batchAccounts/pools 2020-05-01

Bicep 资源定义

可以使用目标操作部署 batchAccounts/pools 资源类型:

有关每个 API 版本中已更改属性的列表,请参阅 更改日志

资源格式

若要创建 Microsoft.Batch/batchAccounts/pools 资源,请将以下 Bicep 添加到模板。

resource symbolicname 'Microsoft.Batch/batchAccounts/pools@2020-05-01' = {
  parent: resourceSymbolicName
  name: 'string'
  properties: {
    applicationLicenses: [
      'string'
    ]
    applicationPackages: [
      {
        id: 'string'
        version: 'string'
      }
    ]
    certificates: [
      {
        id: 'string'
        storeLocation: 'string'
        storeName: 'string'
        visibility: [
          'string'
        ]
      }
    ]
    deploymentConfiguration: {
      cloudServiceConfiguration: {
        osFamily: 'string'
        osVersion: 'string'
      }
      virtualMachineConfiguration: {
        containerConfiguration: {
          containerImageNames: [
            'string'
          ]
          containerRegistries: [
            {
              password: 'string'
              registryServer: 'string'
              username: 'string'
            }
          ]
          type: 'DockerCompatible'
        }
        dataDisks: [
          {
            caching: 'string'
            diskSizeGB: int
            lun: int
            storageAccountType: 'string'
          }
        ]
        diskEncryptionConfiguration: {
          targets: [
            'string'
          ]
        }
        imageReference: {
          id: 'string'
          offer: 'string'
          publisher: 'string'
          sku: 'string'
          version: 'string'
        }
        licenseType: 'string'
        nodeAgentSkuId: 'string'
        windowsConfiguration: {
          enableAutomaticUpdates: bool
        }
      }
    }
    displayName: 'string'
    interNodeCommunication: 'string'
    maxTasksPerNode: int
    metadata: [
      {
        name: 'string'
        value: 'string'
      }
    ]
    mountConfiguration: [
      {
        azureBlobFileSystemConfiguration: {
          accountKey: 'string'
          accountName: 'string'
          blobfuseOptions: 'string'
          containerName: 'string'
          relativeMountPath: 'string'
          sasKey: 'string'
        }
        azureFileShareConfiguration: {
          accountKey: 'string'
          accountName: 'string'
          azureFileUrl: 'string'
          mountOptions: 'string'
          relativeMountPath: 'string'
        }
        cifsMountConfiguration: {
          mountOptions: 'string'
          password: 'string'
          relativeMountPath: 'string'
          source: 'string'
          username: 'string'
        }
        nfsMountConfiguration: {
          mountOptions: 'string'
          relativeMountPath: 'string'
          source: 'string'
        }
      }
    ]
    networkConfiguration: {
      endpointConfiguration: {
        inboundNatPools: [
          {
            backendPort: int
            frontendPortRangeEnd: int
            frontendPortRangeStart: int
            name: 'string'
            networkSecurityGroupRules: [
              {
                access: 'string'
                priority: int
                sourceAddressPrefix: 'string'
                sourcePortRanges: [
                  'string'
                ]
              }
            ]
            protocol: 'string'
          }
        ]
      }
      publicIPAddressConfiguration: {
        ipAddressIds: [
          'string'
        ]
        provision: 'string'
      }
      subnetId: 'string'
    }
    scaleSettings: {
      autoScale: {
        evaluationInterval: 'string'
        formula: 'string'
      }
      fixedScale: {
        nodeDeallocationOption: 'string'
        resizeTimeout: 'string'
        targetDedicatedNodes: int
        targetLowPriorityNodes: int
      }
    }
    startTask: {
      commandLine: 'string'
      containerSettings: {
        containerRunOptions: 'string'
        imageName: 'string'
        registry: {
          password: 'string'
          registryServer: 'string'
          username: 'string'
        }
        workingDirectory: 'string'
      }
      environmentSettings: [
        {
          name: 'string'
          value: 'string'
        }
      ]
      maxTaskRetryCount: int
      resourceFiles: [
        {
          autoStorageContainerName: 'string'
          blobPrefix: 'string'
          fileMode: 'string'
          filePath: 'string'
          httpUrl: 'string'
          storageContainerUrl: 'string'
        }
      ]
      userIdentity: {
        autoUser: {
          elevationLevel: 'string'
          scope: 'string'
        }
        userName: 'string'
      }
      waitForSuccess: bool
    }
    taskSchedulingPolicy: {
      nodeFillType: 'string'
    }
    userAccounts: [
      {
        elevationLevel: 'string'
        linuxUserConfiguration: {
          gid: int
          sshPrivateKey: 'string'
          uid: int
        }
        name: 'string'
        password: 'string'
        windowsUserConfiguration: {
          loginMode: 'string'
        }
      }
    ]
    vmSize: 'string'
  }
}

属性值

ApplicationPackageReference

名字 描述 价值
id 要安装的应用程序包的 ID。 这必须与池位于同一批处理帐户内。 这可以是对特定版本的引用,也可以是默认版本(如果存在)。 string (必需)
版本 如果省略此项,并且没有为此应用程序指定默认版本,则请求将失败,错误代码 InvalidApplicationPackageReferences。 如果直接调用 REST API,则 HTTP 状态代码为 409。 字符串

AutoScaleSettings

名字 描述 价值
evaluationInterval 如果省略,则默认值为 15 分钟(PT15M)。 字符串
公式 池中所需计算节点数的公式。 string (必需)

AutoUserSpecification

名字 描述 价值
elevationLevel 默认值为 nonAdmin。 “Admin”
“NonAdmin”
范围 默认值为 Pool。 如果池正在运行 Windows,则应指定任务值(如果需要在任务之间进行更严格的隔离)。 例如,如果任务以可能影响其他任务的方式改变注册表,或者已在池中指定了证书,而正常任务不应可访问,但应可通过启动任务访问。 “Pool”
“Task”

AzureBlobFileSystemConfiguration

名字 描述 价值
accountKey 此属性与 sasKey 互斥,必须指定一个属性。 字符串
accountName Azure 存储帐户名称。 string (必需)
blobfuseOptions 这些是 Windows 中的“net use”选项,Linux 中的“装载”选项。 字符串
containerName Azure Blob 存储容器名称。 string (必需)
relativeMountPath 所有文件系统都相对于 Batch 装载目录进行装载,可通过AZ_BATCH_NODE_MOUNTS_DIR环境变量进行访问。 string (必需)
sasKey 此属性与 accountKey 互斥,必须指定一个属性。 字符串

AzureFileShareConfiguration

名字 描述 价值
accountKey Azure 存储帐户密钥。 string (必需)
accountName Azure 存储帐户名称。 string (必需)
azureFileUrl 此格式为“https://{account}.file.core.windows.net/”。 string (必需)
mountOptions 这些是 Windows 中的“net use”选项,Linux 中的“装载”选项。 字符串
relativeMountPath 所有文件系统都相对于 Batch 装载目录进行装载,可通过AZ_BATCH_NODE_MOUNTS_DIR环境变量进行访问。 string (必需)

CertificateReference

名字 描述 价值
id 要安装在池中的证书的完全限定 ID。 这必须与池位于同一批处理帐户内。 string (必需)
storeLocation 默认值为 currentUser。 此属性仅适用于使用 Windows 节点配置的池(即使用 cloudServiceConfiguration 创建或使用 Windows 映像引用的 virtualMachineConfiguration)。 对于 Linux 计算节点,证书存储在任务工作目录中的目录中,并向任务提供环境变量AZ_BATCH_CERTIFICATES_DIR以查询此位置。 对于可见性为“remoteUser”的证书,将在用户的主目录中(例如 /home/{user-name}/certs)中创建一个“certs”目录,并将证书置于该目录中。 “CurrentUser”
“LocalMachine”
storeName 此属性仅适用于使用 Windows 节点配置的池(即使用 cloudServiceConfiguration 创建或使用 Windows 映像引用的 virtualMachineConfiguration)。 常见的存储名称包括:My、Root、CA、Trust、Trustallowed、TrustedPeople、TrustedPublisher、AuthRoot、AddressBook,但也可以使用任何自定义存储名称。 默认值为“我的”。 字符串
能见度 计算节点上的哪些用户帐户应有权访问证书的专用数据。 包含任一项的字符串数组:
“RemoteUser”
“StartTask”
“Task”

CifsMountConfiguration

名字 描述 价值
mountOptions 这些是 Windows 中的“net use”选项,Linux 中的“装载”选项。 字符串
密码 用于针对 CIFS 文件系统进行身份验证的密码。 string (必需)
relativeMountPath 所有文件系统都相对于 Batch 装载目录进行装载,可通过AZ_BATCH_NODE_MOUNTS_DIR环境变量进行访问。 string (必需)
要装载的文件系统的 URI。 string (必需)
username 用于对 CIFS 文件系统进行身份验证的用户。 string (必需)

CloudServiceConfiguration

名字 描述 价值
osFamily 可能的值为:2 - OS 系列 2,等效于 Windows Server 2008 R2 SP1。 3 - OS 系列 3,等效于 Windows Server 2012。 4 - OS 系列 4,等效于 Windows Server 2012 R2。 5 - OS 系列 5,相当于 Windows Server 2016。 6 - OS 系列 6,等效于 Windows Server 2019。 有关详细信息,请参阅 Azure 来宾 OS 版本(https://azure.microsoft.com/documentation/articles/cloud-services-guestos-update-matrix/#releases)。 string (必需)
osVersion 默认值为 * ,指定指定 OS 系列的最新操作系统版本。 字符串

ContainerConfiguration

名字 描述 价值
containerImageNames 这是完整的映像引用,如指定为“docker pull”。 除非映像使用备用注册表完全限定映像,否则映像将源自默认 Docker 注册表。 string[]
containerRegistries 如果必须从需要凭据的专用注册表下载任何映像,则必须在此处提供这些凭据。 ContainerRegistry[]
类型 要使用的容器技术。 “DockerCompatible”(必需)

ContainerRegistry

名字 描述 价值
密码 登录到注册表服务器的密码。 string (必需)
registryServer 如果省略,则默认值为“docker.io”。 字符串
username 要登录到注册表服务器的用户名。 string (必需)

DataDisk

名字 描述 价值
缓存 值为:

none - 未启用磁盘的缓存模式。
readOnly - 磁盘的缓存模式是只读的。
readWrite - 磁盘的缓存模式是读取和写入。

缓存的默认值为 none。 有关缓存选项的信息,请参阅:https://blogs.msdn.microsoft.com/windowsazurestorage/2012/06/27/exploring-windows-azure-drives-disks-and-images/
“None”
“ReadOnly”
“ReadWrite”
diskSizeGB 创建新数据磁盘时的初始磁盘大小(以 GB 为单位)。 int (必需)
lun 用于唯一标识每个数据磁盘。 如果附加多个磁盘,每个磁盘应具有不同的 lun。 int (必需)
storageAccountType 如果省略,则默认值为“Standard_LRS”。 值为:

Standard_LRS - 数据磁盘应使用标准本地冗余存储。
Premium_LRS - 数据磁盘应使用高级本地冗余存储。
“Premium_LRS”
“Standard_LRS”

DeploymentConfiguration

名字 描述 价值
cloudServiceConfiguration 此属性和 virtualMachineConfiguration 互斥,必须指定其中一个属性。 如果将 Batch 帐户的 poolAllocationMode 属性设置为“UserSubscription”,则无法指定此属性。 CloudServiceConfiguration
virtualMachineConfiguration 此属性和 cloudServiceConfiguration 互斥,必须指定其中一个属性。 VirtualMachineConfiguration

DiskEncryptionConfiguration

名字 描述 价值
目标 在 Linux 池中,仅支持“TemporaryDisk”;在 Windows 池中,必须指定“OsDisk”和“TemporaryDisk”。 包含任一项的字符串数组:
“OsDisk”
“TemporaryDisk”

EnvironmentSetting

名字 描述 价值
名字 环境变量的名称。 string (必需)
价值 环境变量的值。 字符串

FixedScaleSettings

名字 描述 价值
nodeDeallocationOption 如果省略,则默认值为“重新排队”。 “Requeue”
“RetainedData”
“TaskCompletion”
“Terminate”
resizeTimeout 默认值为 15 分钟。 超时值使用 ISO 8601 格式。 例如,使用 PT10M 10 分钟。 最小值为 5 分钟。 如果指定的值小于 5 分钟,Batch 服务将拒绝请求并显示错误;如果直接调用 REST API,则 HTTP 状态代码为 400(请求错误)。 字符串
targetDedicatedNodes 必须设置至少一个 targetDedicatedNodes,targetLowPriorityNodes。 int
targetLowPriorityNodes 必须设置至少一个 targetDedicatedNodes,targetLowPriorityNodes。 int

ImageReference

名字 描述 价值
id 此属性与其他属性互斥。 共享映像库映像必须与 Azure Batch 帐户位于同一区域中的副本。 有关 Batch 节点代理与 Batch 服务通信的防火墙设置的信息,请参阅 /azure/batch/batch-api-basics#virtual-network-vnet-and-firewall-configuration。 字符串
提供 例如,UbuntuServer 或 WindowsServer。 字符串
发行人 例如,Canonical 或 MicrosoftWindowsServer。 字符串
sku 例如,18.04-LTS 或 2019-Datacenter。 字符串
版本 可以指定值“latest”以选择映像的最新版本。 如果省略,则默认值为“latest”。 字符串

InboundNatPool

名字 描述 价值
backendPort 这在 Batch 池中必须是唯一的。 可接受的值为 1 到 65535,但保留这些值时为 22、3389、29876 和 29877。 如果提供任何保留值,则请求失败并显示 HTTP 状态代码 400。 int (必需)
frontendPortRangeEnd 可接受的值介于 1 到 65534 之间,但 Batch 服务保留的端口范围为 50000 到 55000。 池中的所有范围都必须是不同的,并且不能重叠。 如果提供任何保留值或重叠值,则请求失败并显示 HTTP 状态代码 400。 int (必需)
frontendPortRangeStart 可接受的值介于 1 到 65534 之间,但保留的端口范围为 50000 到 55000。 池中的所有范围都必须是不同的,并且不能重叠。 如果提供任何保留值或重叠值,则请求失败并显示 HTTP 状态代码 400。 int (必需)
名字 名称在 Batch 池中必须唯一,可以包含字母、数字、下划线、句点和连字符。 名称必须以字母或数字开头,必须以字母、数字或下划线结尾,并且不能超过 77 个字符。 如果提供任何无效值,则请求失败并显示 HTTP 状态代码 400。 string (必需)
networkSecurityGroupRules 可以在 Batch 池的所有终结点上指定的最大规则数为 25。 如果未指定网络安全组规则,则会创建默认规则以允许对指定的 backendPort 进行入站访问。 如果超过网络安全组规则的最大数目,则请求失败并显示 HTTP 状态代码 400。 NetworkSecurityGroupRule[]
协议 终结点的协议。 “TCP”
“UDP”(必需)

LinuxUserConfiguration

名字 描述 价值
gid uid 和 gid 属性必须同时指定或根本不指定。 如果未指定基础操作系统,则选取 gid。 int
sshPrivateKey 私钥不得受密码保护。 当池的 enableInterNodeCommunication 属性为 true 时,私钥用于在 Linux 池中的节点之间自动配置基于非对称密钥的身份验证(如果 enableInterNodeCommunication 为 false,则忽略该身份验证)。 它通过将密钥对放入用户的 .ssh 目录来执行此操作。 如果未指定,则节点之间未配置无密码 SSH(未修改用户的 .ssh 目录)。 字符串
uid uid 和 gid 属性必须同时指定或根本不指定。 如果未指定基础操作系统,则选取 uid。 int

MetadataItem

名字 描述 价值
名字 元数据项的名称。 string (必需)
价值 元数据项的值。 string (必需)

Microsoft.Batch/batchAccounts/pools

名字 描述 价值
名字 资源名称 字符串

约束:
最小长度 = 1
最大长度 = 1
模式 = ^[a-zA-Z0-9_-]+$ (必需)
父母 在 Bicep 中,可以为子资源指定父资源。 仅当子资源在父资源外部声明时,才需要添加此属性。

有关详细信息,请参阅 父资源外部的子资源
类型资源的符号名称:batchAccounts
性能 与池关联的属性。 PoolProperties

MountConfiguration

名字 描述 价值
azureBlobFileSystemConfiguration 此属性与其他所有属性互斥。 AzureBlobFileSystemConfiguration
azureFileShareConfiguration 此属性与其他所有属性互斥。 AzureFileShareConfiguration
cifsMountConfiguration 此属性与其他所有属性互斥。 CifsMountConfiguration
nfsMountConfiguration 此属性与其他所有属性互斥。 NFSMountConfiguration

NetworkConfiguration

名字 描述 价值
endpointConfiguration 池终结点配置仅在具有 virtualMachineConfiguration 属性的池上受支持。 PoolEndpointConfiguration
publicIPAddressConfiguration 此属性仅在具有 virtualMachineConfiguration 属性的池上受支持。 PublicIPAddressConfiguration
subnetId 虚拟网络必须与 Azure Batch 帐户位于同一区域和订阅中。 指定的子网应有足够的可用 IP 地址来容纳池中的节点数。 如果子网没有足够的可用 IP 地址,池将部分分配计算节点,并发生调整大小错误。 “MicrosoftAzureBatch”服务主体必须具有指定 VNet 的“经典虚拟机参与者”Role-Based 访问控制(RBAC)角色。 指定的子网必须允许来自 Azure Batch 服务的通信,以便能够在计算节点上计划任务。 可以通过检查指定的 VNet 是否具有任何关联的网络安全组(NSG)来验证这一点。 如果 NSG 拒绝与指定子网中的计算节点的通信,Batch 服务会将计算节点的状态设置为不可用。 如果指定的 VNet 具有任何关联的网络安全组(NSG),则必须为入站通信启用一些保留的系统端口。 对于使用虚拟机配置创建的池,请启用端口 29876 和 29877,以及适用于 Linux 的端口 22 和适用于 Windows 的端口 3389。 对于使用云服务配置创建的池,请启用端口 10100、20100 和 30100。 此外,在端口 443 上启用到 Azure 存储的出站连接。 对于 cloudServiceConfiguration 池,仅支持“经典”VNET。 有关详细信息,请参阅:/azure/batch/batch-api-basics#virtual-network-vnet-and-firewall-configuration 字符串

NetworkSecurityGroupRule

名字 描述 价值
访问 应对指定 IP 地址、子网范围或标记执行的操作。 “允许”
“拒绝”(必需)
优先权 池中的优先级必须是唯一的,并且按优先级顺序进行评估。 优先级越高的数字越低。 例如,可以使用订单号 150、250 和 350 指定规则。 顺序编号为 150 的规则优先于顺序为 250 的规则。 允许的优先级为 150 到 4096。 如果提供了任何保留值或重复值,则请求失败并显示 HTTP 状态代码 400。 int (必需)
sourceAddressPrefix 有效值为单个 IP 地址(即 10.10.10.10)、IP 子网(即 192.168.1.0/24)、默认标记或 * (适用于所有地址)。 如果提供了任何其他值,请求将失败并显示 HTTP 状态代码 400。 string (必需)
sourcePortRanges 有效值为“*”(对于所有端口 0 - 65535)或端口或端口范围的数组(即 100-200)。 端口应介于 0 到 65535 的范围内,端口范围或端口不能重叠。 如果提供了任何其他值,请求将失败并显示 HTTP 状态代码 400。 默认值为 *。 string[]

NFSMountConfiguration

名字 描述 价值
mountOptions 这些是 Windows 中的“net use”选项,Linux 中的“装载”选项。 字符串
relativeMountPath 所有文件系统都相对于 Batch 装载目录进行装载,可通过AZ_BATCH_NODE_MOUNTS_DIR环境变量进行访问。 string (必需)
要装载的文件系统的 URI。 string (必需)

PoolEndpointConfiguration

名字 描述 价值
inboundNatPools 每个 Batch 池的最大入站 NAT 池数为 5。 如果超出最大入站 NAT 池数,则请求失败并显示 HTTP 状态代码 400。 InboundNatPool[] (必需)

PoolProperties

名字 描述 价值
applicationLicenses 应用程序许可证列表必须是可用 Batch 服务应用程序许可证的子集。 如果请求的许可证不受支持,则池创建将失败。 string[]
applicationPackages 对应用程序包引用的更改会影响所有加入池的新计算节点,但在重新启动或重新映像之前,不会影响池中已有的计算节点。 任何给定池上最多有 10 个应用程序包引用。 ApplicationPackageReference[]
证书 对于 Windows 计算节点,Batch 服务会将证书安装到指定的证书存储和位置。 对于 Linux 计算节点,证书存储在任务工作目录中的目录中,并向任务提供环境变量AZ_BATCH_CERTIFICATES_DIR以查询此位置。 对于可见性为“remoteUser”的证书,将在用户的主目录中(例如 /home/{user-name}/certs)中创建一个“certs”目录,并将证书置于该目录中。 CertificateReference[]
deploymentConfiguration 使用 CloudServiceConfiguration 指定应使用 Azure 云服务(PaaS)创建节点,而 VirtualMachineConfiguration 使用 Azure 虚拟机(IaaS)。 DeploymentConfiguration
displayName 显示名称不一定是唯一的,可以包含最大长度为 1024 的任何 Unicode 字符。 字符串
interNodeCommunication 这会对可分配给池的节点施加限制。 启用此值可以减少在池中分配请求的节点数的可能性。 如果未指定,则此值默认为“Disabled”。 “Disabled”
“Enabled”
maxTasksPerNode 默认值为 1。 最大值是池的 vmSize 核心数或 256 的 4 倍。 int
元数据 Batch 服务不向元数据分配任何含义;它仅用于使用用户代码。 MetadataItem[]
mountConfiguration 这支持 Azure 文件存储、NFS、CIFS/SMB 和 Blobfuse。 MountConfiguration[]
networkConfiguration 池的网络配置。 NetworkConfiguration
scaleSettings 定义池的所需大小。 这可以是指定所请求的目标DedicatedNode 的“fixedScale”,也可以是定义定期重新计算的公式的“autoScale”。 如果未指定此属性,则池将具有具有 0 个 targetDedicatedNodes 的固定缩放。 ScaleSettings
startTask 在 PATCH(更新)操作中,此属性可以设置为空对象,以从池中删除启动任务。 StartTask
taskSchedulingPolicy 如果未指定,则默认为分散。 TaskSchedulingPolicy
userAccounts 将在池中的每个节点上创建的用户帐户列表。 UserAccount[]
vmSize 有关云服务池(使用 cloudServiceConfiguration 创建的池)的可用虚拟机大小的信息,请参阅云服务的大小(https://azure.microsoft.com/documentation/articles/cloud-services-sizes-specs/)。 Batch 支持除 ExtraSmall 之外的所有云服务 VM 大小。 有关使用虚拟机市场(使用 virtualMachineConfiguration 创建的池)中的映像的可用 VM 大小的信息,请参阅虚拟机(Linux)(https://azure.microsoft.com/documentation/articles/virtual-machines-linux-sizes/)或虚拟机(Windows)的大小(https://azure.microsoft.com/documentation/articles/virtual-machines-windows-sizes/)。 Batch 支持除STANDARD_A0和具有高级存储(STANDARD_GS、STANDARD_DS和STANDARD_DSV2系列)之外的所有 Azure VM 大小。 字符串

PublicIPAddressConfiguration

名字 描述 价值
ipAddressIds 此处指定的 IP 数限制池的最大大小 - 可以为每个公共 IP 分配 50 个专用节点或 20 个低优先级节点。 例如,需要 150 个专用 VM 的池至少需要指定 3 个公共 IP。 此集合的每个元素都采用以下形式:/subscriptions/{subscription}/resourceGroups/{group}/providers/Microsoft.Network/publicIPAddresses/{ip}。 string[]
准备 默认值为 BatchManaged “BatchManaged”
“NoPublicIPAddresses”
“UserManaged”

ResourceFile

名字 描述 价值
autoStorageContainerName autoStorageContainerName、storageContainerUrl 和 httpUrl 属性互斥,必须指定其中一个属性。 字符串
blobPrefix 仅当使用 autoStorageContainerName 或 storageContainerUrl 时,该属性才有效。 此前缀可以是部分文件名或子目录。 如果未指定前缀,则会下载容器中的所有文件。 字符串
fileMode 此属性仅适用于下载到 Linux 计算节点的文件。 如果为将下载到 Windows 节点的 resourceFile 指定,将忽略它。 如果未为 Linux 节点指定此属性,则将默认值 0770 应用于该文件。 字符串
filePath 如果指定了 httpUrl 属性,则需要 filePath,并描述文件将下载到的路径,包括文件名。 否则,如果指定 autoStorageContainerName 或 storageContainerUrl 属性,则 filePath 是可选的,并且是将文件下载到的目录。 如果 filePath 用作目录,则与输入数据关联的任何目录结构都将完整保留并追加到指定的 filePath 目录。 指定的相对路径不能脱离任务的工作目录(例如,使用'.')。 字符串
httpUrl autoStorageContainerName、storageContainerUrl 和 httpUrl 属性互斥,必须指定其中一个属性。 如果 URL 是 Azure Blob 存储,则必须使用匿名访问来读取它;也就是说,下载 Blob 时 Batch 服务不提供任何凭据。 可通过两种方法获取 Azure 存储中 Blob 的此类 URL:包括授予对 Blob 的读取权限的共享访问签名(SAS),或为 Blob 或其容器设置 ACL 以允许公共访问。 字符串
storageContainerUrl autoStorageContainerName、storageContainerUrl 和 httpUrl 属性互斥,必须指定其中一个属性。 此 URL 必须使用匿名访问来读取和列出;也就是说,下载 Blob 时 Batch 服务不提供任何凭据。 可通过两种方法获取 Azure 存储中 Blob 的此类 URL:包括授予对 Blob 的读取和列表权限的共享访问签名(SAS),或为 Blob 或其容器设置 ACL 以允许公共访问。 字符串

ScaleSettings

名字 描述 价值
autoScale 此属性和 fixedScale 是互斥的,必须指定其中一个属性。 AutoScaleSettings
fixedScale 此属性和 autoScale 互斥,必须指定其中一个属性。 FixedScaleSettings

StartTask

名字 描述 价值
commandLine 命令行未在 shell 下运行,因此不能利用 shell 功能(如环境变量扩展)。 如果要利用这些功能,则应在命令行中调用 shell,例如在 Windows 中使用“cmd /c MyCommand”或在 Linux 中使用“/bin/sh -c MyCommand”。 如果指定了 startTask 的任何其他属性,则为必需。 字符串
containerSettings 指定此项后,AZ_BATCH_NODE_ROOT_DIR(节点上的 Azure Batch 目录的根目录)以递归方式映射到容器中,所有任务环境变量都映射到容器中,任务命令行在容器中执行。 TaskContainerSettings
environmentSettings 启动任务的环境变量设置列表。 EnvironmentSetting[]
maxTaskRetryCount 如果 Batch 服务退出代码为非零,则重试任务。 请注意,此值专门控制重试次数。 Batch 服务将尝试一次任务,然后最多可以重试此限制。 例如,如果最大重试计数为 3,Batch 将尝试任务最多 4 次(一次初始尝试和 3 次重试)。 如果最大重试计数为 0,Batch 服务不会重试该任务。 如果最大重试计数为 -1,Batch 服务将重试任务,且没有限制。 int
resourceFiles Batch 服务在运行命令行之前将下载到计算节点的文件列表。 ResourceFile[]
userIdentity 如果省略,任务将作为任务唯一的非管理用户运行。 UserIdentity
waitForSuccess 如果 true 并且启动任务在计算节点上失败,Batch 服务将启动任务重试到其最大重试计数(maxTaskRetryCount)。 如果任务在所有重试后仍未成功完成,Batch 服务会将计算节点标记为不可用,并且不会为其计划任务。 可以通过节点状态和计划错误详细信息来检测此条件。 如果为 false,Batch 服务不会等待启动任务完成。 在这种情况下,当启动任务仍在运行时,其他任务可以开始在计算节点上执行;即使启动任务失败,新任务也会继续在节点上计划。 默认值为 true。 bool

TaskContainerSettings

名字 描述 价值
containerRunOptions 除了 Batch 服务控制的选项外,这些附加选项还作为“docker create”命令的参数提供。 字符串
imageName 这是完整的映像引用,如指定为“docker pull”。 如果未将标记作为映像名称的一部分提供,则标记“:latest”用作默认值。 string (必需)
注册表 如果在创建池时已提供此设置,则可以省略此设置。 ContainerRegistry
workingDirectory 用于指示容器任务工作目录所在的位置的标志。 默认值为“taskWorkingDirectory”。 “ContainerImageDefault”
“TaskWorkingDirectory”

TaskSchedulingPolicy

名字 描述 价值
nodeFillType 如何跨计算节点分配任务。 “Pack”
“分散”(必需)

UserAccount

名字 描述 价值
elevationLevel nonAdmin - 自动用户是没有提升访问权限的标准用户。 管理员 - 自动用户是具有提升访问权限并具有完全管理员权限的用户。 默认值为 nonAdmin。 “Admin”
“NonAdmin”
linuxUserConfiguration 如果在 Windows 池上指定此属性,则忽略此属性。 如果未指定,则使用默认选项创建用户。 LinuxUserConfiguration
名字 用户帐户的名称。 string (必需)
密码 用户帐户的密码。 string (必需)
windowsUserConfiguration 只有在用户位于 Windows 池中时,才能指定此属性。 如果未指定且在 Windows 池上,则会使用默认选项创建用户。 WindowsUserConfiguration

UserIdentity

名字 描述 价值
autoUser userName 和 autoUser 属性互斥;必须指定一个,但不能同时指定两者。 AutoUserSpecification
userName userName 和 autoUser 属性互斥;必须指定一个,但不能同时指定两者。 字符串

VirtualMachineConfiguration

名字 描述 价值
containerConfiguration 如果指定,则会在池中的每个节点上执行安装程序,以允许任务在容器中运行。 在此池上运行的所有常规任务和作业管理器任务都必须指定 containerSettings 属性,所有其他任务都可以指定它。 ContainerConfiguration
dataDisks 如果池中的计算节点需要附加空数据磁盘,则必须指定此属性。 DataDisk[]
diskEncryptionConfiguration 如果指定了加密,则会在节点预配期间对池中的每个节点执行加密。 DiskEncryptionConfiguration
imageReference 对 Azure 虚拟机市场映像或自定义虚拟机的 Azure 映像资源的引用。 若要获取 Azure Batch 验证的所有 imageReference 的列表,请参阅“列出支持的节点代理 SKU”操作。 ImageReference(必需)
licenseType 这仅适用于包含 Windows 操作系统的映像,并且仅在为将要部署的节点保留有效的本地许可证时使用。 如果省略,则不会应用本地许可折扣。 值为:

Windows_Server - 本地许可证适用于 Windows Server。
Windows_Client - 本地许可证适用于 Windows 客户端。
字符串
nodeAgentSkuId Batch 节点代理是在池中的每个节点上运行的程序,并在节点与 Batch 服务之间提供命令和控制接口。 对于不同的操作系统,节点代理(称为 SKU)有不同的实现。 必须指定与所选映像引用匹配的节点代理 SKU。 若要获取支持的节点代理 SKU 及其已验证映像引用列表,请参阅“列出支持的节点代理 SKU”操作。 string (必需)
windowsConfiguration 如果 imageReference 指定 Linux OS 映像,则不能指定此属性。 WindowsConfiguration

WindowsConfiguration

名字 描述 价值
enableAutomaticUpdates 如果省略,则默认值为 true。 bool

WindowsUserConfiguration

名字 描述 价值
loginMode 指定用户的登录模式。 VirtualMachineConfiguration 池的默认值为交互式模式,而 CloudServiceConfiguration 池的默认值为批处理模式。 “Batch”
“Interactive”

快速入门示例

以下快速入门示例部署此资源类型。

Bicep 文件 描述
不带公共 IP 地址的 Azure Batch 池 此模板创建没有公共 IP 地址的 Azure Batch 简化节点通信池。

ARM 模板资源定义

可以使用目标操作部署 batchAccounts/pools 资源类型:

有关每个 API 版本中已更改属性的列表,请参阅 更改日志

资源格式

若要创建 Microsoft.Batch/batchAccounts/pools 资源,请将以下 JSON 添加到模板。

{
  "type": "Microsoft.Batch/batchAccounts/pools",
  "apiVersion": "2020-05-01",
  "name": "string",
  "properties": {
    "applicationLicenses": [ "string" ],
    "applicationPackages": [
      {
        "id": "string",
        "version": "string"
      }
    ],
    "certificates": [
      {
        "id": "string",
        "storeLocation": "string",
        "storeName": "string",
        "visibility": [ "string" ]
      }
    ],
    "deploymentConfiguration": {
      "cloudServiceConfiguration": {
        "osFamily": "string",
        "osVersion": "string"
      },
      "virtualMachineConfiguration": {
        "containerConfiguration": {
          "containerImageNames": [ "string" ],
          "containerRegistries": [
            {
              "password": "string",
              "registryServer": "string",
              "username": "string"
            }
          ],
          "type": "DockerCompatible"
        },
        "dataDisks": [
          {
            "caching": "string",
            "diskSizeGB": "int",
            "lun": "int",
            "storageAccountType": "string"
          }
        ],
        "diskEncryptionConfiguration": {
          "targets": [ "string" ]
        },
        "imageReference": {
          "id": "string",
          "offer": "string",
          "publisher": "string",
          "sku": "string",
          "version": "string"
        },
        "licenseType": "string",
        "nodeAgentSkuId": "string",
        "windowsConfiguration": {
          "enableAutomaticUpdates": "bool"
        }
      }
    },
    "displayName": "string",
    "interNodeCommunication": "string",
    "maxTasksPerNode": "int",
    "metadata": [
      {
        "name": "string",
        "value": "string"
      }
    ],
    "mountConfiguration": [
      {
        "azureBlobFileSystemConfiguration": {
          "accountKey": "string",
          "accountName": "string",
          "blobfuseOptions": "string",
          "containerName": "string",
          "relativeMountPath": "string",
          "sasKey": "string"
        },
        "azureFileShareConfiguration": {
          "accountKey": "string",
          "accountName": "string",
          "azureFileUrl": "string",
          "mountOptions": "string",
          "relativeMountPath": "string"
        },
        "cifsMountConfiguration": {
          "mountOptions": "string",
          "password": "string",
          "relativeMountPath": "string",
          "source": "string",
          "username": "string"
        },
        "nfsMountConfiguration": {
          "mountOptions": "string",
          "relativeMountPath": "string",
          "source": "string"
        }
      }
    ],
    "networkConfiguration": {
      "endpointConfiguration": {
        "inboundNatPools": [
          {
            "backendPort": "int",
            "frontendPortRangeEnd": "int",
            "frontendPortRangeStart": "int",
            "name": "string",
            "networkSecurityGroupRules": [
              {
                "access": "string",
                "priority": "int",
                "sourceAddressPrefix": "string",
                "sourcePortRanges": [ "string" ]
              }
            ],
            "protocol": "string"
          }
        ]
      },
      "publicIPAddressConfiguration": {
        "ipAddressIds": [ "string" ],
        "provision": "string"
      },
      "subnetId": "string"
    },
    "scaleSettings": {
      "autoScale": {
        "evaluationInterval": "string",
        "formula": "string"
      },
      "fixedScale": {
        "nodeDeallocationOption": "string",
        "resizeTimeout": "string",
        "targetDedicatedNodes": "int",
        "targetLowPriorityNodes": "int"
      }
    },
    "startTask": {
      "commandLine": "string",
      "containerSettings": {
        "containerRunOptions": "string",
        "imageName": "string",
        "registry": {
          "password": "string",
          "registryServer": "string",
          "username": "string"
        },
        "workingDirectory": "string"
      },
      "environmentSettings": [
        {
          "name": "string",
          "value": "string"
        }
      ],
      "maxTaskRetryCount": "int",
      "resourceFiles": [
        {
          "autoStorageContainerName": "string",
          "blobPrefix": "string",
          "fileMode": "string",
          "filePath": "string",
          "httpUrl": "string",
          "storageContainerUrl": "string"
        }
      ],
      "userIdentity": {
        "autoUser": {
          "elevationLevel": "string",
          "scope": "string"
        },
        "userName": "string"
      },
      "waitForSuccess": "bool"
    },
    "taskSchedulingPolicy": {
      "nodeFillType": "string"
    },
    "userAccounts": [
      {
        "elevationLevel": "string",
        "linuxUserConfiguration": {
          "gid": "int",
          "sshPrivateKey": "string",
          "uid": "int"
        },
        "name": "string",
        "password": "string",
        "windowsUserConfiguration": {
          "loginMode": "string"
        }
      }
    ],
    "vmSize": "string"
  }
}

属性值

ApplicationPackageReference

名字 描述 价值
id 要安装的应用程序包的 ID。 这必须与池位于同一批处理帐户内。 这可以是对特定版本的引用,也可以是默认版本(如果存在)。 string (必需)
版本 如果省略此项,并且没有为此应用程序指定默认版本,则请求将失败,错误代码 InvalidApplicationPackageReferences。 如果直接调用 REST API,则 HTTP 状态代码为 409。 字符串

AutoScaleSettings

名字 描述 价值
evaluationInterval 如果省略,则默认值为 15 分钟(PT15M)。 字符串
公式 池中所需计算节点数的公式。 string (必需)

AutoUserSpecification

名字 描述 价值
elevationLevel 默认值为 nonAdmin。 “Admin”
“NonAdmin”
范围 默认值为 Pool。 如果池正在运行 Windows,则应指定任务值(如果需要在任务之间进行更严格的隔离)。 例如,如果任务以可能影响其他任务的方式改变注册表,或者已在池中指定了证书,而正常任务不应可访问,但应可通过启动任务访问。 “Pool”
“Task”

AzureBlobFileSystemConfiguration

名字 描述 价值
accountKey 此属性与 sasKey 互斥,必须指定一个属性。 字符串
accountName Azure 存储帐户名称。 string (必需)
blobfuseOptions 这些是 Windows 中的“net use”选项,Linux 中的“装载”选项。 字符串
containerName Azure Blob 存储容器名称。 string (必需)
relativeMountPath 所有文件系统都相对于 Batch 装载目录进行装载,可通过AZ_BATCH_NODE_MOUNTS_DIR环境变量进行访问。 string (必需)
sasKey 此属性与 accountKey 互斥,必须指定一个属性。 字符串

AzureFileShareConfiguration

名字 描述 价值
accountKey Azure 存储帐户密钥。 string (必需)
accountName Azure 存储帐户名称。 string (必需)
azureFileUrl 此格式为“https://{account}.file.core.windows.net/”。 string (必需)
mountOptions 这些是 Windows 中的“net use”选项,Linux 中的“装载”选项。 字符串
relativeMountPath 所有文件系统都相对于 Batch 装载目录进行装载,可通过AZ_BATCH_NODE_MOUNTS_DIR环境变量进行访问。 string (必需)

CertificateReference

名字 描述 价值
id 要安装在池中的证书的完全限定 ID。 这必须与池位于同一批处理帐户内。 string (必需)
storeLocation 默认值为 currentUser。 此属性仅适用于使用 Windows 节点配置的池(即使用 cloudServiceConfiguration 创建或使用 Windows 映像引用的 virtualMachineConfiguration)。 对于 Linux 计算节点,证书存储在任务工作目录中的目录中,并向任务提供环境变量AZ_BATCH_CERTIFICATES_DIR以查询此位置。 对于可见性为“remoteUser”的证书,将在用户的主目录中(例如 /home/{user-name}/certs)中创建一个“certs”目录,并将证书置于该目录中。 “CurrentUser”
“LocalMachine”
storeName 此属性仅适用于使用 Windows 节点配置的池(即使用 cloudServiceConfiguration 创建或使用 Windows 映像引用的 virtualMachineConfiguration)。 常见的存储名称包括:My、Root、CA、Trust、Trustallowed、TrustedPeople、TrustedPublisher、AuthRoot、AddressBook,但也可以使用任何自定义存储名称。 默认值为“我的”。 字符串
能见度 计算节点上的哪些用户帐户应有权访问证书的专用数据。 包含任一项的字符串数组:
“RemoteUser”
“StartTask”
“Task”

CifsMountConfiguration

名字 描述 价值
mountOptions 这些是 Windows 中的“net use”选项,Linux 中的“装载”选项。 字符串
密码 用于针对 CIFS 文件系统进行身份验证的密码。 string (必需)
relativeMountPath 所有文件系统都相对于 Batch 装载目录进行装载,可通过AZ_BATCH_NODE_MOUNTS_DIR环境变量进行访问。 string (必需)
要装载的文件系统的 URI。 string (必需)
username 用于对 CIFS 文件系统进行身份验证的用户。 string (必需)

CloudServiceConfiguration

名字 描述 价值
osFamily 可能的值为:2 - OS 系列 2,等效于 Windows Server 2008 R2 SP1。 3 - OS 系列 3,等效于 Windows Server 2012。 4 - OS 系列 4,等效于 Windows Server 2012 R2。 5 - OS 系列 5,相当于 Windows Server 2016。 6 - OS 系列 6,等效于 Windows Server 2019。 有关详细信息,请参阅 Azure 来宾 OS 版本(https://azure.microsoft.com/documentation/articles/cloud-services-guestos-update-matrix/#releases)。 string (必需)
osVersion 默认值为 * ,指定指定 OS 系列的最新操作系统版本。 字符串

ContainerConfiguration

名字 描述 价值
containerImageNames 这是完整的映像引用,如指定为“docker pull”。 除非映像使用备用注册表完全限定映像,否则映像将源自默认 Docker 注册表。 string[]
containerRegistries 如果必须从需要凭据的专用注册表下载任何映像,则必须在此处提供这些凭据。 ContainerRegistry[]
类型 要使用的容器技术。 “DockerCompatible”(必需)

ContainerRegistry

名字 描述 价值
密码 登录到注册表服务器的密码。 string (必需)
registryServer 如果省略,则默认值为“docker.io”。 字符串
username 要登录到注册表服务器的用户名。 string (必需)

DataDisk

名字 描述 价值
缓存 值为:

none - 未启用磁盘的缓存模式。
readOnly - 磁盘的缓存模式是只读的。
readWrite - 磁盘的缓存模式是读取和写入。

缓存的默认值为 none。 有关缓存选项的信息,请参阅:https://blogs.msdn.microsoft.com/windowsazurestorage/2012/06/27/exploring-windows-azure-drives-disks-and-images/
“None”
“ReadOnly”
“ReadWrite”
diskSizeGB 创建新数据磁盘时的初始磁盘大小(以 GB 为单位)。 int (必需)
lun 用于唯一标识每个数据磁盘。 如果附加多个磁盘,每个磁盘应具有不同的 lun。 int (必需)
storageAccountType 如果省略,则默认值为“Standard_LRS”。 值为:

Standard_LRS - 数据磁盘应使用标准本地冗余存储。
Premium_LRS - 数据磁盘应使用高级本地冗余存储。
“Premium_LRS”
“Standard_LRS”

DeploymentConfiguration

名字 描述 价值
cloudServiceConfiguration 此属性和 virtualMachineConfiguration 互斥,必须指定其中一个属性。 如果将 Batch 帐户的 poolAllocationMode 属性设置为“UserSubscription”,则无法指定此属性。 CloudServiceConfiguration
virtualMachineConfiguration 此属性和 cloudServiceConfiguration 互斥,必须指定其中一个属性。 VirtualMachineConfiguration

DiskEncryptionConfiguration

名字 描述 价值
目标 在 Linux 池中,仅支持“TemporaryDisk”;在 Windows 池中,必须指定“OsDisk”和“TemporaryDisk”。 包含任一项的字符串数组:
“OsDisk”
“TemporaryDisk”

EnvironmentSetting

名字 描述 价值
名字 环境变量的名称。 string (必需)
价值 环境变量的值。 字符串

FixedScaleSettings

名字 描述 价值
nodeDeallocationOption 如果省略,则默认值为“重新排队”。 “Requeue”
“RetainedData”
“TaskCompletion”
“Terminate”
resizeTimeout 默认值为 15 分钟。 超时值使用 ISO 8601 格式。 例如,使用 PT10M 10 分钟。 最小值为 5 分钟。 如果指定的值小于 5 分钟,Batch 服务将拒绝请求并显示错误;如果直接调用 REST API,则 HTTP 状态代码为 400(请求错误)。 字符串
targetDedicatedNodes 必须设置至少一个 targetDedicatedNodes,targetLowPriorityNodes。 int
targetLowPriorityNodes 必须设置至少一个 targetDedicatedNodes,targetLowPriorityNodes。 int

ImageReference

名字 描述 价值
id 此属性与其他属性互斥。 共享映像库映像必须与 Azure Batch 帐户位于同一区域中的副本。 有关 Batch 节点代理与 Batch 服务通信的防火墙设置的信息,请参阅 /azure/batch/batch-api-basics#virtual-network-vnet-and-firewall-configuration。 字符串
提供 例如,UbuntuServer 或 WindowsServer。 字符串
发行人 例如,Canonical 或 MicrosoftWindowsServer。 字符串
sku 例如,18.04-LTS 或 2019-Datacenter。 字符串
版本 可以指定值“latest”以选择映像的最新版本。 如果省略,则默认值为“latest”。 字符串

InboundNatPool

名字 描述 价值
backendPort 这在 Batch 池中必须是唯一的。 可接受的值为 1 到 65535,但保留这些值时为 22、3389、29876 和 29877。 如果提供任何保留值,则请求失败并显示 HTTP 状态代码 400。 int (必需)
frontendPortRangeEnd 可接受的值介于 1 到 65534 之间,但 Batch 服务保留的端口范围为 50000 到 55000。 池中的所有范围都必须是不同的,并且不能重叠。 如果提供任何保留值或重叠值,则请求失败并显示 HTTP 状态代码 400。 int (必需)
frontendPortRangeStart 可接受的值介于 1 到 65534 之间,但保留的端口范围为 50000 到 55000。 池中的所有范围都必须是不同的,并且不能重叠。 如果提供任何保留值或重叠值,则请求失败并显示 HTTP 状态代码 400。 int (必需)
名字 名称在 Batch 池中必须唯一,可以包含字母、数字、下划线、句点和连字符。 名称必须以字母或数字开头,必须以字母、数字或下划线结尾,并且不能超过 77 个字符。 如果提供任何无效值,则请求失败并显示 HTTP 状态代码 400。 string (必需)
networkSecurityGroupRules 可以在 Batch 池的所有终结点上指定的最大规则数为 25。 如果未指定网络安全组规则,则会创建默认规则以允许对指定的 backendPort 进行入站访问。 如果超过网络安全组规则的最大数目,则请求失败并显示 HTTP 状态代码 400。 NetworkSecurityGroupRule[]
协议 终结点的协议。 “TCP”
“UDP”(必需)

LinuxUserConfiguration

名字 描述 价值
gid uid 和 gid 属性必须同时指定或根本不指定。 如果未指定基础操作系统,则选取 gid。 int
sshPrivateKey 私钥不得受密码保护。 当池的 enableInterNodeCommunication 属性为 true 时,私钥用于在 Linux 池中的节点之间自动配置基于非对称密钥的身份验证(如果 enableInterNodeCommunication 为 false,则忽略该身份验证)。 它通过将密钥对放入用户的 .ssh 目录来执行此操作。 如果未指定,则节点之间未配置无密码 SSH(未修改用户的 .ssh 目录)。 字符串
uid uid 和 gid 属性必须同时指定或根本不指定。 如果未指定基础操作系统,则选取 uid。 int

MetadataItem

名字 描述 价值
名字 元数据项的名称。 string (必需)
价值 元数据项的值。 string (必需)

Microsoft.Batch/batchAccounts/pools

名字 描述 价值
apiVersion API 版本 '2020-05-01'
名字 资源名称 字符串

约束:
最小长度 = 1
最大长度 = 1
模式 = ^[a-zA-Z0-9_-]+$ (必需)
性能 与池关联的属性。 PoolProperties
类型 资源类型 “Microsoft.Batch/batchAccounts/pools”

MountConfiguration

名字 描述 价值
azureBlobFileSystemConfiguration 此属性与其他所有属性互斥。 AzureBlobFileSystemConfiguration
azureFileShareConfiguration 此属性与其他所有属性互斥。 AzureFileShareConfiguration
cifsMountConfiguration 此属性与其他所有属性互斥。 CifsMountConfiguration
nfsMountConfiguration 此属性与其他所有属性互斥。 NFSMountConfiguration

NetworkConfiguration

名字 描述 价值
endpointConfiguration 池终结点配置仅在具有 virtualMachineConfiguration 属性的池上受支持。 PoolEndpointConfiguration
publicIPAddressConfiguration 此属性仅在具有 virtualMachineConfiguration 属性的池上受支持。 PublicIPAddressConfiguration
subnetId 虚拟网络必须与 Azure Batch 帐户位于同一区域和订阅中。 指定的子网应有足够的可用 IP 地址来容纳池中的节点数。 如果子网没有足够的可用 IP 地址,池将部分分配计算节点,并发生调整大小错误。 “MicrosoftAzureBatch”服务主体必须具有指定 VNet 的“经典虚拟机参与者”Role-Based 访问控制(RBAC)角色。 指定的子网必须允许来自 Azure Batch 服务的通信,以便能够在计算节点上计划任务。 可以通过检查指定的 VNet 是否具有任何关联的网络安全组(NSG)来验证这一点。 如果 NSG 拒绝与指定子网中的计算节点的通信,Batch 服务会将计算节点的状态设置为不可用。 如果指定的 VNet 具有任何关联的网络安全组(NSG),则必须为入站通信启用一些保留的系统端口。 对于使用虚拟机配置创建的池,请启用端口 29876 和 29877,以及适用于 Linux 的端口 22 和适用于 Windows 的端口 3389。 对于使用云服务配置创建的池,请启用端口 10100、20100 和 30100。 此外,在端口 443 上启用到 Azure 存储的出站连接。 对于 cloudServiceConfiguration 池,仅支持“经典”VNET。 有关详细信息,请参阅:/azure/batch/batch-api-basics#virtual-network-vnet-and-firewall-configuration 字符串

NetworkSecurityGroupRule

名字 描述 价值
访问 应对指定 IP 地址、子网范围或标记执行的操作。 “允许”
“拒绝”(必需)
优先权 池中的优先级必须是唯一的,并且按优先级顺序进行评估。 优先级越高的数字越低。 例如,可以使用订单号 150、250 和 350 指定规则。 顺序编号为 150 的规则优先于顺序为 250 的规则。 允许的优先级为 150 到 4096。 如果提供了任何保留值或重复值,则请求失败并显示 HTTP 状态代码 400。 int (必需)
sourceAddressPrefix 有效值为单个 IP 地址(即 10.10.10.10)、IP 子网(即 192.168.1.0/24)、默认标记或 * (适用于所有地址)。 如果提供了任何其他值,请求将失败并显示 HTTP 状态代码 400。 string (必需)
sourcePortRanges 有效值为“*”(对于所有端口 0 - 65535)或端口或端口范围的数组(即 100-200)。 端口应介于 0 到 65535 的范围内,端口范围或端口不能重叠。 如果提供了任何其他值,请求将失败并显示 HTTP 状态代码 400。 默认值为 *。 string[]

NFSMountConfiguration

名字 描述 价值
mountOptions 这些是 Windows 中的“net use”选项,Linux 中的“装载”选项。 字符串
relativeMountPath 所有文件系统都相对于 Batch 装载目录进行装载,可通过AZ_BATCH_NODE_MOUNTS_DIR环境变量进行访问。 string (必需)
要装载的文件系统的 URI。 string (必需)

PoolEndpointConfiguration

名字 描述 价值
inboundNatPools 每个 Batch 池的最大入站 NAT 池数为 5。 如果超出最大入站 NAT 池数,则请求失败并显示 HTTP 状态代码 400。 InboundNatPool[] (必需)

PoolProperties

名字 描述 价值
applicationLicenses 应用程序许可证列表必须是可用 Batch 服务应用程序许可证的子集。 如果请求的许可证不受支持,则池创建将失败。 string[]
applicationPackages 对应用程序包引用的更改会影响所有加入池的新计算节点,但在重新启动或重新映像之前,不会影响池中已有的计算节点。 任何给定池上最多有 10 个应用程序包引用。 ApplicationPackageReference[]
证书 对于 Windows 计算节点,Batch 服务会将证书安装到指定的证书存储和位置。 对于 Linux 计算节点,证书存储在任务工作目录中的目录中,并向任务提供环境变量AZ_BATCH_CERTIFICATES_DIR以查询此位置。 对于可见性为“remoteUser”的证书,将在用户的主目录中(例如 /home/{user-name}/certs)中创建一个“certs”目录,并将证书置于该目录中。 CertificateReference[]
deploymentConfiguration 使用 CloudServiceConfiguration 指定应使用 Azure 云服务(PaaS)创建节点,而 VirtualMachineConfiguration 使用 Azure 虚拟机(IaaS)。 DeploymentConfiguration
displayName 显示名称不一定是唯一的,可以包含最大长度为 1024 的任何 Unicode 字符。 字符串
interNodeCommunication 这会对可分配给池的节点施加限制。 启用此值可以减少在池中分配请求的节点数的可能性。 如果未指定,则此值默认为“Disabled”。 “Disabled”
“Enabled”
maxTasksPerNode 默认值为 1。 最大值是池的 vmSize 核心数或 256 的 4 倍。 int
元数据 Batch 服务不向元数据分配任何含义;它仅用于使用用户代码。 MetadataItem[]
mountConfiguration 这支持 Azure 文件存储、NFS、CIFS/SMB 和 Blobfuse。 MountConfiguration[]
networkConfiguration 池的网络配置。 NetworkConfiguration
scaleSettings 定义池的所需大小。 这可以是指定所请求的目标DedicatedNode 的“fixedScale”,也可以是定义定期重新计算的公式的“autoScale”。 如果未指定此属性,则池将具有具有 0 个 targetDedicatedNodes 的固定缩放。 ScaleSettings
startTask 在 PATCH(更新)操作中,此属性可以设置为空对象,以从池中删除启动任务。 StartTask
taskSchedulingPolicy 如果未指定,则默认为分散。 TaskSchedulingPolicy
userAccounts 将在池中的每个节点上创建的用户帐户列表。 UserAccount[]
vmSize 有关云服务池(使用 cloudServiceConfiguration 创建的池)的可用虚拟机大小的信息,请参阅云服务的大小(https://azure.microsoft.com/documentation/articles/cloud-services-sizes-specs/)。 Batch 支持除 ExtraSmall 之外的所有云服务 VM 大小。 有关使用虚拟机市场(使用 virtualMachineConfiguration 创建的池)中的映像的可用 VM 大小的信息,请参阅虚拟机(Linux)(https://azure.microsoft.com/documentation/articles/virtual-machines-linux-sizes/)或虚拟机(Windows)的大小(https://azure.microsoft.com/documentation/articles/virtual-machines-windows-sizes/)。 Batch 支持除STANDARD_A0和具有高级存储(STANDARD_GS、STANDARD_DS和STANDARD_DSV2系列)之外的所有 Azure VM 大小。 字符串

PublicIPAddressConfiguration

名字 描述 价值
ipAddressIds 此处指定的 IP 数限制池的最大大小 - 可以为每个公共 IP 分配 50 个专用节点或 20 个低优先级节点。 例如,需要 150 个专用 VM 的池至少需要指定 3 个公共 IP。 此集合的每个元素都采用以下形式:/subscriptions/{subscription}/resourceGroups/{group}/providers/Microsoft.Network/publicIPAddresses/{ip}。 string[]
准备 默认值为 BatchManaged “BatchManaged”
“NoPublicIPAddresses”
“UserManaged”

ResourceFile

名字 描述 价值
autoStorageContainerName autoStorageContainerName、storageContainerUrl 和 httpUrl 属性互斥,必须指定其中一个属性。 字符串
blobPrefix 仅当使用 autoStorageContainerName 或 storageContainerUrl 时,该属性才有效。 此前缀可以是部分文件名或子目录。 如果未指定前缀,则会下载容器中的所有文件。 字符串
fileMode 此属性仅适用于下载到 Linux 计算节点的文件。 如果为将下载到 Windows 节点的 resourceFile 指定,将忽略它。 如果未为 Linux 节点指定此属性,则将默认值 0770 应用于该文件。 字符串
filePath 如果指定了 httpUrl 属性,则需要 filePath,并描述文件将下载到的路径,包括文件名。 否则,如果指定 autoStorageContainerName 或 storageContainerUrl 属性,则 filePath 是可选的,并且是将文件下载到的目录。 如果 filePath 用作目录,则与输入数据关联的任何目录结构都将完整保留并追加到指定的 filePath 目录。 指定的相对路径不能脱离任务的工作目录(例如,使用'.')。 字符串
httpUrl autoStorageContainerName、storageContainerUrl 和 httpUrl 属性互斥,必须指定其中一个属性。 如果 URL 是 Azure Blob 存储,则必须使用匿名访问来读取它;也就是说,下载 Blob 时 Batch 服务不提供任何凭据。 可通过两种方法获取 Azure 存储中 Blob 的此类 URL:包括授予对 Blob 的读取权限的共享访问签名(SAS),或为 Blob 或其容器设置 ACL 以允许公共访问。 字符串
storageContainerUrl autoStorageContainerName、storageContainerUrl 和 httpUrl 属性互斥,必须指定其中一个属性。 此 URL 必须使用匿名访问来读取和列出;也就是说,下载 Blob 时 Batch 服务不提供任何凭据。 可通过两种方法获取 Azure 存储中 Blob 的此类 URL:包括授予对 Blob 的读取和列表权限的共享访问签名(SAS),或为 Blob 或其容器设置 ACL 以允许公共访问。 字符串

ScaleSettings

名字 描述 价值
autoScale 此属性和 fixedScale 是互斥的,必须指定其中一个属性。 AutoScaleSettings
fixedScale 此属性和 autoScale 互斥,必须指定其中一个属性。 FixedScaleSettings

StartTask

名字 描述 价值
commandLine 命令行未在 shell 下运行,因此不能利用 shell 功能(如环境变量扩展)。 如果要利用这些功能,则应在命令行中调用 shell,例如在 Windows 中使用“cmd /c MyCommand”或在 Linux 中使用“/bin/sh -c MyCommand”。 如果指定了 startTask 的任何其他属性,则为必需。 字符串
containerSettings 指定此项后,AZ_BATCH_NODE_ROOT_DIR(节点上的 Azure Batch 目录的根目录)以递归方式映射到容器中,所有任务环境变量都映射到容器中,任务命令行在容器中执行。 TaskContainerSettings
environmentSettings 启动任务的环境变量设置列表。 EnvironmentSetting[]
maxTaskRetryCount 如果 Batch 服务退出代码为非零,则重试任务。 请注意,此值专门控制重试次数。 Batch 服务将尝试一次任务,然后最多可以重试此限制。 例如,如果最大重试计数为 3,Batch 将尝试任务最多 4 次(一次初始尝试和 3 次重试)。 如果最大重试计数为 0,Batch 服务不会重试该任务。 如果最大重试计数为 -1,Batch 服务将重试任务,且没有限制。 int
resourceFiles Batch 服务在运行命令行之前将下载到计算节点的文件列表。 ResourceFile[]
userIdentity 如果省略,任务将作为任务唯一的非管理用户运行。 UserIdentity
waitForSuccess 如果 true 并且启动任务在计算节点上失败,Batch 服务将启动任务重试到其最大重试计数(maxTaskRetryCount)。 如果任务在所有重试后仍未成功完成,Batch 服务会将计算节点标记为不可用,并且不会为其计划任务。 可以通过节点状态和计划错误详细信息来检测此条件。 如果为 false,Batch 服务不会等待启动任务完成。 在这种情况下,当启动任务仍在运行时,其他任务可以开始在计算节点上执行;即使启动任务失败,新任务也会继续在节点上计划。 默认值为 true。 bool

TaskContainerSettings

名字 描述 价值
containerRunOptions 除了 Batch 服务控制的选项外,这些附加选项还作为“docker create”命令的参数提供。 字符串
imageName 这是完整的映像引用,如指定为“docker pull”。 如果未将标记作为映像名称的一部分提供,则标记“:latest”用作默认值。 string (必需)
注册表 如果在创建池时已提供此设置,则可以省略此设置。 ContainerRegistry
workingDirectory 用于指示容器任务工作目录所在的位置的标志。 默认值为“taskWorkingDirectory”。 “ContainerImageDefault”
“TaskWorkingDirectory”

TaskSchedulingPolicy

名字 描述 价值
nodeFillType 如何跨计算节点分配任务。 “Pack”
“分散”(必需)

UserAccount

名字 描述 价值
elevationLevel nonAdmin - 自动用户是没有提升访问权限的标准用户。 管理员 - 自动用户是具有提升访问权限并具有完全管理员权限的用户。 默认值为 nonAdmin。 “Admin”
“NonAdmin”
linuxUserConfiguration 如果在 Windows 池上指定此属性,则忽略此属性。 如果未指定,则使用默认选项创建用户。 LinuxUserConfiguration
名字 用户帐户的名称。 string (必需)
密码 用户帐户的密码。 string (必需)
windowsUserConfiguration 只有在用户位于 Windows 池中时,才能指定此属性。 如果未指定且在 Windows 池上,则会使用默认选项创建用户。 WindowsUserConfiguration

UserIdentity

名字 描述 价值
autoUser userName 和 autoUser 属性互斥;必须指定一个,但不能同时指定两者。 AutoUserSpecification
userName userName 和 autoUser 属性互斥;必须指定一个,但不能同时指定两者。 字符串

VirtualMachineConfiguration

名字 描述 价值
containerConfiguration 如果指定,则会在池中的每个节点上执行安装程序,以允许任务在容器中运行。 在此池上运行的所有常规任务和作业管理器任务都必须指定 containerSettings 属性,所有其他任务都可以指定它。 ContainerConfiguration
dataDisks 如果池中的计算节点需要附加空数据磁盘,则必须指定此属性。 DataDisk[]
diskEncryptionConfiguration 如果指定了加密,则会在节点预配期间对池中的每个节点执行加密。 DiskEncryptionConfiguration
imageReference 对 Azure 虚拟机市场映像或自定义虚拟机的 Azure 映像资源的引用。 若要获取 Azure Batch 验证的所有 imageReference 的列表,请参阅“列出支持的节点代理 SKU”操作。 ImageReference(必需)
licenseType 这仅适用于包含 Windows 操作系统的映像,并且仅在为将要部署的节点保留有效的本地许可证时使用。 如果省略,则不会应用本地许可折扣。 值为:

Windows_Server - 本地许可证适用于 Windows Server。
Windows_Client - 本地许可证适用于 Windows 客户端。
字符串
nodeAgentSkuId Batch 节点代理是在池中的每个节点上运行的程序,并在节点与 Batch 服务之间提供命令和控制接口。 对于不同的操作系统,节点代理(称为 SKU)有不同的实现。 必须指定与所选映像引用匹配的节点代理 SKU。 若要获取支持的节点代理 SKU 及其已验证映像引用列表,请参阅“列出支持的节点代理 SKU”操作。 string (必需)
windowsConfiguration 如果 imageReference 指定 Linux OS 映像,则不能指定此属性。 WindowsConfiguration

WindowsConfiguration

名字 描述 价值
enableAutomaticUpdates 如果省略,则默认值为 true。 bool

WindowsUserConfiguration

名字 描述 价值
loginMode 指定用户的登录模式。 VirtualMachineConfiguration 池的默认值为交互式模式,而 CloudServiceConfiguration 池的默认值为批处理模式。 “Batch”
“Interactive”

快速入门模板

以下快速入门模板部署此资源类型。

模板 描述
不带公共 IP 地址的 Azure Batch 池

部署到 Azure
此模板创建没有公共 IP 地址的 Azure Batch 简化节点通信池。

Terraform (AzAPI 提供程序)资源定义

可以使用目标操作部署 batchAccounts/pools 资源类型:

  • 资源组

有关每个 API 版本中已更改属性的列表,请参阅 更改日志

资源格式

若要创建 Microsoft.Batch/batchAccounts/pools 资源,请将以下 Terraform 添加到模板。

resource "azapi_resource" "symbolicname" {
  type = "Microsoft.Batch/batchAccounts/pools@2020-05-01"
  name = "string"
  body = jsonencode({
    properties = {
      applicationLicenses = [
        "string"
      ]
      applicationPackages = [
        {
          id = "string"
          version = "string"
        }
      ]
      certificates = [
        {
          id = "string"
          storeLocation = "string"
          storeName = "string"
          visibility = [
            "string"
          ]
        }
      ]
      deploymentConfiguration = {
        cloudServiceConfiguration = {
          osFamily = "string"
          osVersion = "string"
        }
        virtualMachineConfiguration = {
          containerConfiguration = {
            containerImageNames = [
              "string"
            ]
            containerRegistries = [
              {
                password = "string"
                registryServer = "string"
                username = "string"
              }
            ]
            type = "DockerCompatible"
          }
          dataDisks = [
            {
              caching = "string"
              diskSizeGB = int
              lun = int
              storageAccountType = "string"
            }
          ]
          diskEncryptionConfiguration = {
            targets = [
              "string"
            ]
          }
          imageReference = {
            id = "string"
            offer = "string"
            publisher = "string"
            sku = "string"
            version = "string"
          }
          licenseType = "string"
          nodeAgentSkuId = "string"
          windowsConfiguration = {
            enableAutomaticUpdates = bool
          }
        }
      }
      displayName = "string"
      interNodeCommunication = "string"
      maxTasksPerNode = int
      metadata = [
        {
          name = "string"
          value = "string"
        }
      ]
      mountConfiguration = [
        {
          azureBlobFileSystemConfiguration = {
            accountKey = "string"
            accountName = "string"
            blobfuseOptions = "string"
            containerName = "string"
            relativeMountPath = "string"
            sasKey = "string"
          }
          azureFileShareConfiguration = {
            accountKey = "string"
            accountName = "string"
            azureFileUrl = "string"
            mountOptions = "string"
            relativeMountPath = "string"
          }
          cifsMountConfiguration = {
            mountOptions = "string"
            password = "string"
            relativeMountPath = "string"
            source = "string"
            username = "string"
          }
          nfsMountConfiguration = {
            mountOptions = "string"
            relativeMountPath = "string"
            source = "string"
          }
        }
      ]
      networkConfiguration = {
        endpointConfiguration = {
          inboundNatPools = [
            {
              backendPort = int
              frontendPortRangeEnd = int
              frontendPortRangeStart = int
              name = "string"
              networkSecurityGroupRules = [
                {
                  access = "string"
                  priority = int
                  sourceAddressPrefix = "string"
                  sourcePortRanges = [
                    "string"
                  ]
                }
              ]
              protocol = "string"
            }
          ]
        }
        publicIPAddressConfiguration = {
          ipAddressIds = [
            "string"
          ]
          provision = "string"
        }
        subnetId = "string"
      }
      scaleSettings = {
        autoScale = {
          evaluationInterval = "string"
          formula = "string"
        }
        fixedScale = {
          nodeDeallocationOption = "string"
          resizeTimeout = "string"
          targetDedicatedNodes = int
          targetLowPriorityNodes = int
        }
      }
      startTask = {
        commandLine = "string"
        containerSettings = {
          containerRunOptions = "string"
          imageName = "string"
          registry = {
            password = "string"
            registryServer = "string"
            username = "string"
          }
          workingDirectory = "string"
        }
        environmentSettings = [
          {
            name = "string"
            value = "string"
          }
        ]
        maxTaskRetryCount = int
        resourceFiles = [
          {
            autoStorageContainerName = "string"
            blobPrefix = "string"
            fileMode = "string"
            filePath = "string"
            httpUrl = "string"
            storageContainerUrl = "string"
          }
        ]
        userIdentity = {
          autoUser = {
            elevationLevel = "string"
            scope = "string"
          }
          userName = "string"
        }
        waitForSuccess = bool
      }
      taskSchedulingPolicy = {
        nodeFillType = "string"
      }
      userAccounts = [
        {
          elevationLevel = "string"
          linuxUserConfiguration = {
            gid = int
            sshPrivateKey = "string"
            uid = int
          }
          name = "string"
          password = "string"
          windowsUserConfiguration = {
            loginMode = "string"
          }
        }
      ]
      vmSize = "string"
    }
  })
}

属性值

ApplicationPackageReference

名字 描述 价值
id 要安装的应用程序包的 ID。 这必须与池位于同一批处理帐户内。 这可以是对特定版本的引用,也可以是默认版本(如果存在)。 string (必需)
版本 如果省略此项,并且没有为此应用程序指定默认版本,则请求将失败,错误代码 InvalidApplicationPackageReferences。 如果直接调用 REST API,则 HTTP 状态代码为 409。 字符串

AutoScaleSettings

名字 描述 价值
evaluationInterval 如果省略,则默认值为 15 分钟(PT15M)。 字符串
公式 池中所需计算节点数的公式。 string (必需)

AutoUserSpecification

名字 描述 价值
elevationLevel 默认值为 nonAdmin。 “Admin”
“NonAdmin”
范围 默认值为 Pool。 如果池正在运行 Windows,则应指定任务值(如果需要在任务之间进行更严格的隔离)。 例如,如果任务以可能影响其他任务的方式改变注册表,或者已在池中指定了证书,而正常任务不应可访问,但应可通过启动任务访问。 “Pool”
“Task”

AzureBlobFileSystemConfiguration

名字 描述 价值
accountKey 此属性与 sasKey 互斥,必须指定一个属性。 字符串
accountName Azure 存储帐户名称。 string (必需)
blobfuseOptions 这些是 Windows 中的“net use”选项,Linux 中的“装载”选项。 字符串
containerName Azure Blob 存储容器名称。 string (必需)
relativeMountPath 所有文件系统都相对于 Batch 装载目录进行装载,可通过AZ_BATCH_NODE_MOUNTS_DIR环境变量进行访问。 string (必需)
sasKey 此属性与 accountKey 互斥,必须指定一个属性。 字符串

AzureFileShareConfiguration

名字 描述 价值
accountKey Azure 存储帐户密钥。 string (必需)
accountName Azure 存储帐户名称。 string (必需)
azureFileUrl 此格式为“https://{account}.file.core.windows.net/”。 string (必需)
mountOptions 这些是 Windows 中的“net use”选项,Linux 中的“装载”选项。 字符串
relativeMountPath 所有文件系统都相对于 Batch 装载目录进行装载,可通过AZ_BATCH_NODE_MOUNTS_DIR环境变量进行访问。 string (必需)

CertificateReference

名字 描述 价值
id 要安装在池中的证书的完全限定 ID。 这必须与池位于同一批处理帐户内。 string (必需)
storeLocation 默认值为 currentUser。 此属性仅适用于使用 Windows 节点配置的池(即使用 cloudServiceConfiguration 创建或使用 Windows 映像引用的 virtualMachineConfiguration)。 对于 Linux 计算节点,证书存储在任务工作目录中的目录中,并向任务提供环境变量AZ_BATCH_CERTIFICATES_DIR以查询此位置。 对于可见性为“remoteUser”的证书,将在用户的主目录中(例如 /home/{user-name}/certs)中创建一个“certs”目录,并将证书置于该目录中。 “CurrentUser”
“LocalMachine”
storeName 此属性仅适用于使用 Windows 节点配置的池(即使用 cloudServiceConfiguration 创建或使用 Windows 映像引用的 virtualMachineConfiguration)。 常见的存储名称包括:My、Root、CA、Trust、Trustallowed、TrustedPeople、TrustedPublisher、AuthRoot、AddressBook,但也可以使用任何自定义存储名称。 默认值为“我的”。 字符串
能见度 计算节点上的哪些用户帐户应有权访问证书的专用数据。 包含任一项的字符串数组:
“RemoteUser”
“StartTask”
“Task”

CifsMountConfiguration

名字 描述 价值
mountOptions 这些是 Windows 中的“net use”选项,Linux 中的“装载”选项。 字符串
密码 用于针对 CIFS 文件系统进行身份验证的密码。 string (必需)
relativeMountPath 所有文件系统都相对于 Batch 装载目录进行装载,可通过AZ_BATCH_NODE_MOUNTS_DIR环境变量进行访问。 string (必需)
要装载的文件系统的 URI。 string (必需)
username 用于对 CIFS 文件系统进行身份验证的用户。 string (必需)

CloudServiceConfiguration

名字 描述 价值
osFamily 可能的值为:2 - OS 系列 2,等效于 Windows Server 2008 R2 SP1。 3 - OS 系列 3,等效于 Windows Server 2012。 4 - OS 系列 4,等效于 Windows Server 2012 R2。 5 - OS 系列 5,相当于 Windows Server 2016。 6 - OS 系列 6,等效于 Windows Server 2019。 有关详细信息,请参阅 Azure 来宾 OS 版本(https://azure.microsoft.com/documentation/articles/cloud-services-guestos-update-matrix/#releases)。 string (必需)
osVersion 默认值为 * ,指定指定 OS 系列的最新操作系统版本。 字符串

ContainerConfiguration

名字 描述 价值
containerImageNames 这是完整的映像引用,如指定为“docker pull”。 除非映像使用备用注册表完全限定映像,否则映像将源自默认 Docker 注册表。 string[]
containerRegistries 如果必须从需要凭据的专用注册表下载任何映像,则必须在此处提供这些凭据。 ContainerRegistry[]
类型 要使用的容器技术。 “DockerCompatible”(必需)

ContainerRegistry

名字 描述 价值
密码 登录到注册表服务器的密码。 string (必需)
registryServer 如果省略,则默认值为“docker.io”。 字符串
username 要登录到注册表服务器的用户名。 string (必需)

DataDisk

名字 描述 价值
缓存 值为:

none - 未启用磁盘的缓存模式。
readOnly - 磁盘的缓存模式是只读的。
readWrite - 磁盘的缓存模式是读取和写入。

缓存的默认值为 none。 有关缓存选项的信息,请参阅:https://blogs.msdn.microsoft.com/windowsazurestorage/2012/06/27/exploring-windows-azure-drives-disks-and-images/
“None”
“ReadOnly”
“ReadWrite”
diskSizeGB 创建新数据磁盘时的初始磁盘大小(以 GB 为单位)。 int (必需)
lun 用于唯一标识每个数据磁盘。 如果附加多个磁盘,每个磁盘应具有不同的 lun。 int (必需)
storageAccountType 如果省略,则默认值为“Standard_LRS”。 值为:

Standard_LRS - 数据磁盘应使用标准本地冗余存储。
Premium_LRS - 数据磁盘应使用高级本地冗余存储。
“Premium_LRS”
“Standard_LRS”

DeploymentConfiguration

名字 描述 价值
cloudServiceConfiguration 此属性和 virtualMachineConfiguration 互斥,必须指定其中一个属性。 如果将 Batch 帐户的 poolAllocationMode 属性设置为“UserSubscription”,则无法指定此属性。 CloudServiceConfiguration
virtualMachineConfiguration 此属性和 cloudServiceConfiguration 互斥,必须指定其中一个属性。 VirtualMachineConfiguration

DiskEncryptionConfiguration

名字 描述 价值
目标 在 Linux 池中,仅支持“TemporaryDisk”;在 Windows 池中,必须指定“OsDisk”和“TemporaryDisk”。 包含任一项的字符串数组:
“OsDisk”
“TemporaryDisk”

EnvironmentSetting

名字 描述 价值
名字 环境变量的名称。 string (必需)
价值 环境变量的值。 字符串

FixedScaleSettings

名字 描述 价值
nodeDeallocationOption 如果省略,则默认值为“重新排队”。 “Requeue”
“RetainedData”
“TaskCompletion”
“Terminate”
resizeTimeout 默认值为 15 分钟。 超时值使用 ISO 8601 格式。 例如,使用 PT10M 10 分钟。 最小值为 5 分钟。 如果指定的值小于 5 分钟,Batch 服务将拒绝请求并显示错误;如果直接调用 REST API,则 HTTP 状态代码为 400(请求错误)。 字符串
targetDedicatedNodes 必须设置至少一个 targetDedicatedNodes,targetLowPriorityNodes。 int
targetLowPriorityNodes 必须设置至少一个 targetDedicatedNodes,targetLowPriorityNodes。 int

ImageReference

名字 描述 价值
id 此属性与其他属性互斥。 共享映像库映像必须与 Azure Batch 帐户位于同一区域中的副本。 有关 Batch 节点代理与 Batch 服务通信的防火墙设置的信息,请参阅 /azure/batch/batch-api-basics#virtual-network-vnet-and-firewall-configuration。 字符串
提供 例如,UbuntuServer 或 WindowsServer。 字符串
发行人 例如,Canonical 或 MicrosoftWindowsServer。 字符串
sku 例如,18.04-LTS 或 2019-Datacenter。 字符串
版本 可以指定值“latest”以选择映像的最新版本。 如果省略,则默认值为“latest”。 字符串

InboundNatPool

名字 描述 价值
backendPort 这在 Batch 池中必须是唯一的。 可接受的值为 1 到 65535,但保留这些值时为 22、3389、29876 和 29877。 如果提供任何保留值,则请求失败并显示 HTTP 状态代码 400。 int (必需)
frontendPortRangeEnd 可接受的值介于 1 到 65534 之间,但 Batch 服务保留的端口范围为 50000 到 55000。 池中的所有范围都必须是不同的,并且不能重叠。 如果提供任何保留值或重叠值,则请求失败并显示 HTTP 状态代码 400。 int (必需)
frontendPortRangeStart 可接受的值介于 1 到 65534 之间,但保留的端口范围为 50000 到 55000。 池中的所有范围都必须是不同的,并且不能重叠。 如果提供任何保留值或重叠值,则请求失败并显示 HTTP 状态代码 400。 int (必需)
名字 名称在 Batch 池中必须唯一,可以包含字母、数字、下划线、句点和连字符。 名称必须以字母或数字开头,必须以字母、数字或下划线结尾,并且不能超过 77 个字符。 如果提供任何无效值,则请求失败并显示 HTTP 状态代码 400。 string (必需)
networkSecurityGroupRules 可以在 Batch 池的所有终结点上指定的最大规则数为 25。 如果未指定网络安全组规则,则会创建默认规则以允许对指定的 backendPort 进行入站访问。 如果超过网络安全组规则的最大数目,则请求失败并显示 HTTP 状态代码 400。 NetworkSecurityGroupRule[]
协议 终结点的协议。 “TCP”
“UDP”(必需)

LinuxUserConfiguration

名字 描述 价值
gid uid 和 gid 属性必须同时指定或根本不指定。 如果未指定基础操作系统,则选取 gid。 int
sshPrivateKey 私钥不得受密码保护。 当池的 enableInterNodeCommunication 属性为 true 时,私钥用于在 Linux 池中的节点之间自动配置基于非对称密钥的身份验证(如果 enableInterNodeCommunication 为 false,则忽略该身份验证)。 它通过将密钥对放入用户的 .ssh 目录来执行此操作。 如果未指定,则节点之间未配置无密码 SSH(未修改用户的 .ssh 目录)。 字符串
uid uid 和 gid 属性必须同时指定或根本不指定。 如果未指定基础操作系统,则选取 uid。 int

MetadataItem

名字 描述 价值
名字 元数据项的名称。 string (必需)
价值 元数据项的值。 string (必需)

Microsoft.Batch/batchAccounts/pools

名字 描述 价值
名字 资源名称 字符串

约束:
最小长度 = 1
最大长度 = 1
模式 = ^[a-zA-Z0-9_-]+$ (必需)
parent_id 此资源的父资源的 ID。 类型资源的 ID:batchAccounts
性能 与池关联的属性。 PoolProperties
类型 资源类型 “Microsoft.Batch/batchAccounts/pools@2020-05-01”

MountConfiguration

名字 描述 价值
azureBlobFileSystemConfiguration 此属性与其他所有属性互斥。 AzureBlobFileSystemConfiguration
azureFileShareConfiguration 此属性与其他所有属性互斥。 AzureFileShareConfiguration
cifsMountConfiguration 此属性与其他所有属性互斥。 CifsMountConfiguration
nfsMountConfiguration 此属性与其他所有属性互斥。 NFSMountConfiguration

NetworkConfiguration

名字 描述 价值
endpointConfiguration 池终结点配置仅在具有 virtualMachineConfiguration 属性的池上受支持。 PoolEndpointConfiguration
publicIPAddressConfiguration 此属性仅在具有 virtualMachineConfiguration 属性的池上受支持。 PublicIPAddressConfiguration
subnetId 虚拟网络必须与 Azure Batch 帐户位于同一区域和订阅中。 指定的子网应有足够的可用 IP 地址来容纳池中的节点数。 如果子网没有足够的可用 IP 地址,池将部分分配计算节点,并发生调整大小错误。 “MicrosoftAzureBatch”服务主体必须具有指定 VNet 的“经典虚拟机参与者”Role-Based 访问控制(RBAC)角色。 指定的子网必须允许来自 Azure Batch 服务的通信,以便能够在计算节点上计划任务。 可以通过检查指定的 VNet 是否具有任何关联的网络安全组(NSG)来验证这一点。 如果 NSG 拒绝与指定子网中的计算节点的通信,Batch 服务会将计算节点的状态设置为不可用。 如果指定的 VNet 具有任何关联的网络安全组(NSG),则必须为入站通信启用一些保留的系统端口。 对于使用虚拟机配置创建的池,请启用端口 29876 和 29877,以及适用于 Linux 的端口 22 和适用于 Windows 的端口 3389。 对于使用云服务配置创建的池,请启用端口 10100、20100 和 30100。 此外,在端口 443 上启用到 Azure 存储的出站连接。 对于 cloudServiceConfiguration 池,仅支持“经典”VNET。 有关详细信息,请参阅:/azure/batch/batch-api-basics#virtual-network-vnet-and-firewall-configuration 字符串

NetworkSecurityGroupRule

名字 描述 价值
访问 应对指定 IP 地址、子网范围或标记执行的操作。 “允许”
“拒绝”(必需)
优先权 池中的优先级必须是唯一的,并且按优先级顺序进行评估。 优先级越高的数字越低。 例如,可以使用订单号 150、250 和 350 指定规则。 顺序编号为 150 的规则优先于顺序为 250 的规则。 允许的优先级为 150 到 4096。 如果提供了任何保留值或重复值,则请求失败并显示 HTTP 状态代码 400。 int (必需)
sourceAddressPrefix 有效值为单个 IP 地址(即 10.10.10.10)、IP 子网(即 192.168.1.0/24)、默认标记或 * (适用于所有地址)。 如果提供了任何其他值,请求将失败并显示 HTTP 状态代码 400。 string (必需)
sourcePortRanges 有效值为“*”(对于所有端口 0 - 65535)或端口或端口范围的数组(即 100-200)。 端口应介于 0 到 65535 的范围内,端口范围或端口不能重叠。 如果提供了任何其他值,请求将失败并显示 HTTP 状态代码 400。 默认值为 *。 string[]

NFSMountConfiguration

名字 描述 价值
mountOptions 这些是 Windows 中的“net use”选项,Linux 中的“装载”选项。 字符串
relativeMountPath 所有文件系统都相对于 Batch 装载目录进行装载,可通过AZ_BATCH_NODE_MOUNTS_DIR环境变量进行访问。 string (必需)
要装载的文件系统的 URI。 string (必需)

PoolEndpointConfiguration

名字 描述 价值
inboundNatPools 每个 Batch 池的最大入站 NAT 池数为 5。 如果超出最大入站 NAT 池数,则请求失败并显示 HTTP 状态代码 400。 InboundNatPool[] (必需)

PoolProperties

名字 描述 价值
applicationLicenses 应用程序许可证列表必须是可用 Batch 服务应用程序许可证的子集。 如果请求的许可证不受支持,则池创建将失败。 string[]
applicationPackages 对应用程序包引用的更改会影响所有加入池的新计算节点,但在重新启动或重新映像之前,不会影响池中已有的计算节点。 任何给定池上最多有 10 个应用程序包引用。 ApplicationPackageReference[]
证书 对于 Windows 计算节点,Batch 服务会将证书安装到指定的证书存储和位置。 对于 Linux 计算节点,证书存储在任务工作目录中的目录中,并向任务提供环境变量AZ_BATCH_CERTIFICATES_DIR以查询此位置。 对于可见性为“remoteUser”的证书,将在用户的主目录中(例如 /home/{user-name}/certs)中创建一个“certs”目录,并将证书置于该目录中。 CertificateReference[]
deploymentConfiguration 使用 CloudServiceConfiguration 指定应使用 Azure 云服务(PaaS)创建节点,而 VirtualMachineConfiguration 使用 Azure 虚拟机(IaaS)。 DeploymentConfiguration
displayName 显示名称不一定是唯一的,可以包含最大长度为 1024 的任何 Unicode 字符。 字符串
interNodeCommunication 这会对可分配给池的节点施加限制。 启用此值可以减少在池中分配请求的节点数的可能性。 如果未指定,则此值默认为“Disabled”。 “Disabled”
“Enabled”
maxTasksPerNode 默认值为 1。 最大值是池的 vmSize 核心数或 256 的 4 倍。 int
元数据 Batch 服务不向元数据分配任何含义;它仅用于使用用户代码。 MetadataItem[]
mountConfiguration 这支持 Azure 文件存储、NFS、CIFS/SMB 和 Blobfuse。 MountConfiguration[]
networkConfiguration 池的网络配置。 NetworkConfiguration
scaleSettings 定义池的所需大小。 这可以是指定所请求的目标DedicatedNode 的“fixedScale”,也可以是定义定期重新计算的公式的“autoScale”。 如果未指定此属性,则池将具有具有 0 个 targetDedicatedNodes 的固定缩放。 ScaleSettings
startTask 在 PATCH(更新)操作中,此属性可以设置为空对象,以从池中删除启动任务。 StartTask
taskSchedulingPolicy 如果未指定,则默认为分散。 TaskSchedulingPolicy
userAccounts 将在池中的每个节点上创建的用户帐户列表。 UserAccount[]
vmSize 有关云服务池(使用 cloudServiceConfiguration 创建的池)的可用虚拟机大小的信息,请参阅云服务的大小(https://azure.microsoft.com/documentation/articles/cloud-services-sizes-specs/)。 Batch 支持除 ExtraSmall 之外的所有云服务 VM 大小。 有关使用虚拟机市场(使用 virtualMachineConfiguration 创建的池)中的映像的可用 VM 大小的信息,请参阅虚拟机(Linux)(https://azure.microsoft.com/documentation/articles/virtual-machines-linux-sizes/)或虚拟机(Windows)的大小(https://azure.microsoft.com/documentation/articles/virtual-machines-windows-sizes/)。 Batch 支持除STANDARD_A0和具有高级存储(STANDARD_GS、STANDARD_DS和STANDARD_DSV2系列)之外的所有 Azure VM 大小。 字符串

PublicIPAddressConfiguration

名字 描述 价值
ipAddressIds 此处指定的 IP 数限制池的最大大小 - 可以为每个公共 IP 分配 50 个专用节点或 20 个低优先级节点。 例如,需要 150 个专用 VM 的池至少需要指定 3 个公共 IP。 此集合的每个元素都采用以下形式:/subscriptions/{subscription}/resourceGroups/{group}/providers/Microsoft.Network/publicIPAddresses/{ip}。 string[]
准备 默认值为 BatchManaged “BatchManaged”
“NoPublicIPAddresses”
“UserManaged”

ResourceFile

名字 描述 价值
autoStorageContainerName autoStorageContainerName、storageContainerUrl 和 httpUrl 属性互斥,必须指定其中一个属性。 字符串
blobPrefix 仅当使用 autoStorageContainerName 或 storageContainerUrl 时,该属性才有效。 此前缀可以是部分文件名或子目录。 如果未指定前缀,则会下载容器中的所有文件。 字符串
fileMode 此属性仅适用于下载到 Linux 计算节点的文件。 如果为将下载到 Windows 节点的 resourceFile 指定,将忽略它。 如果未为 Linux 节点指定此属性,则将默认值 0770 应用于该文件。 字符串
filePath 如果指定了 httpUrl 属性,则需要 filePath,并描述文件将下载到的路径,包括文件名。 否则,如果指定 autoStorageContainerName 或 storageContainerUrl 属性,则 filePath 是可选的,并且是将文件下载到的目录。 如果 filePath 用作目录,则与输入数据关联的任何目录结构都将完整保留并追加到指定的 filePath 目录。 指定的相对路径不能脱离任务的工作目录(例如,使用'.')。 字符串
httpUrl autoStorageContainerName、storageContainerUrl 和 httpUrl 属性互斥,必须指定其中一个属性。 如果 URL 是 Azure Blob 存储,则必须使用匿名访问来读取它;也就是说,下载 Blob 时 Batch 服务不提供任何凭据。 可通过两种方法获取 Azure 存储中 Blob 的此类 URL:包括授予对 Blob 的读取权限的共享访问签名(SAS),或为 Blob 或其容器设置 ACL 以允许公共访问。 字符串
storageContainerUrl autoStorageContainerName、storageContainerUrl 和 httpUrl 属性互斥,必须指定其中一个属性。 此 URL 必须使用匿名访问来读取和列出;也就是说,下载 Blob 时 Batch 服务不提供任何凭据。 可通过两种方法获取 Azure 存储中 Blob 的此类 URL:包括授予对 Blob 的读取和列表权限的共享访问签名(SAS),或为 Blob 或其容器设置 ACL 以允许公共访问。 字符串

ScaleSettings

名字 描述 价值
autoScale 此属性和 fixedScale 是互斥的,必须指定其中一个属性。 AutoScaleSettings
fixedScale 此属性和 autoScale 互斥,必须指定其中一个属性。 FixedScaleSettings

StartTask

名字 描述 价值
commandLine 命令行未在 shell 下运行,因此不能利用 shell 功能(如环境变量扩展)。 如果要利用这些功能,则应在命令行中调用 shell,例如在 Windows 中使用“cmd /c MyCommand”或在 Linux 中使用“/bin/sh -c MyCommand”。 如果指定了 startTask 的任何其他属性,则为必需。 字符串
containerSettings 指定此项后,AZ_BATCH_NODE_ROOT_DIR(节点上的 Azure Batch 目录的根目录)以递归方式映射到容器中,所有任务环境变量都映射到容器中,任务命令行在容器中执行。 TaskContainerSettings
environmentSettings 启动任务的环境变量设置列表。 EnvironmentSetting[]
maxTaskRetryCount 如果 Batch 服务退出代码为非零,则重试任务。 请注意,此值专门控制重试次数。 Batch 服务将尝试一次任务,然后最多可以重试此限制。 例如,如果最大重试计数为 3,Batch 将尝试任务最多 4 次(一次初始尝试和 3 次重试)。 如果最大重试计数为 0,Batch 服务不会重试该任务。 如果最大重试计数为 -1,Batch 服务将重试任务,且没有限制。 int
resourceFiles Batch 服务在运行命令行之前将下载到计算节点的文件列表。 ResourceFile[]
userIdentity 如果省略,任务将作为任务唯一的非管理用户运行。 UserIdentity
waitForSuccess 如果 true 并且启动任务在计算节点上失败,Batch 服务将启动任务重试到其最大重试计数(maxTaskRetryCount)。 如果任务在所有重试后仍未成功完成,Batch 服务会将计算节点标记为不可用,并且不会为其计划任务。 可以通过节点状态和计划错误详细信息来检测此条件。 如果为 false,Batch 服务不会等待启动任务完成。 在这种情况下,当启动任务仍在运行时,其他任务可以开始在计算节点上执行;即使启动任务失败,新任务也会继续在节点上计划。 默认值为 true。 bool

TaskContainerSettings

名字 描述 价值
containerRunOptions 除了 Batch 服务控制的选项外,这些附加选项还作为“docker create”命令的参数提供。 字符串
imageName 这是完整的映像引用,如指定为“docker pull”。 如果未将标记作为映像名称的一部分提供,则标记“:latest”用作默认值。 string (必需)
注册表 如果在创建池时已提供此设置,则可以省略此设置。 ContainerRegistry
workingDirectory 用于指示容器任务工作目录所在的位置的标志。 默认值为“taskWorkingDirectory”。 “ContainerImageDefault”
“TaskWorkingDirectory”

TaskSchedulingPolicy

名字 描述 价值
nodeFillType 如何跨计算节点分配任务。 “Pack”
“分散”(必需)

UserAccount

名字 描述 价值
elevationLevel nonAdmin - 自动用户是没有提升访问权限的标准用户。 管理员 - 自动用户是具有提升访问权限并具有完全管理员权限的用户。 默认值为 nonAdmin。 “Admin”
“NonAdmin”
linuxUserConfiguration 如果在 Windows 池上指定此属性,则忽略此属性。 如果未指定,则使用默认选项创建用户。 LinuxUserConfiguration
名字 用户帐户的名称。 string (必需)
密码 用户帐户的密码。 string (必需)
windowsUserConfiguration 只有在用户位于 Windows 池中时,才能指定此属性。 如果未指定且在 Windows 池上,则会使用默认选项创建用户。 WindowsUserConfiguration

UserIdentity

名字 描述 价值
autoUser userName 和 autoUser 属性互斥;必须指定一个,但不能同时指定两者。 AutoUserSpecification
userName userName 和 autoUser 属性互斥;必须指定一个,但不能同时指定两者。 字符串

VirtualMachineConfiguration

名字 描述 价值
containerConfiguration 如果指定,则会在池中的每个节点上执行安装程序,以允许任务在容器中运行。 在此池上运行的所有常规任务和作业管理器任务都必须指定 containerSettings 属性,所有其他任务都可以指定它。 ContainerConfiguration
dataDisks 如果池中的计算节点需要附加空数据磁盘,则必须指定此属性。 DataDisk[]
diskEncryptionConfiguration 如果指定了加密,则会在节点预配期间对池中的每个节点执行加密。 DiskEncryptionConfiguration
imageReference 对 Azure 虚拟机市场映像或自定义虚拟机的 Azure 映像资源的引用。 若要获取 Azure Batch 验证的所有 imageReference 的列表,请参阅“列出支持的节点代理 SKU”操作。 ImageReference(必需)
licenseType 这仅适用于包含 Windows 操作系统的映像,并且仅在为将要部署的节点保留有效的本地许可证时使用。 如果省略,则不会应用本地许可折扣。 值为:

Windows_Server - 本地许可证适用于 Windows Server。
Windows_Client - 本地许可证适用于 Windows 客户端。
字符串
nodeAgentSkuId Batch 节点代理是在池中的每个节点上运行的程序,并在节点与 Batch 服务之间提供命令和控制接口。 对于不同的操作系统,节点代理(称为 SKU)有不同的实现。 必须指定与所选映像引用匹配的节点代理 SKU。 若要获取支持的节点代理 SKU 及其已验证映像引用列表,请参阅“列出支持的节点代理 SKU”操作。 string (必需)
windowsConfiguration 如果 imageReference 指定 Linux OS 映像,则不能指定此属性。 WindowsConfiguration

WindowsConfiguration

名字 描述 价值
enableAutomaticUpdates 如果省略,则默认值为 true。 bool

WindowsUserConfiguration

名字 描述 价值
loginMode 指定用户的登录模式。 VirtualMachineConfiguration 池的默认值为交互式模式,而 CloudServiceConfiguration 池的默认值为批处理模式。 “Batch”
“Interactive”