Spec-Zone.ru › OpenTofu 1.9

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

На других страницах этого раздела описаны различные конструкции конфигурации, которые могут использоваться в языке 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 конструкций, таких как ресурсы и входные переменные, — это идентификаторы.

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

Для определения полных правил формирования идентификаторов в 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.9/language/syntax/configuration/

Spec-Zone.ru

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