安装和使用模板测试工具

本文为您介绍模板测试工具Iact3(Infrastructure as Code Template Test Tool)工具安装、配置及使用指南,用于阿里云资源编排ROS模板和Terraform测试。

为什么使用模板测试工具Iact3?

当您编写好ROS或者Terraform模板时,可以使用Iact3测试模板是否能成功创建资源栈。如某个时间点,系统能否成功地创建或更新模板中涉及到的资源,如实例组、虚拟私有云(VPC)、安全组等。

前提条件

  • 模板转换工具使用Python语言开发,请确保您已经安装Python 3.7及以上版本。更多信息,请参见Python

  • 创建模板

安装Iact3

通过pip安装

执行以下命令,安装模板测试工具。

pip install alibabacloud-ros-iact3

通过源码安装

  1. 下载模板测试工具源码。

    git clone https://github.com/aliyun/alibabacloud-ros-tool-iact3.git
  2. 进入alibabacloud-ros-tool-iact3目录

    cd alibabacloud-ros-tool-iact3
  3. 安装模板转换工具。

    python setup.py install

配置身份凭据

阿里云CLI

如果您已经安装了CLI工具,可以直接使用其配置文件,默认配置文件位置为~/.aliyun/config.json,配置示例信息如下:

{
    "current": "default",
    "profiles":
    [
        {
            "name": "default",
            "mode": "AK",
            "access_key_id": "***",
            "access_key_secret": "***",
        },
    ],
    "meta_path": ""
}

阿里云 SDK

使用阿里云 SDK 凭证的配置文件,默认存储位置为~/.alibabacloud/credentials.ini~/.aliyun/credentials.ini,也可以使用ALIBABA_CLOUD_CREDENTIALS_FILE环境变量来指定具体配置文件位置。配置示例信息如下:

[default]
enable=true
type=access_key
access_key_id=<ALIBABA_CLOUD_ACCESS_KEY_ID>
access_key_secret=<ALIBABA_CLOUD_ACCESS_KEY_SECRET>

[client1]
enable=true
type=ecs_ram_role
role_name=<ecs_ram_role_name>

[client2]
enable=true
type=ram_role_arn
policy=<policy>
access_key_id=<ALIBABA_CLOUD_ACCESS_KEY_ID>
access_key_secret=<ALIBABA_CLOUD_ACCESS_KEY_SECRET>
role_arn=<ram_role_arn>
role_session_name=<role_session_name>

[client3]
enable=true
type=oidc_role_arn
policy=<policy>
oidc_provider_arn=<ALIBABA_CLOUD_ACCESS_KEY_ID>
oidc_token_file_path=<ALIBABA_CLOUD_ACCESS_KEY_SECRET>
role_arn=<ram_role_arn>
role_session_name=<role_session_name>

环境变量

在环境变量中使用配置阿里云 AK 和 SK,对应环境变量名称为:ALIBABA_CLOUD_ACCESS_KEY_IDALIBABA_CLOUD_ACCESS_KEY_SECRET

准备配置文件

Iact3通过测试配置文件来指定需要测试的模板和参数信息,测试配置文件为 YAML 格式,示例配置如下:

project:
  name: my-first-test
  template_config: 
    template_url: 'https://xxx/create-ecs.yaml'
  regions:
    - cn-hangzhou
    - cn-beijing
tests:
  test-name-1:
    parameters:
      ZoneId: $[iact3-auto]
      InstanceType: ecs.g6e.large
  test-name-2:
    parameters:
      ZoneId: $[iact3-auto]
      InstanceType: ecs.c6.large

参数说明

  • project 表示项目的基本信息,包括:

    • name 用于指定配置名称。

    • template_config 用于指定具体的模板,其中template_url 表示模板链接地址。

    • regions 用于指定配置文件作用的地域,支持以列表形式指定多个地域。

  • tests 表示测试用例信息,该配置文件包含了test-name-1test-name-2两个测试用例

    • parameters 用于指定模板中参数值,其中参数值 $[iact3-auto]表示自动生成一个合适的参数。

      说明

      仅以下 2 种场景支持自动生成参数:

      • 参数对应的资源属性支持ROSGetTemplateParameterConstraints接口,请参见参数约束查询

      • 参数名称具有特定含义的参数。 例如VpcId一般表示专有网络的 Id,$[iact3-auto]会自动在当前账户的当前地域随机获取一个 VPC 的实例 ID。

更多的配置文件详情可以参考 Iact3 的配置文档

对模板进行测试

  1. 进入到配置文件所在目录,执行 CLI 命令即可开始对模板进行测试。

    iact3 test run
  2. Iact3 会根据配置文件中设置的模板和参数,实际去创建资源栈,测试完成后会自动删除资源栈。

    image

  3. 测试完成之后,会自动生成测试报告。

    image

  4. 单击View Logs即可查看每个报告的详细日志。

    日志中云服务的资源创建和状态更新的日志

    image

更多功能

Iact3有很多其他的功能,可以使用iact3 -h命令查询工具的帮助信息,了解到所有支持的命令与功能。

模板询价

Iact3 支持模板的询价能力,您可以执行以下命令了解到模板中涉及资源的价格信息。

iact3 cost

模板资源预览

Iact3支持资源预览能力,您可以执行以下命令了解到模板将会创建哪些资源的信息。

iact3 preview

模板RAM策略查询

Iact3支持RAM策略查询能力,您可以执行以下命令了解子账号创建模板时所需要的权限信息。

iact3 policy

相关文档