Terraform¶
https://www.ibm.com/ru-ru/cloud/learn/terraform
Поскольку Terraform использует простой синтаксис, может предоставлять инфраструктуру с помощью нескольких облачных и локальных центров обработки данных, а также может безопасно и эффективно изменять инфраструктуру в ответ на изменения конфигурации, в настоящее время он является одним из наиболее популярных инструментов автоматизации инфраструктуры. Если организация планирует развернуть среду в гибридном облаке или мультиоблачную среду, вам, скорее всего, потребуется Terraform.
Каковы преимущества Terraform?¶
Существует несколько ключевых причин, по которым разработчики предпочитают Terraform другим инфраструктурам в качестве инструмента программирования:
ПО с открытым исходным кодом: Terraform поддерживает большие сообщества авторов, создающих плагины для платформы. Независимо от того, услугами какого поставщика облачных услуг вы пользуетесь, вы легко сможете найти плагины, расширения и профессиональную поддержку. Это также означает, что Terraform быстро развивается и постоянно предлагает новые преимущества и улучшения.
Независимость от платформы: Terraform можно использовать с любым поставщиком облачных услуг. Большинство других инструментов IaC предназначены для работы с одним поставщиком облачных услуг.
Неизменная инфраструктура: большая часть инструментов “инфраструктуры как кода” создает изменяемую инфраструктуру, то есть инфраструктура может изменяться в соответствии с такими изменениями, как обновление промежуточного программного обеспечения или новый сервер хранения. Опасность изменяемой инфраструктуры заключается в отклонении от конфигурации — по мере увеличения числа изменений, фактическое предоставление различных серверов или других элементов инфраструктуры отклоняется от исходной конфигурации, что затрудняет диагностику, исправление ошибок или проблем с производительностью. Terraform обеспечивает неизменную инфраструктуру, что означает, что при каждом изменении в среде текущая конфигурация заменяется на новую, учитывающую это изменение, и инфраструктура возвращается к исходному состоянию. Но что еще лучше, предыдущие конфигурации можно сохранить в виде версий, чтобы вернуться к ним в случае необходимости.
Модули Terraform¶
Модули Terraform — это небольшие многоразовые конфигурации Terraform для нескольких ресурсов инфраструктуры, которые используются совместно. Модули Terraform удобны, поскольку они позволяют автоматизировать сложные ресурсы с помощью повторно используемых настраиваемых конструкций. Написание даже очень простого файла Terraform приводит созданию модуля. Модуль может вызывать другие модули, называемые вспомогательными модулями, которые могут ускорить и упростить создание конфигурации. Модули можно также вызвать несколько раз — как в одной, так и в отдельных конфигурациях.
Провайдеры Terraform¶
Проводники Terraform — это модули, реализующие типы ресурсов. Проводники содержат весь код, необходимый для аутентификации и подключения к услуге — как правило, поставщика услуг публичных облаков — от имени пользователя. Можно найти проводников для облачных платформ и услуг, которые вы используете, добавить их в конфигурацию, а затем использовать их ресурсы для предоставления инфраструктуры. Проводники доступны практически для каждого крупного поставщика облачных услуг, SaaS и других служб, разработанных и/или поддерживаемых сообществом Terraform или отдельными организациями.
Terraform и Kubernetes¶
Иногда возникает путаница между Terraform и Kubernetes и тем, что они на самом деле делают. На самом деле они не являются альтернативами друг другу и эффективно работают вместе.
Kubernetes — это система управления контейнерами с открытым исходным кодом, которая позволяет разработчикам планировать развертывание на узлах в вычислительном кластере и активно управляет контейнеризованными рабочими нагрузками, чтобы обеспечить соответствие их состояния намерениям пользователей.
С другой стороны, Terraform является “инфраструктурой как инструмент кода” с гораздо более широкими возможностями, которая позволяет разработчикам автоматизировать всю инфраструктуру, включающую множество публичных и частных облаков.
Terraform позволяет обеспечить автоматизацию и управление возможностями уровня инфраструктуры как услуги (IaaS), платформы как услуги (PaaS) и даже программного обеспечения как услуги (SaaS), а также параллельное создание всех этих ресурсов на уровне всех этих провайдеров. Terraform можно использовать для автоматизации предоставления Kubernetes — особенно управляемых кластеров Kubernetes на облачных платформах — и автоматизировать внедрение приложений в кластер.
Terraform и Ansible¶
Как Terraform, так и Ansible являются инструментами “инфраструктуры как кода”, но между ними есть некоторые существенные различия:
В то время как Terraform является чисто декларативным инструментом (см. выше), Ansible объединяет в себе как декларативную, так и процедурную конфигурацию. В процедурной конфигурации указываются шаги или точный способ, которым вы хотите предоставить инфраструктуру в желаемом состоянии. Процедурная конфигурация предполагает больше работы, но она обеспечивает больший контроль.
Terraform — это инструмент с открытым исходным кодом; Ansible разрабатывается и продается компанией Red Hat.
https://learn.hashicorp.com/collections/terraform/gcp-get-started
Инструменты инфраструктуры как кода (IAC) позволяют управлять инфраструктурой с помощью файлов конфигурации, а не с помощью графического пользовательского интерфейса. IaC позволяет вам создавать, изменять и управлять своей инфраструктурой безопасным, согласованным и воспроизводимым способом, определяя конфигурации ресурсов, которые вы можете изменять, повторно использовать и совместно использовать.
Terraform - это инфраструктура HashiCorp как инструмент программирования. Он позволяет определять ресурсы и инфраструктуру в удобочитаемых декларативных файлах конфигурации и управляет жизненным циклом вашей инфраструктуры. Использование Terraform имеет ряд преимуществ по сравнению с ручным управлением инфраструктурой:
Terraform может управлять инфраструктурой на нескольких облачных платформах.
Понятный для человека язык конфигурации помогает быстро писать код инфраструктуры. Состояние терраформирования позволяет отслеживать изменения ресурсов во всех развертываниях. Вы можете передать свои конфигурации в систему управления версиями для безопасной совместной работы над инфраструктурой.
Управление любой инфраструктурой
Плагины Terraform, называемые поставщиками, позволяют Terraform взаимодействовать с облачными платформами и другими службами через их интерфейсы прикладного программирования (API). HashiCorp и сообщество Terraform написали более 1000 поставщиков для управления ресурсами в Amazon Web Services (AWS), Azure, облачной платформе Google (GCP), Kubernetes, Helm, GitHub, Splunk и DataDog, и это лишь некоторые из них. Найдите поставщиков для многих платформ и сервисов, которые вы уже используете в реестре Terraform. Если вы не найдете поставщика, которого ищете, вы можете написать свой собственный. »Стандартизация рабочего процесса развертывания
Поставщики определяют отдельные единицы инфраструктуры, например вычислительные экземпляры или частные сети, в качестве ресурсов. Вы можете объединять ресурсы от разных поставщиков в многоразовые конфигурации терраформирования, называемые модулями, и управлять ими с помощью согласованного языка и рабочего процесса.
Язык конфигурации Terraform является декларативным, что означает, что он описывает желаемое конечное состояние вашей инфраструктуры, в отличие от процедурных языков программирования, которые требуют пошаговых инструкций для выполнения задач. Поставщики терраформирования автоматически вычисляют зависимости между ресурсами, чтобы создавать или уничтожать их в правильном порядке.
Рабочий процесс развертывания терраформирования
Последовательность развертывания инфраструктуры с помощью Terraform:¶
Область применения - Определите инфраструктуру для вашего проекта. Автор - Напишите конфигурацию для вашей инфраструктуры. Инициализация - Установка плагинов, необходимых Terraform для управления инфраструктурой. План - Предварительный просмотр изменений, которые внесет Terraform в соответствии с вашей конфигурацией. Применить - Внести запланированные изменения.
Отслеживание инфраструктуры¶
Terraform отслеживает реальную инфраструктуру в файле состояния, который служит источником информации о вашей среде. Terraform использует файл состояния для определения изменений, которые необходимо внести в вашу инфраструктуру, чтобы она соответствовала вашей конфигурации.
Сотрудничество¶
Terraform позволяет совместно работать над инфраструктурой с ее удаленными бэкэндами. Когда используется Terraform Cloud (бесплатно для пяти пользователей), вы можете безопасно делиться своим состоянием с товарищами по команде, обеспечивать стабильную среду для запуска Terraform и предотвращать условия гонки, когда несколько человек одновременно вносят изменения в конфигурацию.
Вы также можете подключить Terraform Cloud к системам управления версиями (VCSS), таким как GitHub, GitLab и другие, что позволит ИТ-отделу автоматически предлагать изменения инфраструктуры при внесении изменений в конфигурацию VCS. Это позволяет вам управлять изменениями в вашей инфраструктуре с помощью контроля версий, как и в случае с кодом приложения.
