模板变量赋值

本文向您介绍如何对定义的模板变量进行赋值。

模板变量数据类型汇总

数据类型

类型说明

String

ECS实例名称

Integer

ECS系统盘容量

Boolean

某资源是否“忽略部署”

Map

资源标签信息

List

ECS的IP地址白名单

List<Map>

ECS数据盘列表

ChargeType

仅限于赋值给资源付费方式变量

定义局部模板变量

本文以ECS模板为例,来介绍如何对上述不同类型的变量进行赋值。

  1. 如下图所示,首先创建一个ECS模板,具体操作可以参考创建个人模板image

  2. 参考模板变量配置,为模板定义以下变量。

    变量

    变量值

    默认值

    数量

    ${count}

    1

    实例名称

    ${name}

    ecs

    系统盘容量

    ${storage}

    40

    数据盘

    ${data_disk}

    []

    资源标签

    ${tags}

    {"cadt":"uat"}

  3. 配置完成后,在我的模板库列表查看定义的模板变量,可以看到变量类型包括Integer、String、List<Map>、Map等。 image

定义全局模板变量

下面我们对上面的例子做一下增强,增加全局模板变量。其中模板变量的配置如下:

  1. 如下图所示,首先创建一个ECS模板,具体操作可以参考创建个人模板essss2

  2. 参考模板变量配置,为模板定义以下变量。bbbbb2

通过Java代码赋值模板变量

如果您熟悉Java编程语言,可以通过Java代码对模板变量赋值,示例代码如下所示:

variables = Maps.newHashMap();

//赋值ECS实例名称变量 ${name}
variables.put("${name}", "ecs123");

//赋值ECS数量变量 ${count}
variables.put("${count}", "1");

//赋值ECS系统盘容量变量 ${storage}
variables.put("${storage}", "40");

//赋值ECS数据盘变量 ${data_disk}
List<Map<String, String>> disks = Lists.newArrayList();
Map<String, String> disk1 = Maps.newHashMap();
disk1.put("name", "disk1");
disk1.put("size", "50");
disk1.put("category", "cloud_essd");
disk1.put("performance_level", "PL1");
disk1.put("encrypted", "false");
disks.add(disk1);

Map<String, String> disk2 = Maps.newHashMap();
disk2.put("name", "disk2");
disk2.put("size", "60");
disk2.put("category", "cloud_essd");
disk2.put("performance_level", "PL1");
disk2.put("encrypted", "false");
disks.add(disk2);
variables.put("${data_disk}", JSON.toJSONString(disks));

//赋值ECS资源标签变量 ${tags}
Map<String, String> tags = Maps.newHashMap();
tags.put("role", "dev");
tags.put("project", "abc");
variables.put("${tags}", JSON.toJSONString(tags));

// 上面对variables赋值后,调用如下API创建应用。
createApplicationRequest = new CreateApplicationRequest()
        .setTemplateId(templateId)      // 使用变量的模版ID
        .setName(appName)                  //  生成的应用ID
        .setAreaId(region)                       // 模版的region
        .setVariables(variables)              // 传入变量
        .setClientToken(UUID.randomUUID().toString());

通过YAML文件配置模板变量

借助云速搭CADT命令行工具调用API可实现CADT应用的部署,创建应用所需的基本信息定义在YAML配置文件中,详细内容请参考《云速搭CADT命令行工具使用说明》