HCL синтаксис

Тема дорожной карты · Terraform

Основы HCL знакомят с HashiCorp Configuration Language — декларативным, читаемым человеком синтаксисом, который Terraform и OpenTofu используют для описания инфраструктуры как кода на AWS, Azure, GCP, Kubernetes и сотнях других провайдеров. HCL строится вокруг трёх конструкций: блоков (например, resource, provider, variable, output), атрибутов (назначение ключ–значение) и выражений (ссылки, вызовы функций и условные операторы), которые terraform init и terraform plan парсят до создания или изменения инфраструктуры. Минимальная HCL-конфигурация объявляет блок required_providers для фиксации версии провайдера AWS или AzureRM, а затем блоки resource, описывающие желаемое состояние; Terraform вычисляет разницу с remote-state и выполняет terraform apply для приведения к нему. Основы HCL также охватывают соглашения именования .tf-файлов, механизм переопределения через terraform.tfvars и *.tfvars, а также команду terraform fmt, обеспечивающую каноническое форматирование отступов для единообразия в команде. Понимание основ HCL является фундаментальной предпосылкой для написания модулей, выражений, locals и источников данных, которые компонуются в production-grade IaC-конфигурации.

Как это работает

HCL синтаксис — язык конфигурации: блоки (resource "type" "name" { ... }), атрибуты, ссылки (module.foo.output, aws_instance.web.id), переменные (var.x), локалы (local.y), data-источники (data "..." "..."), функции (string, collection, encoding, numeric, date, file). Выражения поддерживают тернарники (a ? b : c), for-циклы в выражениях ([for x in xs : x.id]), splat (module.foo[*].output), dynamic-блоки для повторяющихся nested блоков.

Когда применять

locals — для именования повторяющихся выражений (local.common_tags). for_each лучше count, когда нужно add/remove отдельные элементы без пересоздания остальных. data-источники — для lookup существующих ресурсов вместо hardcoded ID. dynamic-блоки — осторожно, мощны, но быстро бьют по читаемости. Форматируйте terraform fmt; канонический стиль непреклонен.

Типичные ошибки

Ловушки HCL синтаксис: глубокие тернарники со side-effect-like ссылками; count для стабильной индексации, потом переупорядочивание списка (всё destroy + re-create); local-блоки, импортирующие друг друга в путаных цепочках; расчёт, что HCL — Тьюринг-полный (почти — но использовать его для общего программирования это запах, пишите CDK или Pulumi).

Связанные понятия

Полезные ресурсы

Проверить знания (1)

Загрузка вопросов…