部署条件缩小了策略的范围,以便仅将其应用于满足条件的部署。例如,您可以使用部署条件创建仅应用于特定目录项或模板的策略。

构建部署条件

可以使用图形界面构建部署条件表达式。要构建复杂表达式,可以使用 AND 和 OR。此外,还可以将表达式分组为带括号的运算符。有关如何处理表达式的详细信息,请参见表达式的运算顺序

以下是表达式示例。
deployment equals Multi-tier with LB AND (ownedBy equals jan@mycompany.com OR ownedBy kris@mycompany.com)
部署条件组件的使用类似于以下示例。
部署条件示例。

部署条件属性

要创建功能部署条件,您必须了解语法。

条件文本框具有各种提供可用属性和运算符的下拉菜单。表达式的构建方式取决于可用值和运算顺序。

下拉菜单包含以下属性。某些属性在策略类型之间有所不同。

属性 说明 可用于的策略类型 支持这些运算符
Cloud Template

用于创建部署的 Cloud Assembly 云模板的标识符。

当您的策略特定于 Cloud Assembly 云模板时,使用 Cloud Template,而不使用 Catalog Item。例如,Amazon Web Services 模板没有 Cloud Template
  • 批准
  • 实施后操作
  • 租约
  • 等于
  • 不等于

Catalog Item

用于请求部署的 Service Broker 目录项的标识符。

当策略可以包括基于任何模板、可扩展性工作流或其他内容类型的 Service Broker 目录项时,请使用 Catalog Item,而不使用 Cloud Template。例如,从目录中部署的 Cloud Assembly 云模板和 Amazon Web Services CloudFormation 模板具有 Catalog Item

  • 批准
  • 实施后操作
  • 租约
  • 等于
  • 不等于
Deployment Creation Cost

成本值。

如果部署与指定的成本表达式匹配,它会触发批准流程。

  • 批准
  • 等于
  • 不等于
  • 大于
  • 大于或等于
  • 小于
  • 小于或等于
Deployment 部署的标识符。
  • 批准
  • 等于
  • 不等于
Created By

请求部署的用户的名称。格式为 username@mycompany.com。

此用户是请求部署的用户。

  • 实施后操作
  • 租约
  • 等于
  • 不等于
  • 匹配正则表达式
  • 包含
Name 部署名称。
  • 实施后操作
  • 租约
  • 等于
  • 不等于
  • 匹配正则表达式
  • 包含
Owned By

当前部署所有者的名称。

  • 批准
  • 实施后操作
  • 租约
  • 等于
  • 不等于
  • 匹配正则表达式
  • 包含
Requested By

请求实施后操作的用户的名称。格式为 username@mycompany.com。

创建批准策略时,requestedBy 条件是请求实施后操作的用户,而不是请求部署的用户。请求部署的用户是 createdBy 条件。

  • 批准
  • 等于
  • 不等于
  • 匹配正则表达式
  • 包含
Resources 属于部署的资源。

您可以基于以下资源定义部署条件。

  • CPU 计数
  • 云类型
  • 特定实例
  • 区域
  • 标记

    用户定义的标记和发现的标记。

  • 总内存 (MB)
  • 资源类型
  • 批准
  • 实施后操作
  • 租约

您可以基于以下其他资源定义批准条件。

  • 云区域
  • 云帐户
  • 具有快照
  • 映像
  • 映像 ID
  • 操作系统类型
  • 电源状态
  • 磁盘
  • 批准

资源标记的条件格式

资源标记是键值对。根据标记定义部署条件时,您必须定义密钥。定义值是可选操作。条件基于用户定义的标记和系统标记。

例如,要为一个标记对创建条件,表达式将类似于以下示例。
resources has any 
    tags has any 
        key equals env 
        AND 
        value equals dev
UI 中显示的一个键值对的简单部署条件表达式示例。
要基于一个键、多个值创建条件,表达式将类似于以下示例。
resources has any 
    tags has any 
        key equals env 
            AND 
                value equals dev 
                OR
                value equals prod
UI 中显示的单键多值部署条件表达式示例。
要基于多个键、零个值创建条件,表达式将类似于以下示例。
resources has any 
    tags has any 
        key equals env1 
        OR 
        key equals env2
UI 中显示的多键部署条件表达式示例。
如果要创建用于计算两个不同键值对的条件,则必须将其添加为单独的资源标记。例如,
resources has any 
    tags has any 
        key equals env 
        AND 
        value equals envprod
    AND
    tags has any 
        key equals vc_65_network 
        AND 
        value equals vc
UI 中显示的多键多值部署条件表达式示例。

使用包含匹配正则表达式运算符

containsmatches Regex 运算符定义在属性中搜索一组指定的字符。可以将这些运算符应用于不支持下拉菜单的基于字符串的属性,如 createdBynameownedBy

contains 运算符可在任何上下文中搜索指定值的所有实例。值输入文本框区分大小写和空格。如果要考虑上下文差异,则必须为每个其他变体设置一个值。可使用 contains 运算符对有限数量的值进行简单搜索。

matches Regex 运算符提供了很大的灵活性,可将其用于执行需要考虑大量上下文变化的复杂搜索。正则表达式必须遵循 ECMAScript 语法。定义正则表达式时,请勿在值的开头和结尾输入正斜杠 (/)。

下表提供了使用这两个运算符的表达式示例,并列出了使用这两个运算符实现相同目标的比较情况。

使用 contains 运算符的示例 使用 matches Regex 运算符的示例 字段值匹配
name contains test
name matches Regex test*

包含小写 test 的所有部署名称。例如,test deploymentmytesttest-123 等。

name contains test
OR
name contains Test
name matches Regex (t|T)est.*

包含 testTest 的所有部署名称。

(group)
	createdBy contains admin@
	(group)
	AND
		createdBy contains .com
		OR
		createdBy contains .org
(group)
AND
	name contains test
	OR
	name contains test-
	OR
	name contains Test
	OR
	name contains Test-
	OR
	name contains deploy
	OR
	name contains Deploy
createdBy matches Regex admin@\S+\.((com)|(org))
AND
name matches ((t|T)est)|(d|D)epl.*.

电子邮件地址以 admin@ 开头并以 .com.org 结尾的用户创建的所有部署。

包含任何配置的 test 和/或 deploy 的所有部署名称。例如,test deploymenttestdeploymentTest-Deployment 等。

表达式的运算顺序

按以下顺序处理表达式。组用圆括号表示。

  1. 组中的表达式
  2. AND

以下示例可帮助您了解此顺序。

  • X OR Y AND Z。在此示例中,先计算 Y AND Z,而不是 X OR Y。接下来,对 X OR 与 Y AND Z 的结果执行计算。
  • (X OR Y) AND Z。在此示例中,先计算 X OR Y,而不是 AND,因为始终要先计算组中的表达式。接下来,对 X OR Y 的结果与 AND Z 执行计算。