1.4.2.1. 配置语法

这里讲的仍然是HCL的语法,但我们只讲一些关键语法。如果读者有兴趣了解完整信息可以访问HCL语法规约

1.4.2.1.1. 参数

参数赋值就是将一个值赋给一个特定的名称:

image_id = "abc123"

等号前的标识符就是参数名,等号后的表达式就是参数值。参数赋值时Terraform会检查类型是否匹配。参数名是确定的,参数值可以是确定的字面量硬编码,也可以是一组表达式,用以通过其他的值加以计算得出结果值。

1.4.2.1.2. 块

一个块是包含一组其他内容的容器,例如:

resource "aws_instance" "example" {
  ami = "abc123"

  network_interface {
    # ...
  }
}

一个块有一个类型(上面的例子里类型就是resource)。每个块类型都定义了类型关键字后面要跟多少标签,例如resource块规定了后面要跟两个标签——在例子里就是aws_instanceexample。一个块类型可以规定任意多个标签,也可以没有标签,比如内嵌的network_interface块。

在块类型及其后续标签之后,就是块体。块体必须被包含在一对花括号中间。在块体中可以进一步定义各种参数和其他的块。

Terraform规范定义了有限多个顶级块类型,也就是可以游离于任何其他块独立定义在配置文件中的块。大部分的Terraform功能(例如resource, variable, output, data等)都是顶级块。

1.4.2.1.3. 标识符

参数名、块类型名以及其他Terraform规范中定义的结构的名称,例如resource、variable等,都是标识符。

合法的标识符可以包含字母、数字、下划线(_)以及减号(-)。标识符首字母不可以为数字。

要了解完整的标识符规范,请访问Unicode标识符语法

1.4.2.1.4. 注释

Terraform支持三种注释:

  • # 单行注释,其后的内容为注释
  • // 单行注释,其后的内容为注释
  • /**/,多行注释,可以注释多行

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

1.4.2.1.5. 编码以及换行

Terraform配置文件必须始终使用UTF-8编码。分隔符必须使用ASCII符号,其他标识符、注释以及字符串字面量均可使用非ASCII字符。

Terraform兼容Unix风格的换行符以及Windows风格的换行符,但是理想状态下应使用Unix风格换行符。

results matching ""

    No results matching ""