安装和使用模板测试工具

更新时间:
复制 MD 格式

本文为您介绍模板测试工具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_ID 和 ALIBABA_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-1和test-name-2两个测试用例

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

      说明

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

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

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

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

对模板进行测试

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

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

    [INFO] : Start producing test reports for default in cn-hangzhou...
    [INFO] : Start producing test reports for default in cn-beijing...
    [INFO] : Start producing test reports for auto in cn-hangzhou...
    [INFO] : Start producing test reports for auto in cn-beijing...
    [INFO] : The test report has been completed, you can view it in /Users/qitan/PycharmProjects/ros-templates/iact3_outputs directory.
    [INFO] : Deleting stack: f7549d01-bb42-410f-8949-2957aece7ac1
    [INFO] : Deleting stack: 409d9dad-a6e7-455a-a157-7e9ea50de17d
    [INFO] : Deleting stack: d20312b2-9a2a-4002-954d-b9d0ff99a7ec
    [INFO] : Deleting stack: 4ac87f2b-4e4e-4474-8019-1f751b428ef7
    [INFO] : ┌ stack Ⓜ iact3-default-cn-hangzhou-86c36c76
    [INFO] : │ region: cn-hangzhou
    [INFO] : │ id: 409d9dad-a6e7-455a-a157-7e9ea50de17d
    [INFO] : └ status: DELETE_COMPLETE
    [INFO] : ┌ stack Ⓜ iact3-default-cn-beijing-b2793ee5
    [INFO] : │ region: cn-beijing
    [INFO] : │ id: f7549d01-bb42-410f-8949-2957aece7ac1
    [INFO] : └ status: DELETE_COMPLETE
    [INFO] : ┌ stack Ⓜ iact3-auto-cn-hangzhou-3a3ecd76
    [INFO] : │ region: cn-hangzhou
    [INFO] : │ id: 4ac87f2b-4e4e-4474-8019-1f751b428ef7
    [INFO] : └ status: DELETE_COMPLETE
    [INFO] : ┌ stack Ⓜ iact3-auto-cn-beijing-07e2676c
    [INFO] : │ region: cn-beijing
    [INFO] : │ id: d20312b2-9a2a-4002-954d-b9d0ff99a7ec
    [INFO] : └ status: DELETE_COMPLETE
  3. 测试完成之后,会自动生成测试报告。

    测试报告包含 Test Name、Tested Region、Stack Name、Tested Results、Test Logs 列。示例中 4 个测试用例结果如下:

    • specified-instance-type 在 cn-hangzhou 和 cn-beijing 地域,状态均为 CREATE_COMPLETE(通过)

    • auto-all 在 cn-hangzhou 和 cn-beijing 地域,状态均为 CREATE_COMPLETE(通过)

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

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

    Region: cn-heyuan
    StackName: iact3-tech-solu-02-cn-heyuan-0b16b1a2
    StackId: 828e53b3-25fx xxx
    ************************************************************
    ParameterKey          ParameterValue
    ZoneId                cn-heyuan-b
    UserName              admin
    Password              xxx
    EcsInstanceType       ecs.xxx
    InstancePassword
    ************************************************************
    TestedResult: Success
    ResultReason:
    Stack launch was successful
    ************************************************************
    Events:
    TimeStamp               ResourceStatus      ResourceType                LogicalResourceId                    ResourceStatusReason
    
    2024-09-19T22:16:07     CREATE_COMPLETE      ALIYUN::ROS::Stack         iact3-tech-solu-02-cn-heyuan-0b16b1a2    Stack CREATE completed successfully
    2024-09-19T22:16:07     CREATE_COMPLETE      ALIYUN::ECS::RunCommand    InstanceRunCommand                        state changed
    2024-09-19T22:15:47     CREATE_IN_PROGRESS   ALIYUN::ECS::RunCommand    InstanceRunCommand                        state changed
    2024-09-19T22:15:47     CREATE_COMPLETE      ALIYUN::ECS::InstanceGroup EcsInstanceGroup                          state changed
    2024-09-19T22:15:32     CREATE_IN_PROGRESS   ALIYUN::ECS::InstanceGroup EcsInstanceGroup                          state changed
    2024-09-19T22:15:31     CREATE_COMPLETE      ALIYUN::ECS::VSwitch       EcsVSwitch                                state changed
    2024-09-19T22:15:30     CREATE_COMPLETE      ALIYUN::ECS::SecurityGroup EcsSecurityGroup                          state changed
    2024-09-19T22:15:28     CREATE_IN_PROGRESS   ALIYUN::ECS::VSwitch       EcsVSwitch                                state changed
    2024-09-19T22:15:28     CREATE_IN_PROGRESS   ALIYUN::ECS::SecurityGroup EcsSecurityGroup                          state changed
    2024-09-19T22:15:26     CREATE_COMPLETE      ALIYUN::ECS::VPC           EcsVpc                                    state changed
    2024-09-19T22:15:19     CREATE_IN_PROGRESS   ALIYUN::ECS::VPC           EcsVpc                                    state changed
    2024-09-19T22:15:19     CREATE_IN_PROGRESS   ALIYUN::ROS::Stack         iact3-tech-solu-02-cn-heyuan-0b16b1a2    CREATE started
    ************************************************************
    Resources:
    TimeStamp               ResourceStatus      ResourceType                LogicalResourceId      PhysicalResourceId       ResourceStatusReason
    
    2024-09-19T22:15:46     CREATE_COMPLETE      ALIYUN::ECS::InstanceGroup EcsInstanceGroup       i-f8zxxx                 state changed
    2024-09-19T22:15:26     CREATE_COMPLETE      ALIYUN::ECS::VPC           EcsVpc                 vpc-f8xxx                state changed
    2024-09-19T22:16:07     CREATE_COMPLETE      ALIYUN::ECS::RunCommand    InstanceRunCommand     t-hy04x4xxx              state changed
    2024-09-19T22:15:30     CREATE_COMPLETE      ALIYUN::ECS::SecurityGroup EcsSecurityGroup       sg-f8xxx                 state changed
    2024-09-19T22:15:31     CREATE_COMPLETE      ALIYUN::ECS::VSwitch       EcsVSwitch             vsw-f8zthxxxx            state changed
    
    Tested on: Thursday, 19. September 2024 06:53AM

更多功能

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

模板询价

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

iact3 cost

模板资源预览

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

iact3 preview

模板RAM策略查询

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

iact3 policy

相关文档