1.4.2.1. 配置语法

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

HCL 的语法由两个关键元素构成:参数(Argument)与块(Block)

1.4.2.1.1. 参数

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

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. 标识符(Identifiers)

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

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

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

1.4.2.1.4. 注释

Terraform支持三种注释:

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

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

1.4.2.1.5. 编码以及换行

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

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

results matching ""

    No results matching ""