更新时间:2024-04-17 GMT+08:00

inputs

如果想要模板更加的通用,就不能将元素的参数值都写成固定的。例如,启动虚拟机的镜像ID,建议将这个参数开放出来作为模板的输入,这样模板的使用者就可以自由的控制这个参数。并且在使用该模板,即部署堆栈时,才会设置真正需要使用的镜像ID。

inputs为可选项,用于定义基于模板创建堆栈时的输入。一个模板最多支持定义60个inputs输入参数。每个input输入参数,均需定义唯一的名称,以便在使用时通过get_input内置函数获取到具体的值。如果重复定义了input,后面定义的将会覆盖之前定义的。

作用范围:node_templates与outputs,即输入参数可以在node_templates的属性及outputs的value中进行传参。

inputs格式

 <输入参数名称>:
    type: <类型>
    default: <默认值>
    constraints:<约束>
    description:<描述>
    label:<标签>
    invisible: <是否回显>

模板输入除了要考虑扩展模板的可复用性,还要考虑如何限制并验证用户输入。这就要求要了解参数的声明。

表1 参数属性说明

属性

是否必选

参数类型

取值约束

描述

输入参数名称

字符串

由小写字母、数字和中划线“-”组成,长度为[1, 20]。

最多可定义60个,且命名必须唯一。

type

  • string:字符串
  • integer:数字
  • float:浮点数
  • boolean:布尔值
  • password:密码

密码类型输入时将不回显,目前密码类型仅支持对一些系统级别输入的密码进行解密处理。如果用户将一个普通参数定义成了password,将可能导致获取到的是一个加密信息而无法解密处理。

参数类型。

description

String

长度为[0, 255]。

参数描述信息。

default

String

默认值信息可在创建堆栈时由外部输入替换;如果未填写默认值,外部输入将必须填写这个参数的值。

须知:

默认值的类型和定义的参数类型必须统一。如果出现不一致,解析器可能会进行自动转换而导致出现与预期不符合的情况。

参数默认值。

label

String

长度为[0, 64]

参数的标签,此处定义的标签可在创建堆栈时进行分类展示。

constraints

String

约束条件有以下几种,一个输入参数对每一种条件都只能定义一个规则。约束的多个条件中只要有一条不满足,即将认定参数非法。
  • equal:约定参数的value值必须等于特定值。

    例如:当输入参数不等于aos时,则会认定参数非法。

    constraints:

    equal: 'aos'

  • valid_values:参数的有效值,定义一个数组。

    例如:输出参数值可以从TCP、UDP中选取一个。

    constraints:

    valid_values: ['TCP', 'UDP' ]

  • regex:参数需要满足某个正则条件,必须是字符串类型才可以进行匹配。

    例如:当输入参数不满足正则条件时,则会认定参数非法。

    constraints:

    regex: "^[-_a-zA-Z0-9]*$"

  • invalid_values:参数的无效值范围,如果参数值定义在其中,将会认为无效而报错。

    例如:当输入参数为1或12时,则会认定参数非法。

    constraints:

    invalid_values: ['1', '12' ]

参数约束,用于约束可以定义输入参数的合法值范围。

invisible

-

输入参数的invisible设置为true时,展示内容为******。

是否回显。

inputs配置样例:

tosca_definitions_version: huaweicloud_tosca_version_1_0
inputs:  # 输入,定义基于模板创建堆栈的可变部分
  instance:
    description: 创建云服务器数量
    default: 1
  image:
    description: 云服务器使用的镜像ID
    type: HuaweiCloud.ECS.Image.Id
  vpc:
    description: 云服务器VPC的ID
  subnet:
    description: 云服务器子网ID