模板写作指南
CAM基于原生Terraform语法,同时针对以应用为中心的目的,增加了一些约束和规范。
本章通过部署一个简单的CCE镜像Nginx的RF模板作为具体的例子来介绍自定义模板的书写过程,可以下载下面的模板文件后对照阅读。
模板结构介绍
- environment文件夹是用来存放相关资源开通的描述文件。
- components文件夹用来存放各个组件,可以是函数组件、微服务组件等。各个组件使用单独的子文件夹存放相关资源的描述文件。
模板文件介绍
CAM按照Terraform的最佳实践,一组描述文件主要由main.tf、variables.tf和outputs.tf组成。
- main.tf:是主要描述文件,用来表示需要创建的环境资源或者组件资源。例如创建一个VPC和Subnet的资源。
图2 创建VPC和Subnet的资源
- variables.tf:表示main.tf中的变量定义,定义了变量的类型,默认值等属性。CAM针对原生Terraform作了部分扩展。比如description属性是一个变量描述,可以通过定义"{\"label\":xxx}"的方式指定变量在Console展示的名称。
图3 定义变量的类型
同时CAM还引入了内置变量的概念,以cam_inner开头的变量作为CAM的内置变量,您只需要在variable.tf文件中写入了这种变量,服务会自动给该变量赋值,并且不会显示在console页面上提供输入,当前CAM支持的内置变量如表1所示。
- outputs.tf:表示一组描述文件可以输出的参数值,以环境的输出参数值为例,可以供组件中引用。比如RDS输出的IP,可以在微服务组件中引用作为环境变量注入。
以样例模板展开描述,环境模板中main.tf创建出ServiceStage应用和环境资源,输出相关的id和name。
图4 outputs.tf文件
如果组件模板需要引用环境模板的输出,那么nginx文件夹下的variables.tf需要定义与environment文件夹下的output.tf同名的变量。
图5 variables.tf文件变量定义
图6 output.tf文件变量定义
更多相关信息请查看华为云terraform学习文档:https://support.huaweicloud.com/basics-terraform/terraform_0007.html。