Terraform配置语法

  1. 参数
  2. 标识符
  3. 注释
  4. 编码及换行

Terraform的理念是IaC,所以把基于HCL语言编写的Terraform配置信息也叫做Terraform代码。

Terraform代码同时支持HCLJSON两种格式,详见Syntax,但本文讲解的语法是基于HCL而言的。

如下内容是构成Terraform代码的基本要素。

参数

如下代码示例:

image_id = "abc123"

在等号左边的就是参数名,在等号右边的就是参数值,参数值可以是一个表达式,也可以是字面量硬编码。
在参数赋值时Terraform会检查类型是否匹配,Terraform的某些类型之间存在隐式类型转换规则,如果无法执行隐式类型转换,不同的类型数据间赋值将会报错。

大括号{}以及其中的内容是一个代码块,如下示例:

resource "aws_instance" "example" {
    ami = "abc123"
    network_interface {
        # something
    }
}

这是一个定义AWS Instance资源的块,resource关键字表示这是一个定义资源的块,aws_instance表示这是一个AWS EC2实例资源,example可以理解为是一个块变量名。当然,也可以直接定义一个内嵌的块,如:network_interface块。
在Terraform的规范中定义了多个顶级的块,如:resource(服务资源,可执行CRUD),data(数据资源,只能用于读取数据),variable(变量),output(输出)等。

标识符

参数名,块类型名以及其他Terraform规范中定义的结构的名称,例如:resoucevariable等,都是标识符。
合法的标识符可以包含字符(a-z,A-Z),数字(0-9),下划线(_)以及减号(-),但是标识符首字母不能是数字。
完整的标识符规则参考the Unicode identifier syntax

注释

Terraform支持三种注释方式:

# 单行注释
// 单行注释
/** 
 多行注释
 */

默认情况下单行注释优先使用#,格式化工具会自动把//替换成#

编码及换行

Terraform代码文件必须始终是UTF-8编码。
Terraform兼容Unix风格的换行符LF以及Windows风格的换行符CR&LF,推荐使用Unix风格的换行符。

【参考】
Configuration Syntax


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达,在下面评论区告诉我^_^^_^