作为云或项目管理员,您有一个针对环境中资源的规定命名约定,并且您希望部署的资源遵循这些约定,而无需用户交互。可以在 Cloud Assembly 中为部分或所有部署创建全局命名模板。

首先,您可以创建项目级别的自定义名称或组织级别名称。项目级别的自定义名称优先于组织级别名称。此示例从简单的组织自定义名称开始,然后添加项目级别的命名。

小心: 如果您具有云模板或使用 API,若为每个项目同时部署 2000 个或更多资源并且应用自定义名称,则在部署其中某些资源时可能会出现 Retries exhausted 错误。如果这种情况很常见,则不应将新的自定义名称应用于发生此情况的项目或组织。应使用默认系统命名,而不是自定义命名选项。

必备条件

创建组织级别的自定义模板

如果希望为没有项目级别模板的部署使用默认自定义名称模板,请创建组织范围的模板。

  1. 选择基础架构 > 管理 > 自定义名称,然后单击新建自定义名称
  2. 输入名称

    此示例使用 Prefix and Timestamp for Org

  3. 选择组织作为范围。
  4. 单击新建命名模板并配置以下选项。
    选项 示例值
    资源类型 计算机
    模板格式 mcm-${timestamp}-${#######}
    起始计数器值 1
    增量步骤 1

    通过此配置,所有项目的所有部署都将从此起点递增。

    在此示例中,起始计数器为 1,增量为 1,第一个部署编号为 2。如果部署需要从 1 开始,则将起始计数器设置为零,并将增量步骤设置为 1。

  5. 单击添加
  6. 使用以下示例继续为其他资源类型添加模板。
    资源类型名称 命名模板格式
    计算机 mcm-${timestamp}-${##}
    网络 ntw-${timestamp}-${##}
    存储 stg-${timestamp}-${##}
    负载均衡器 ldb-${timestamp}-${##}
    资源组 rsg-${timestamp}-${##}
    网关 gtw-${timestamp}-${##}
    NAT nat-${timestamp}-${##}
    安全组 scg-${timestamp}-${##}
  7. 单击创建
  8. 通过部署包含已定义资源类型的模板来测试名称模板。
    已部署资源,其中显示了组织级别的自定义名称。

创建具有高级模式匹配的项目级别自定义模板

可以创建一个可分配给不同项目的自定义名称模板。可以使用高级选项为不同的项目设置不同的编号起点。

此示例使用 计算机资源。

  1. 选择基础架构 > 管理 > 自定义名称,然后单击新建自定义名称
  2. 输入名称

    此示例使用 Project Name with Advanced Numbering

  3. 选择项目作为范围。
  4. 单击新建命名模板并配置以下选项。
    选项 示例值
    资源类型 计算机
    模板格式 ${project.name}-${######}
    起始计数器值 1
    增量步骤 1

    通过此配置,已分配项目中的部署将从此起点递增。

    在此示例中,起始计数器为 1,增量为 1,第一个部署编号为 2。如果部署需要从 1 开始,则将起始计数器设置为零,并将增量步骤设置为 1。以 1 作为起始值时,项目 A 以 2 开始,项目 B 也以 2 开始,除非该值被高级匹配模式值覆盖。

  5. 要进一步细化默认组织命名模板,请单击高级,然后单击添加匹配模式

    可以设置不同的命名模式,以不同的数字开始计数器,也可以将每个模式的数字重置为 1。例如,Sales 项目编号从 100 开始,Marketing 项目编号从 200 开始。

    1. 输入 Sales 项目的模式。
      选项 示例值
      模式文本 Sales-
      起始计数器值 100
    2. 输入 Marketing 项目的模式。
      选项 示例值
      模式文本 Marketing-
      起始计数器值 200
  6. 单击添加
  7. 根据需要继续为其他资源类型添加模板。
  8. 单击分配项目,然后添加 Sales 和 Marketing 项目。
  9. 单击创建
  10. 测试名称模板,即,先部署 Sales 项目中的云模板,然后再部署 Marketing 项目中的云模板。
    已部署资源,其中显示了 Sales 项目的项目级别自定义名称。

具有自定义属性和项目特定值的自定义名称示例

除了模板格式自动填充选项中提供的属性之外,还可以使用自定义属性。要在自定义名称中使用自定义属性,必须在属性组中定义这些属性。

云模板中的自定义属性值优先于自定义名称中的相同属性值。

此示例使用 costCenter 作为属性,SalesCost 作为 Sales 项目的值,MktCost 作为 Marketing 项目的值。

  1. 创建名为 costingPG 的属性组。
    1. 选择基础架构 > 设计 > 属性组,然后单击新建属性组
    2. 单击输入值
    3. 输入名称 costingPG
    4. 对于范围,选择可用于任何项目
    5. 单击新建属性,配置以下值,并输入名称 costCenter
      选项 示例值
      名称 costCenter
      类型 字符串
      默认值 研究
    6. 单击创建
    7. 单击创建以保存新属性组。
  2. 为 Sales 项目和 Marketing 项目配置自定义属性。

    这些步骤将演示针对 Sales 项目的流程。您可以重复上述步骤并使用市场推广项目值。

    • Sales 属性名称:costingPG.costCenter。值:SalesCost。
    • 市场营销属性名称:costingPG.costCenter。值:MktCost。
    1. 选择基础架构 > 管理 > 项目,然后打开 Sales 项目。
    2. 单击置备选项卡,然后找到“自定义属性”部分。
    3. 输入 costingPG.costCenter 作为属性名称,并输入 SalesCost 作为值。
      项目“置备”选项卡的“自定义属性”部分中的自定义属性 costingPG.costCenter 和 SalesCost 值。
    4. 单击保存
    5. 在 Marketing 项目中重复执行此过程并使用 MktCost 作为属性值。
  3. 创建项目级别的自定义名称。

    此示例使用与高级示例相同的项目。一次只能将自定义名称分配给一个项目。要测试此示例的结果,可以将自定义名称应用于新项目,也可以从 Project Name with Advanced Numbering 示例中移除 Sales 和 Marketing 项目。

    此示例假设您尚未分配 Sales 和 Marketing 项目。

    1. 选择基础架构 > 管理 > 自定义名称,然后单击新建自定义名称
    2. 输入 Project Name and costingPG 作为名称
    3. 选择项目作为范围。
    4. 单击新建命名模板并配置以下选项。
      表 1.
      选项
      资源类型 计算机
      模板格式 ${project.name}-{costingPG.costCenter}-${######}
      起始计数器值 1
      增量步骤 1
    5. 单击添加
    6. 单击分配项目,然后添加 Sales 和 Marketing 项目。
    7. 单击创建
  4. 测试名称模板,即,先部署 Sales 项目中的云模板,然后再部署 Marketing 项目中的云模板。
    图 1. 销售项目资源名称

    部署详细信息,其中显示资源名称为 Sales-SalesCost-000002。
    图 2. 市场推广项目资源名称

    部署详细信息,其中显示资源名称为 Marketing-MktCost-000002。

具有属性组和模板用户输入的自定义名称示例

此示例展示了如何基于模板中的用户输入创建自定义名称。可以在云模板中定义两个用户输入(操作系统和大小)。其中一个用户输入 mktSite 使用 site.siteCode 自定义属性,该属性接受用户输入,您将其添加到云模板。

  1. 定义营销项目的自定义属性。
    1. 选择基础架构 > 设计 > 属性组,然后单击新建属性组
    2. 单击输入值
    3. 命名和描述属性组。
      选项
      名称 site
      范围

      可用于任何项目。

      属性组必须通用,以便可以在自定义名称模板格式中使用属性。

    4. 单击新建属性并配置以下值。
      选项
      名称 siteCode
      类型 字符串
      默认值 West
      更多选项 > 枚举值

      为 East、West、North 和 South 输入单独的值。

      这些值表示用户可能会选择的站点代码。

  2. 创建自定义命名模板。
    1. 选择基础架构 > 自定义名称 > 新建自定义名称
    2. 输入名称 Site-OS-Size for Marketing Project
    3. 选择“项目”。

      如果您已经具有组织范围的自定义名称,则“项目”处于选中状态并且是唯一的选项。

    4. 单击新建命名模板并配置以下选项。
      选项
      资源类型 计算机
      模板格式

      ${site.siteCode}-${resource.name}-${######}

      site.siteCode 属性是在上一步中定义的属性。下一步将在云模板中定义 resource.name。

      起始计数器值 1
      增量步骤 1
  3. 在模板中定义用户输入。

    此示例中包含的用户输入包括操作系统和大小,以及基于 site.siteCode 自定义属性的用户输入。

    出于演示目的,此步骤中的云模板非常简单。可以将该示例应用于现有模板之一。

    1. 选择设计 > 新建自 > 空白画布
    2. 输入名称 Marketing Template
    3. 项目列表中,选择 Marketing
    4. 单击创建
    5. 输入云模板的代码或使用以下示例代码。

      请注意,用户输入适用于大小和操作系统。为特定实例 (${input.size}) 和映像 (${input.OS}) 计算机属性中的每个输入配置变量。最后,使用名称属性构建可在自定义命名模板中使用的资源名称 (${input.OS}-${input.size})。

      formatVersion: 1
      inputs:
        size:
          type: string
          enum:
            - small
            - medium
        OS:
          type: string
          enum:
            - centos
            - ubuntu
      resources:
        Cloud_vSphere_Network_1:
          type: Cloud.vSphere.Network
          properties:
            networkType: existing
        Cloud_Machine_1:
          type: Cloud.Machine
          properties:
            image: ${input.OS}
            flavor: ${input.size}
            name: ${input.OS}-${input.size}
            networks:
              - network: ${resource.Cloud_vSphere_Network_1.id}
      
    6. 要将 site.siteCode 自定义属性添加为用户输入,请单击右侧窗格中的输入选项卡,然后配置以下选项。
      选项
      名称 mktSite
      显示名称 选择站点
      类型 Object
      选择对象类型 属性组
      从现有属性组中选择 site
    7. 在“代码”选项卡上,会看到添加的 mktSite 用户输入,然后更新 YAML 以包含该自定义属性。

      例如,将 site.siteCode: ${input.mktSite.siteCode} 添加到 YAML。

      formatVersion: 1
      inputs:
        size:
          type: string
          title: Select the machine size
          enum:
            - small
            - medium
        OS:
          type: string
          title: Select an operating system
          enum:
            - centos
            - ubuntu
        mktSite:
          type: object
          $ref: /ref/property-groups/site
          title: Select a site
      resources:
        Cloud_vSphere_Network_1:
          type: Cloud.vSphere.Network
          properties:
            networkType: existing
        Cloud_Machine_1:
          type: Cloud.Machine
          properties:
            image: ${input.OS}
            flavor: ${input.size}
            name: ${input.OS}-${input.size}
            networks:
              - network: ${resource.Cloud_vSphere_Network_1.id}
            site.siteCode: ${input.mktSite.siteCode}
  4. 部署模板并验证自定义计算机名称。

    由于 West 是默认值,请选择 West 以外的站点。


    cloud_machine 部署详细信息,其中显示资源名称为 East-centos-small-000011。

部署时的资源命名优先级

根据配置自定义命名的方式,这些名称将根据以下规则应用于已部署的资源。

常见做法是定义一个通用的组织级别命名模板,然后根据项目管理需求创建一个或多个项目级别模板。

自定义命名场景 优先级
无自定义名称
  • 系统会为所有部署组件创建部署资源名称。
组织级别名称
  • 将自定义命名属性值和字符串应用于所有部署。
  • 如果部署项目具有项目级别的自定义名称,则会覆盖组织级别的名称。
  • 如果未定义组织级别的自定义名称,则将项目级别名称用于分配的项目。
  • 如果未定义组织级别或项目级别的自定义名称,系统将创建资源名称。
项目级别名称
  • 将项目级别的自定义命名属性值和字符串应用于所有分配的项目。
  • 如果存在组织级别名称,则项目级别名称优先于组织名称。
  • 如果未定义组织级别的自定义名称,则将项目级别名称用于分配的项目。
  • 如果未定义组织级别或项目级别的自定义名称,系统将创建资源名称。

使用模板格式

定义模板格式时,可以使用字符串和属性。使用属性的主要优点是,可以将相同的属性作为多个项目的格式使用,但名称派生自值属性,值属性可能会因项目、云模板、平台和其他属性而异。

模板格式属性包括提供的属性(在此处进行了讨论),以及您在设计 > 属性组中定义的任何自定义属性。

  • 有效字符
    • 不允许使用空格。
    • 为了便于阅读,可以使用特殊字符分隔属性。允许的字符包括 _(下划线)和 -(短划线)。
  • 提供的属性
    表 2. 提供的属性
    属性 说明
    端点

    云帐户信息,如描述(输入 (AWS))或名称。端点仅适用于 计算机。

    示例

    • ${endpoint.desc}
    • ${endpoint.endpointType}
    • ${endpoint.name}
    项目

    项目信息。

    示例

    • ${project.desc}
    • ${project.name}
    对于每个范围级别的资源类型

    包括云模板中的资源名称、云模板或项目中的自定义属性。

    示例

    • ${resource.name}
    时间戳

    部署的日期和时间。数字值为 yyyy mm dd hh mm ss,但不包含空格。例如,20210825120345。

    示例

    • ${timestamp}
    用户

    示例

    • ${user}
    用户名

    示例

    • ${userName}
    ######

    数字属性。

    最大长度为 19 位数字。

    如果使用两位数字 ##,则编号开始之前的最大数字为 99。如果使用 ###,编号将在 999 之后重新开始。

    示例

    • ${####}
    自定义属性

    自定义属性必须是属性组的一部分。自定义名称中的属性包括属性组名称和 属性。

    示例

    • ${propertygroup.property}

使用计数器

vRealize Automation 的单节点实例中,计数器将根据您在自定义命名模板中定义的值以及随着这些值在目标组织和项目中的应用而递增。

在多节点环境中,计数器会根据模板中的值尝试递增。如果遇到争用,则会尝试应用编号三次。请求有可能在第三次尝试后失败以解决争用。在这种情况下,编号可能会不连续。

您可能也会遇到因其他原因而导致编号不连续的情况。例如,部署三个虚拟机。第二个计算机在置备期间失败。已部署虚拟机的计数编号为 vm-01 和 vm-03,缺少 vm-02。

如果您不使用自定义命名,而更愿意依赖默认命名策略,则计数器值池将预留给节点,如下所示:

  • 节点 1:1-300
  • 节点 2:301-600
  • 节点 3:601-900

这意味着,在多节点环境中,编号可能看起来不可预测。编号依赖于处理请求的节点。

可将自定义名称应用到的资源类型列表

您只能为一种资源类型或所有资源类型创建自定义名称。只有具有自定义名称的资源类型才使用模板。所有其他资源均使用默认模板。

例如,如果您仅为计算机创建项目级别的自定义名称,并且所有其他资源类型具有组织级别名称,则计算机资源将采用项目名称,所有其他资源使用组织名称。

表 3. 资源示例列表
自定义命名资源类型 部署资源类型
计算机
  • Cloud.Machine
  • Cloud.vSphere.Machine
  • Cloud.AWS.EC2.Instance
  • Cloud.GCP.Machine
  • Cloud.Azure.Machine
网络
  • Cloud.Network
  • Cloud.vSphere.Network
  • Cloud.NSX.Network
存储
  • Cloud.Volume
  • Cloud.vSphere.Disk
  • Cloud.AWS.Volume
  • Cloud.GCP.Disk
  • Cloud.Azure.Disk
负载均衡器    
  • Cloud.LoadBalancer
  • Cloud.NSX.LoadBalancer
资源组
  • Cloud.Azure.ResourceGroup
网关
  • Cloud.NSX.Gateway
NAT
  • Cloud.NSX.NAT
安全组
  • Cloud.SecurityGroup

正在删除自定义名称模板

删除模板不会影响当前部署的资源命名。但是,在验证对所有已分配项目的影响之前,不得删除自定义名称模板。

您可以从命名模板中移除项目。该模板将继续用于其他项目。

删除具有自定义名称的项目

如果项目应用了自定义命名模板,则必须先从模板中移除项目,然后才能删除该项目。