本文为您介绍模板测试工具Iact3(Infrastructure as Code Template Test Tool)工具安装、配置及使用指南,用于阿里云资源编排ROS模板和Terraform测试。
为什么使用模板测试工具Iact3?
当您编写好ROS或者Terraform模板时,可以使用Iact3测试模板是否能成功创建资源栈。如某个时间点,系统能否成功地创建或更新模板中涉及到的资源,如实例组、虚拟私有云(VPC)、安全组等。
前提条件
安装Iact3
通过pip安装
执行以下命令,安装模板测试工具。
pip install alibabacloud-ros-iact3
通过源码安装
-
下载模板测试工具源码。
git clone https://github.com/aliyun/alibabacloud-ros-tool-iact3.git -
进入
alibabacloud-ros-tool-iact3目录cd alibabacloud-ros-tool-iact3 -
安装模板测试工具。
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 种场景支持自动生成参数:
-
参数对应的资源属性支持ROS
GetTemplateParameterConstraints接口,请参见参数约束查询。 -
参数名称具有特定含义的参数。 例如
VpcId一般表示专有网络的 Id,$[iact3-auto]会自动在当前账户的当前地域随机获取一个 VPC 的实例 ID。
-
-
更多的配置文件详情可以参考 Iact3 的配置文档。
对模板进行测试
-
进入到配置文件所在目录,执行 CLI 命令即可开始对模板进行测试。
iact3 test run -
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 -
测试完成之后,会自动生成测试报告。
测试报告包含 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(通过)
-
-
单击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
相关文档
-
关于Iact3更多信息,请参见ROS Tool Iact3。