Здравствуйте, девочки и мальчики, сегодня я расскажу вам о таком инструменте управления IaC (Infrastructure as Code) от компании Hashicorp. Немного узнаем о том, что же такое этот ваш IaC и как оказывается можно легко и просто настраивать инфраструктуру вашего проекта.
Что такое Infrastructure as Code ?
Для лучшего понимания инструментов IaC в частности Terraform, давайте немного поговорим о том, что же такое Infrastructure as Code.
Infrastructure as Code - это подход к управлению и автоматизации таких компонентов инфраструктуры, как
- сети
- виртуальные машины
- сервера
- итд.
через использование кода.
Такой подход позволяет использовать конфигурационные файлы для настройки вышеперечисленных систем и с помощью программного кода, выполнять автоматическую установку, конфигурацию и развертывание этих систем.
Основная идея IaC заключается в том, что инфраструктура управляется и модифицируется таким же образом, как и код приложения, что позволяет осуществлять более быстрое и надежное внедрение изменений в инфраструктуру.
Плюсы и минусы IaC.
Плюсы:
- Повторяемость - создание инфраструктуры с использованием кода, снижает риск человеческих ошибок.
- Масштабируемость - обеспечение гибкости и простоты в добавлении или удалении ресурсов.
- Автоматизация - автоматизация процесса развертывания и конфигурирования инфраструктуры
Минусы:
- Обучение и переобучение - IaC требует знания языка программирования и понимания инфраструктурных сервисов.
- Зависимость от инструментов - IaC зависит от инфраструктурных инструментов, если эти инструменты станут перестанут поддерживаться, это может потенциально повлиять на работоспособность и поддержку существующей инфраструктуры
- Сложность - IaC требует высокой квалификации и дополнительной экспертизы в области программирования и инфраструктуры.
Этой информации должно хватить для того, чтобы сформировать хотя бы базовое представление о том, что же из себя представляет подход Infrastructure as Code. Поэтому мы можем смело переходить к изучению одного из многих инструментов IaC - Terraform.
Terraform - введение
Terraform - это инструмент для развёртывания и управления инфраструктурой в виде кода.
Для более простого понимания этого инструмента, давайте сначала вспомним, что такое терраформирование. Согласно одному из определений Терраформирование - это целенаправленное изменение климатических условий, атмосферы, температуры, топографии или экологии, для приведения атмосферы, температуры и экологических условий в состояние, пригодное для обитания.
Аналогично terraform используется разработчиками для формирования некоторого окружения, пригодного для дальнейшей разработки.
Например, практически для разработки приложения необходимо развернуть систему состоящую из нескольких виртуальных машин под каждый сервис, систему хранения данных и сконфигурировать сети безопасности. Все это можно сделать вручную, но что если вам нужно сгенерировать несколько таких окружений под разные приложения, тут на помощь и приходит terraform, который позволяет автоматизировать этот процесс, и повторять его столько раз, сколько вам понадобиться.
Состав terraform
Terraform использует декларативный подход, который основывается на том что мы описываем результат, то есть то, что мы хотим получить, в отличие от императивного, в котором мы описываем как мы хотим это получить.
Terraform имеет две главные компоненты - ядро и провайдер.
Ядро
Ядро работает с двумя компонентами, это Файл конфигурации и Состояние системы.
В файле конфигурации описывается желаемое состояние системы, а в Состоянии находится информация о текущем состоянии системы. Ядро сравнивает файл конфигурации с текущим состоянием и в случае если они отличаются, решает, что нужно убрать, что создать, а что изменить.
Провайдер
Провайдер - это компоненты, которые позволяют управлять ресурсами в различных облачных или локальных средах. Каждый провайдер предоставляет Terraform API для управления определённым набором ресурсов, таких как виртуальные машины, базы данных, сети и многое другое, в конкретном сервисе или платформе.
Для использования провайдера в Terraform нужно указать его в конфигурационном файле с помощью директивы provider.
Некоторые популярные провайдеры:
— AWS (Amazon Web Services),
— Azure (Microsoft Azure),
— Google Cloud Platform (GCP)
Файл конфигурации
Наиболее важным компонентом terraform является файл конфигурации, именно в нем разработчик описывает желаемое состояние инфраструктуры, список провайдеров и ресурсов. Такие файлы имеют расширение tf и написаны на языке Hashicorp Configuration Language (HCL). По своему виду и синтаксису такие файлы напоминают yml файлы или json. Давайте рассмотрим пример такого файла.
А нет, хуй там, ведь яндекс дзен не позволяет вставлять код, поэтому до встречи на нормальной платформе.