Во-первых, давайте поговорим о Инфраструктура как код (IAC).
Как и имя предполагает, что инфраструктура в качестве кода является процесс обеспечения инфраструктуры с использованием кода. Это способ автоматизировать создание топологии, необходимое для запуска вашего приложения.
Подумайте о Инфраструктура как широкий срок. Это может быть что-нибудь из виртуальных машин для кластеров Kubernetes к ведрам хранения. Код В этом контексте относится к языку, используемому для написания автоматизации. Наиболее распространенными являются формат языка JSON, YAML и Hashicorp (HCl).
IAC: Хорошие запчасти
Автоматизация вашей инфраструктуры имеет большие преимущества. Некоторые из моих любимых являются:
Согласованность Отказ Консистенция — это название игры на IAC. Средние изменения в инфраструктуре могут вызвать несоответствие между развитием, постановкой и производственными условиями.
Динамическое обеспечение Отказ Инфраструктура переносится. Когда он автоматизирован, становится легче предоставления ресурсов и преодоления ресурсов в отношении нагрузки.
Воспроизводимые среды Отказ Сверяние песочницы для испытаний с определенной конфигурацией обычно занимает несколько минут и имеет очень мало вмешательства человека.
Документированная инфраструктура Отказ Код IAC работает как всегда актуальная документация вашей инфраструктуры. Инструменты, такие как Git, также дадут вам ревизионную тропу и принесет к нему аспекты сотрудничества.
Познакомьтесь с террафором
Террафом это инструмент командной строки с открытым исходным кодом Hashicorp. .
Это дает вам возможность управлять — строить, обновлять и уничтожать — инфраструктуру с использованием IAC-принципов.
Террафор использует язык HCl. С HCl вы заявляете, как вы хотите, чтобы ваша инфраструктура выглядела. Террафор прочитает этот план и обеспечивает все ресурсы, которые вы объявили.
Вот как выглядит файл HCl:
provider "aws" { version = "~> 3.0" region = "us-east-1" } resource "aws_s3_bucket" "bucket" { bucket = "my-private-bucket" acl = "private" versioning { enabled = true } }
В приведенном выше примере мы информируем террафом, что Web Services Amazon (AWS) является нашим поставщиком выбора. Мы также объявляем ресурс: частное ведро S3.
Провайдеры
Одна очень важная концепция от террафора — Поставщики Отказ
Поставщики — это клей между Terraform CLI и другими системами. Они работают как плагины и живут отдельно от террафора.
С поставщиками террафом может подключиться к облачным поставщикам (например, платформу Google Cloud, AWS), решения PAAS (например, Heroku, Kubernetes) и приложения SAAS (например, Github).
Состояние
Террафору отслеживает вашу инфраструктуру, хотя и Государственный файл Отказ
Государственный файл является источником истины для ваших архитектурных элементов. Он содержит все ресурсы, созданные Terraporm, плюс любые метаданные, необходимые для работы террафора.
Когда вы обновляете свою конфигурацию — вы используете файлы HCl — вы объявляете новый Желаемое состояние Отказ
Работа Террафора состоит в том, чтобы превратить это желаемое состояние в реальный мир. Он собирается сопоставить ваше текущее состояние государства — и ваше желаемое состояние — ваша конфигурация — и придумайте план выполнения.
План содержит информацию о том, что необходимо создать, обновляться или удалены в инфраструктуре. Зависимости между ресурсами решаются с использованием График зависимости Отказ Со всем на месте, Террафом позвонит всем API, необходимым для создания и управления всеми ресурсами.
Пример
Давайте вернемся к нашему первому примеру.
Представьте, что мы меняем ведро ACL из Частный
к Государственный читал
Отказ Вот что сделает террафом:
- Сравнивает текущее состояние с желаемым состоянием;
- Видит, что ACL ведра изменился;
- Создает план — 1 ресурс должен быть обновлен;
- Вызывает конечные точки AWS S3 для обновления ковша ACL.
Будет ли просто обновить ACL для Государственный читал
? Это удалит ведро и создать новый?
Это зависит от того, какой тип ресурса изменен. В целом, террафом достаточно умно, чтобы уничтожить и воссоздать ресурсы, когда абсолютно необходимы.
Terraform хороший выбор для моей компании?
.. или запуск, или боковой проект?
Террафом делает дополнительную сложность на ваш рабочий процесс. HCl — это новый язык для изучения. Инструмент командной строки все еще довольно новый по сравнению с другими решениями IAC, и он по-прежнему показывает несколько неровных краев.
Это сказано, как только вы освоите террафору, это становится незаменимым инструментом. Управление инфраструктурой с кодом может на самом деле чувствовать себя проще и безопаснее, чем тыкать на кнопках в приборной панели облачной провайдера.
Разнообразие поставщиков на Реестр Terraform Также показывает, насколько это универсален. Как только вы узнаете его, вы можете применить те же знания в любом облачном провайдере, сервисе или Цепочка доставки пиццы Отказ
Вот это для введения, спасибо за чтение!
Этот пост был первоначально опубликован на Hyperfoo , иди туда еще!
Накрыть фон Paweł Czerwiński на бессплашне
Оригинал: «https://dev.to/ruanmartinelli/introduction-to-terraform-47d2»