Terraform

Terraform — программный инструмент инфраструктуры как кода, созданный компанией HashiCorp. Пользователи определяют и предоставляют инфраструктуру дата-центра с помощью декларативного языка конфигурации, известного как HashiCorp Configuration Language (HCL), либо, по желанию, с использованием JSON.

2014 год

2014 год стал годом создания Terraform. Компания HashiCorp официально анонсировала и выпустила первую версию инструмента (0.1) 28 июля 2014 года. С самого начала Terraform был представлен как инструмент, способный работать с несколькими облачными и сервисными провайдерами[8]. Чтобы продемонстрировать эту ключевую особенность, версия 0.1 поддерживала двух провайдеров: Amazon Web Services (AWS) и DigitalOcean[9].

Terraform представил декларативный подход к описанию инфраструктуры, при котором пользователь определяет желаемое конечное состояние системы. Важной инновацией стала функция «планов выполнения» (execution plans), которая перед внесением изменений показывала, какие именно действия (создание, изменение, удаление) Terraform собирается произвести для обеспечения безопасности и предсказуемости[8]. Несмотря на заложенные инновации, инструмент не получил мгновенной популярности, и его рост в первые полтора года был медленным.

2015 год

2015 год, первый полный год после запуска, стал для Terraform периодом бурного роста. Развитие было сосредоточено на расширении экосистемы провайдеров, добавлении ключевых функций и стабилизации ядра. В течение года вышло несколько значимых релизов.

В апреле 2015 года вышел Terraform v0.4, который на тот момент был назван крупнейшим релизом благодаря активному участию сообщества. В мае состоялся выпуск версии 0.5, добавившей несколько долгожданных функций[10]:

  • Поддержка нескольких провайдеров (Multi-Provider): Появилась возможность настраивать одного и того же провайдера (например, AWS) несколько раз в одной конфигурации, что позволило управлять ресурсами в разных регионах[10].
  • Переменные окружения: Была добавлена возможность задавать значения переменных Terraform через переменные окружения (TF_VAR_name), что улучшило автоматизацию и безопасность[10].
  • Поддержка Windows: Добавлен провижинер winrm для управления ресурсами на базе Windows.
  • Рост экосистемы AWS: Благодаря переходу на официальный AWS SDK и усилиям сообщества было добавлено более 20 новых ресурсов для AWS[10].


Во второй половине года вышли несколько версий в рамках ветки 0.6 (август — октябрь), которые были сфокусированы на дальнейшей стабилизации и расширении поддержки ресурсов для таких платформ, как DigitalOcean, Google Cloud и Docker. Компания HashiCorp отмечала, что Terraform стал их самым быстрорастущим проектом, что было обусловлено большим вкладом сообщества[10].

2016 год

2016 год стал для Terraform годом значительного роста, ключевым событием которого стал выпуск версии 0.7 в августе[11]. Это обновление, названное разработчиками первым крупным релизом с новыми функциями за год, представило несколько фундаментальных возможностей, которые заложили основу для дальнейшего развития инструмента[11]:

  • 'Команда `import`: Появилась долгожданная функция для импорта существующей, созданной вручную, инфраструктуры под управление Terraform. Это позволило компаниям постепенно внедрять инфраструктуру как код, не пересоздавая ресурсы с нуля[11].
  • Источники данных (Data Sources): Были введены как концепция первого класса для получения данных из внешних источников (например, идентификаторов образов AMI в AWS), на которые конфигурация может ссылаться, но которыми не управляет[11].
  • Нативная поддержка списков и карт: В язык конфигурации HCL была добавлена полноценная поддержка сложных типов данных, таких как списки (list) и карты (map). Это позволило создавать более гибкие и лаконичные конфигурации без обходных путей[11].
  • CLI для управления состоянием: Был добавлен набор команд для безопасной работы с файлом состояния (state), что улучшило контроль и управляемость инфраструктуры[11].


На протяжении года экосистема Terraform продолжала расширяться. К 2016 году инструмент уже официально поддерживал ключевых облачных провайдеров, включая AWS, Google Cloud Platform и Azure[12]. В последующих минорных релизах была расширена поддержка ресурсов: например, в версии 0.7.7 добавилась поддержка нового региона AWS в Огайо (us-east-2) и новые ресурсы для провайдера AzureRM[13]. В декабре 2016 года был выпущен релиз v0.8.2.

Рост популярности инструмента в DevOps-сообществе привел к появлению подробных руководств и лучших практик. В частности, серия статей от компании Gruntwork, опубликованная в 2016 году, легла в основу популярной книги «Terraform: Up & Running»[14].

2017 год

2017 год стал для Terraform периодом значительного роста, в течение которого вышли три знаковых релиза (0.9, 0.10 и 0.11), были запущены ключевые элементы экосистемы и заключено важное партнёрство. Сооснователь HashiCorp Митчелл Хашимото назвал этот год «годом Terraform», подчеркивая переход проекта от нишевого инструмента к отраслевому стандарту[15][16].

Terraform 0.9 (март 2017 года) был сфокусирован на улучшении командной работы и управления состоянием[15].

  • Блокировка состояния (State Locking): Добавлена критически важная функция для командной работы, предотвращающая одновременное выполнение terraform apply разными пользователями и повреждение файла состояния[15].
  • Среды состояния (State Environments): Представлена концепция для управления несколькими наборами инфраструктуры из одной конфигурации. Впоследствии функция была переименована в «рабочие пространства» (workspaces)[15].
  • Провижинеры при уничтожении (Destroy Provisioners): Появилась возможность запускать провижинеры не только при создании, но и при уничтожении ресурса[15].


Terraform 0.10 (август 2017 года) принёс фундаментальное архитектурное изменение[16].

  • Разделение ядра и провайдеров: Terraform был разделен на ядро (Core) и провайдеры. Провайдеры были вынесены в отдельные исполняемые файлы и репозитории, что позволило развивать их независимо от ядра[16].
  • Ограничения версий провайдеров: Пользователи получили возможность указывать конкретные версии провайдеров, которые команда terraform init будет автоматически загружать[16].
  • Переименование в «рабочие пространства»: На основе отзывов сообщества концепция «сред состояния» была переименована в более интуитивно понятные «рабочие пространства» (workspaces)[16].


Terraform 0.11 (ноябрь 2017 года) был направлен на улучшение работы с модулями и повышение удобства использования[17].

  • Версионирование модулей: Была добавлена поддержка версионирования модулей из реестра Terraform (аргумент version), что улучшило предсказуемость конфигураций[17].
  • Поддержка приватных реестров модулей: Появилась возможность использовать внутренние реестры модулей для корпоративных нужд[17].
  • Конфигурация провайдеров для модулей: Была решена проблема, когда разным модулям требовались разные конфигурации одного и того же провайдера (например, для работы с несколькими регионами облака)[17].


Помимо обновлений самого инструмента, 2017 год был отмечен развитием экосистемы. В сентябре на конференции HashiConf был запущен публичный Реестр модулей Terraform (Terraform Module Registry), который значительно упростил повторное использование кода и обмен готовыми инфраструктурными шаблонами[18]. В том же месяце была анонсирована, а в декабре выпущена версия «нового поколения» (next generation) Terraform Enterprise, сфокусированная на командной работе, интеграции с системами контроля версий и управлении политиками[18][19]. Кроме того, HashiCorp объявила о первом крупном партнёрстве с облачным провайдером — Microsoft — для совместной разработки провайдера Azure.

2018 год

В 2018 году ключевым событием в развитии Terraform стал анонс версии 0.12, который принёс значительные улучшения в язык конфигурации HCL. Год также был отмечен развитием инструментов для совместной работы и корпоративного использования.

На конференции HashiConf в октябре 2018 года был анонсирован предварительный выпуск Terraform 0.12[20]. Это обновление было направлено на усовершенствование языка конфигурации HCL, чтобы сделать его более простым, последовательным и гибким[20].

Одновременно с анонсом Terraform 0.12 компания HashiCorp представила бесплатное удалённое хранение состояния (Remote State Storage)[20]. Это нововведение было нацелено на упрощение совместной работы, устраняя трудности с ручным управлением файлами состояния. Бесплатный сервис включал шифрование с помощью Vault и блокировку операций без ограничений по количеству пользователей или рабочих пространств[20].

В течение года продолжалось развитие платной версии Terraform Enterprise[21]. Была добавлена возможность запускать частный реестр модулей внутри организации, что дополнило появившийся в 2017 году публичный реестр[22]. Также в 2018 году началось развитие облачного сервиса Terraform Cloud. До анонса версии 0.12 основной стабильной версией, используемой в производственных средах, оставалась 0.11[23].

Таким образом, 2018 год стал для Terraform переходным периодом, заложившим основу для значительных изменений в синтаксисе и удобстве использования инструмента, а также расширившим возможности для командной работы.

2019 год

2019 год был отмечен выпуском одной из самых значительных версий в истории инструмента — Terraform 0.12, который состоялся в мае[24]. Это обновление внесло существенные улучшения в язык конфигурации HCL, объединив его с языком интерполяции (HIL) в единую библиотеку[25].

Основные нововведения включали:

  • Выражения первого класса (First-class expressions): Появилась возможность использовать переменные и выражения напрямую, без необходимости заключать их в синтаксис строковой интерполяции `"${...}"`[25].
  • Итерационные конструкции: Были добавлены циклы `for` и `for_each`, а также динамические блоки, которые позволили генерировать повторяющиеся блоки конфигурации на основе списков и карт[25].
  • Обобщённая система типов: Улучшена работа со сложными типами данных, такими как списки и карты, что позволило свободнее их использовать, в том числе для входных и выходных данных модулей[24].
  • Значение `null`: Появилось специальное значение `null` для аргументов, что позволило Terraform опускать поле при вызовах API[26].
  • Улучшенные планы выполнения и сообщения об ошибках: Вывод команды `terraform plan` стал более структурированным и читаемым, а сообщения об ошибках — более информативными, с указанием контекста и места в коде[24].

Поскольку изменения не были полностью обратно совместимы с версией 0.11, HashiCorp предоставила специальный инструмент для автоматического обновления конфигураций[25].

В 2019 году HashiCorp также активно развивала платную версию продукта — Terraform Enterprise, ориентированную на крупные организации. Эта версия предлагалась как частная инсталляция и добавляла функции для совместной работы и управления[27]. Ключевые возможности включали управление рабочими пространствами, централизованное хранение состояния, частный реестр модулей, а также функции безопасности, такие как управление доступом на основе команд и применение политик через фреймворк Sentinel[28].

К 2019 году Terraform достиг зрелости и получил широкое признание в индустрии, что подтверждалось его использованием такими крупными компаниями, как Barclays, Capital One и GM Cruise[25].

2020 год

2020 год стал для Terraform периодом значительного развития, ключевым событием которого стал выпуск версии 0.13. Основные усилия были направлены на улучшение работы с модулями, расширение экосистемы провайдеров и интеграцию с облачной платформой Terraform Cloud.

Наиболее важным событием стал выпуск Terraform 0.13, который стал общедоступным 10 августа 2020 года[29]. Эта версия продолжила усовершенствование языка, начатое в версии 0.12, и представила несколько ключевых нововведений:

  • Улучшения для модулей: В модулях появилась поддержка мета-аргументов `count`, `for_each` и `depends_on`[30]. Это позволило создавать несколько экземпляров модуля с помощью циклов и более явно управлять зависимостями между модулями, что значительно упростило сложные конфигурации[30].
  • Блок `required_providers`: Была представлена новая блочная конструкция `required_providers`, которая стандартизировала объявление и управление версиями провайдеров[29]. Это нововведение позволило команде `terraform init` автоматически находить и устанавливать провайдеры от партнёров и сообщества, размещённые в реестре Terraform, а не только официальные от HashiCorp[29].
  • Интеграция с Terraform Cloud: Появилась команда `terraform login`, упрощающая аутентификацию и начало работы с Terraform Cloud непосредственно из командной строки[29].


В 2020 году HashiCorp также активно развивала свои коммерческие продукты. В августе для Terraform Cloud был представлен новый тарифный план «Business», который добавил функциональность для крупных компаний, включая единый вход (SSO), журналы аудита и возможность одновременного выполнения нескольких запусков Terraform[31]. В течение года также выходили регулярные обновления для самоуправляемой платформы Terraform Enterprise[32].

2021 год

2021 год стал для Terraform знаковым, в первую очередь, благодаря выпуску версии 1.0. Это событие, состоявшееся 8 июня 2021 года на конференции HashiConf Europe, ознаменовало новый этап зрелости и стабильности продукта[33]. Релиз стал кульминацией семилетней разработки, за время которой инструмент был загружен более 100 миллионов раз[33], а основной акцент в нём был сделан не на новых функциях, а на гарантиях стабильности и обратной совместимости[34].

Основные гарантии Terraform 1.0:

  • Совместимость версий: HashiCorp пообещала, что все последующие минорные релизы в ветке 1.x будут полностью совместимы с конфигурациями и файлами состояния версии 1.0, избавляя пользователей от необходимости переписывать код при обновлениях[34].
  • Простой процесс обновления: Для пользователей версий 0.14 и выше переход на 1.0 не требовал значительных усилий или изменений в рабочих процессах[34].
  • Длительный период поддержки: Было объявлено, что все релизы в ветке 1.x будут иметь период поддержки не менее 18 месяцев, в течение которого будут выпускаться исправления ошибок[34].


Коммерческие продукты Terraform Cloud и Terraform Enterprise также получили улучшения. Появился встроенный механизм для публикации модулей из публичного реестра в приватный, а также была представлена функция проверок выполнения (Run Checks) для интеграции сторонних инструментов анализа безопасности и затрат[33]. Кроме того, в Terraform Enterprise была расширена поддержка флагов для удалённых запусков из командной строки, таких как `-refresh=false` и `-replace=ADDRESS`[35].

Экосистема Terraform продолжала расширяться: к моменту выхода версии 1.0 она насчитывала более 1000 провайдеров и 5000 модулей[33]. HashiCorp была названа «Партнёром года Microsoft 2021» в категории Open Source на Azure[36]. В сотрудничестве с AWS был представлен провайдер Terraform AWS Cloud Control, призванный ускорить поддержку новых сервисов AWS[36], а также было расширено соглашение с Cisco, в рамках которого Terraform Cloud начал поставляться с платформой Cisco Intersight[36].

В целом, 2021 год закрепил за Terraform статус отраслевого стандарта, сместив фокус с быстрых функциональных изменений на обеспечение долгосрочной стабильности. Этому предшествовал выпуск версии 0.15, улучшившей совместимость при чтении удалённых состояний[37], и прекращение поддержки первой версии SDK для разработки провайдеров 31 июля 2021 года[38].

2022 год

В 2022 году развитие Terraform было сосредоточено на улучшении автоматизации, управления политиками и упрощении использования, особенно в облачных и корпоративных версиях. В течение года было выпущено два минорных релиза: v1.2 (май) и v1.3 (сентябрь)[39].

Ключевые нововведения были представлены в октябре на конференции HashiConf Global и коснулись, в основном, коммерческих продуктов Terraform Cloud и Terraform Enterprise[40]:

  • No-Code Provisioning (Развёртывание без кода): Была представлена возможность, позволяющая пользователям без глубоких знаний в написании кода Terraform развёртывать инфраструктуру на основе предварительно одобренных модулей[40].
  • Нативная поддержка Open Policy Agent (OPA): В Terraform Cloud была добавлена встроенная поддержка OPA, что расширило возможности «политики как код» наряду с собственным решением HashiCorp — Sentinel[40].
  • Continuous Validation (Непрерывная проверка): В бета-версии для Terraform Cloud Business была анонсирована функция, позволяющая отслеживать отклонения развёрнутой инфраструктуры от конфигурации[40].
  • Azure Provider Automation: Был представлен инструмент для автоматизации провайдера Azure, ускоряющий процесс добавления поддержки новых сервисов Azure в Terraform[40].


Помимо этого, самоуправляемая платформа Terraform Enterprise получала регулярные обновления в течение года[41], в рамках которых прекращалась поддержка устаревших зависимостей, таких как PostgreSQL 10 и старых версий операционных систем[42].

2023 год

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

Смена лицензии и появление OpenTofu Ключевым событием года стала смена лицензии: 10 августа 2023 года HashiCorp объявила о переходе Terraform с открытой лицензии Mozilla Public License 2.0 (MPL 2.0) на более ограничительную Business Source License (BSL) 1.1[43]. Новая лицензия, оставаясь бесплатной для большинства сценариев использования, наложила ограничения на компании, которые создавали конкурирующие коммерческие продукты на основе кода Terraform[44].

Этот шаг вызвал негативную реакцию в DevOps-сообществе. В ответ ряд компаний, включая Gruntwork, Spacelift, Harness, Env0 и Scalr, инициировали создание открытого форка Terraform под названием OpenTF[45]. 20 сентября 2023 года проект был принят в состав Linux Foundation и переименован в OpenTofu[46]. Целью OpenTofu было заявлено создание полностью открытой, управляемой сообществом и беспристрастной альтернативы, служащей прямой заменой (drop-in replacement) для версий Terraform до 1.6[45], на основе последней версии под лицензией MPL — 1.5.x[47]. К концу года OpenTofu выпустил кандидатов в стабильный релиз[47].

Технические нововведения Несмотря на события вокруг лицензии, HashiCorp продолжила развивать Terraform, выпустив в течение года несколько обновлений, включая версии 1.5 и 1.6. Ключевые нововведения включали:

  • Импорт на основе конфигурации (Config-driven import): В версии 1.5 появилась функция, позволяющая безопасно импортировать существующие ресурсы в управление Terraform, автоматически генерируя для них соответствующий код конфигурации.
  • Встроенный фреймворк для тестирования: В версии 1.6 был представлен собственный фреймворк для юнит- и интеграционного тестирования модулей непосредственно на языке HCL.
  • Улучшения в Terraform Cloud: В облачной версии появились новые возможности, такие как динамические учётные данные для провайдеров и интеграция с Open Policy Agent.

Также было анонсировано будущее добавление пользовательских функций (Custom Functions) для расширения гибкости языка HCL и продолжено развитие CDKTF.

2024 год

2024 год стал для Terraform периодом значительных корпоративных изменений и технологических анонсов. Ключевыми событиями стали объявление о приобретении HashiCorp корпорацией IBM и представление функции Stacks.

В апреле 2024 года IBM объявила о заключении соглашения о покупке HashiCorp за 6,4 миллиарда долларов[48]. Ожидалось, что сделка будет завершена к концу 2024 года[49]. Целью приобретения было заявлено усиление портфеля IBM в области гибридного и мультиоблачного управления за счёт интеграции продуктов HashiCorp с решениями IBM и Red Hat[48].

На ежегодной конференции HashiConf в октябре 2024 года главным анонсом для Terraform стал перевод функции Terraform Stacks в стадию публичной бета-версии[50]. Технический директор HashiCorp Армон Дадгар назвал это нововведение «Terraform 2.0»[50], поскольку оно предлагает новый подход к управлению сложными архитектурами. Stacks позволяют координировать и развёртывать взаимозависимые конфигурации как единое целое, определяя все связи в виде кода на языке HCL[51][52]. При этом было отмечено, что компания не планирует отказываться от существующей технологии рабочих пространств (Workspaces)[50]. Кроме того, был представлен инструмент Terraform Migrate в публичной бета-версии для автоматизации миграции в платные версии продукта[51].

Эти события происходили на фоне продолжающейся конкуренции с OpenTofuфорком Terraform, созданным сообществом в 2023 году после смены лицензии на Business Source License[50].

2025 год

2025 год стал для экосистемы Terraform периодом значительных корпоративных и технологических изменений. Ключевыми событиями стали завершение сделки по приобретению HashiCorp компанией IBM и активное развитие как самого Terraform, так и его открытой альтернативы OpenTofu.

В конце февраля 2025 года IBM финализировала сделку по приобретению HashiCorp за 6,4 миллиарда долларов, после чего последняя продолжила работу в качестве отдельного подразделения[53][54]. Целью IBM была заявлена глубокая интеграция продуктов HashiCorp со своими решениями, в частности, объединение Terraform с Red Hat Ansible Automation Platform для создания комплексной гибридной облачной платформы[55].

Параллельно с этим, OpenTofuфорк Terraform, созданный в 2023 году, — укрепил свои позиции как полноценная, управляемая сообществом альтернатива под эгидой Linux Foundation[56]. Проект привлёк внимание, реализовав долгожданную в сообществе функцию шифрования файла состояния[56].

Несмотря на корпоративные изменения, HashiCorp продолжила развитие Terraform, выпустив в течение года несколько версий, включая v1.9.0, v1.12.1 и v1.13.1, а также альфа-версии для будущего релиза v1.14.0. Ключевые нововведения включали:

  • 'Команда `terraform stacks`: В версии 1.13.0 (август 2025) была добавлена команда для управления стеками инфраструктуры из командной строки, развивающая функциональность Stacks, представленную в бета-версии в 2024 году.
  • Эфемерные ресурсы (Ephemeral Resources): На конференции HashiDays в июне 2025 года была представлена функция для работы с чувствительными данными (например, токенами), которые существуют только во время выполнения операции и не сохраняются в файле состояния, что повышает безопасность[57][58].


Таким образом, 2025 год определил два параллельных пути развития в экосистеме: коммерческий Terraform под управлением IBM и открытый, ведомый сообществом OpenTofu.

Общие сведения
Terraform
Тип Инфраструктура как код
Автор Митчел Хашимото и др.
Разработчик HashiCorp
Написана на Go
Интерфейс Интерфейс командной строки[1]
Движок Terraform Core[2]
Операционные системы Linux, FreeBSD, macOS, OpenBSD, Solaris, Microsoft Windows
Языки интерфейса английский
Первый выпуск 28 июля 2014; 11 лет назад (2014-07-28)[3]
Аппаратные платформы x86-64, ARM64[4]
Последняя версия 1.13.2 ([5])
Альфа-версия 1.14.0-alpha20250911[6]
Тестовая версия 1.14.0-alpha20250911.
Репозиторий github.com/hashicorp/ter…
Лицензия Business Source License v1.1[7] (source-available)
Сайт terraform.io

Примечания

Ссылки