Spec-Zone.ru › OpenTofu 1.12

Синтаксис конфигурации

На других страницах этого раздела описаны различные конструкции конфигурации, которые могут встречаться в языке OpenTofu. На этой странице подробнее описан низкоуровневый синтаксис языка и представлены строительные блоки, из которых состоят эти конструкции.

На этой странице описан нативный синтаксис языка OpenTofu — выразительного языка, разработанного так, чтобы людям было относительно легко его читать и писать на нём. Конструкции языка OpenTofu также можно записывать с помощью синтаксиса JSON, который людям сложнее читать и редактировать, но который проще генерировать и программно анализировать.

Низкоуровневый синтаксис языка OpenTofu описывается в терминах синтаксиса под названием HCL. Он также используется в языках конфигурации других приложений, в частности других продуктов HashiCorp. Для работы с OpenTofu не обязательно знать все детали синтаксиса HCL, поэтому на этой странице приведено описание наиболее важных из них. Если вам интересно, полное описание синтаксиса HCL можно найти в спецификации нативного синтаксиса HCL.

Аргументы и блоки​

Синтаксис языка OpenTofu основан на двух ключевых конструкциях: аргументах и блоках.

Аргументы​

Аргумент присваивает значение определённому имени:

Блок кода
image_id = "abc123"

Идентификатор перед знаком равенства — это имя аргумента, а выражение после знака равенства — значение аргумента.

Контекст, в котором встречается аргумент, определяет допустимые типы значений (например, у каждого типа ресурса есть схема, определяющая типы его аргументов), но многие аргументы допускают произвольные выражения, позволяющие указать значение напрямую или программно сформировать его из других значений.

Примечание

Язык конфигурации OpenTofu основан на более универсальном языке HCL, в документации которого обычно используется слово «атрибут» вместо слова «аргумент». В этом контексте эти слова достаточно близки по значению и могут использоваться взаимозаменяемо; опытные пользователи OpenTofu могут употреблять любой из этих терминов в обычной беседе. Однако OpenTofu также взаимодействует с рядом других сущностей, называемых «атрибутами» (в частности, у ресурсов OpenTofu есть атрибуты, например id, на которые можно ссылаться в выражениях, но которым нельзя присваивать значения в конфигурации). Поэтому в документации OpenTofu для этой синтаксической конструкции мы используем термин «аргумент».

Блоки​

Блок служит контейнером для другого содержимого:

Блок кода
resource "aws_instance" "example" {
  ami = "abc123"

  network_interface {
    # ...
  }
}

У блока есть тип (resource в этом примере). Для каждого типа блока определено, сколько меток должно следовать за ключевым словом типа. Для типа блока resource требуются две метки: в приведённом выше примере это aws_instance и example. Для конкретного типа блока может требоваться любое количество меток или ни одной, как в случае с вложенным типом блока network_interface.

После ключевого слова типа блока и любых меток тело блока ограничивается символами { и }. В теле блока можно размещать другие аргументы и блоки, создавая иерархию блоков и связанных с ними аргументов.

В языке OpenTofu используется ограниченное количество типов блоков верхнего уровня — блоков, которые могут встречаться в файле конфигурации вне других блоков. Большинство функций OpenTofu (включая ресурсы, входные переменные, выходные значения, источники данных и т. д.) реализованы в виде блоков верхнего уровня.

Идентификаторы​

Имена аргументов, имена типов блоков и имена большинства конструкций, специфичных для OpenTofu, таких как ресурсы и входные переменные, — это идентификаторы.

Идентификаторы могут содержать буквы, цифры, символы подчёркивания (_) и дефисы (-). Первый символ идентификатора не должен быть цифрой, чтобы избежать неоднозначности с числовыми литералами.

Правила для идентификаторов полностью соответствуют синтаксису идентификаторов Unicode с расширением, включающим символ дефиса ASCII -.

Комментарии​

В языке OpenTofu поддерживаются три разных синтаксиса комментариев:

  • # начинает однострочный комментарий, который заканчивается в конце строки.
  • // также начинает однострочный комментарий и является альтернативой #.
  • /* и */ — это открывающий и закрывающий разделители комментария, который может занимать несколько строк.

Стиль однострочных комментариев # используется по умолчанию и подходит для большинства случаев. Инструменты автоматического форматирования конфигурации могут автоматически преобразовывать комментарии // в комментарии #, поскольку стиль с двойной косой чертой не является идиоматичным.

Кодировка символов и окончания строк​

Файлы конфигурации OpenTofu всегда должны иметь кодировку UTF-8. Хотя все разделители языка состоят из символов ASCII, OpenTofu допускает использование символов не из ASCII в идентификаторах, комментариях и строковых значениях.

OpenTofu принимает файлы конфигурации с окончаниями строк как в стиле Unix (только LF), так и в стиле Windows (CR, а затем LF), но идиоматичным считается использование соглашения Unix. Поэтому инструменты автоматического форматирования конфигурации могут автоматически заменять окончания CRLF на LF.

Copyright (c) The OpenTofu Authors
Copyright (c) 2014 HashiCorp, Inc.
Mozilla Public License, version 2.0
https://opentofu.org/docs/v1.12/language/syntax/configuration/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API