Что такое Terraform

терраформ

Сегодня мы собираемся погрузиться в то, что такое Terraform, почему он полезен, как он сравнивается с другими инструментами и некоторые трудности его использования.

К концу этой статьи вы поймете, что такое Terraform, почему он полезен и для чего вы его используете.

Что такое Terraform?

 

Terraform-это инфраструктура с открытым исходным кодом, основанная на CLI, как инструмент кода, созданный компанией Hashicorp. Terraform является облачным агностиком и работает со всеми основными облачными провайдерами: AWS, GCP и Azure. Не путайте его с Terraform Cloud, который является платным хостинговым решением Hashicorp для Terraform.

Terraform использует “провайдеров” для интеграции с различными сервисами. Многие поставщики уже существуют для центральных вариантов использования Terraform (обычно облачных приложений). Terraform также имеет несколько менее известных поставщиков, которые позволяют управлять другими популярными поставщиками, такими как Stripe и Auth0.

Чем полезен Terraform?

Чтобы понять, почему Terraform полезен, нам нужно понять принципы инфраструктуры как кода. Инфраструктура как код-это слишком большая тема, чтобы охватить ее только в этой статье. Так что давайте сделаем супер быстрый вихревой тур…

Давайте начнем с антитезиса к инфраструктуре как коду: создание и обновление инфраструктуры вручную. Когда инфраструктура создается вручную, знания оказываются в ловушке в головах людей, и будущие обновления пугают, неповторимы, трудны и недокументированы.

Но именно здесь может помочь инфраструктура как код. Сохраняя конфигурации инфраструктуры в коде и не внося изменений вручную, инженеры могут применять процессы, такие как проверка кода, и к своим изменениям инфраструктуры. Код действует как документация и становится историей изменений.

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

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

Итак, мы обсудили преимущества Terraform, но как он на самом деле работает? Как выглядит работа с Terraform? Давайте посмотрим на это сейчас…

Терраформ  работает по написанной конфигурации ресурсов с помощью HCl (специально разработанный язкык). Эти блоки ресурсов определяются поставщиком, но все они соответствуют одним и тем же шаблонам и структуре.

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

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

Пример использования Terraform

Ладно, до сих пор наши описания были абстрактными. Чтобы сделать вещи более конкретными, давайте рассмотрим некоторые реальные примеры вещей, которые вы можете построить с помощью Terraform, и как это выглядит в реальности.

Развертывание веб-сайта на AWS – Terraform можно использовать для создания облачных ресурсов, таких как базовые (или сложные) веб-сайты на AWS. Вы можете сделать это, создав инстанс на S3 с Terraform, например…

resource “aws_s3_bucket” “mywebsiteResource” {
bucket = “yourlovelywebsite.com”
acl = “public-read”
policy = “${file(“policy.json”)}”

website {
index_document = “index.html”
error_document = “error.html”
}
}

Создание сетевой инфраструктуры на GCP-Terraform можно использовать для создания базовой инфраструктуры на GCP. Затем Terraform можно использовать для создания дополнительных приложений или сервисов на этой базовой платформе. Вы можете сделать это с помощью поставщика DHCP для создания необходимых сетевых компонентов, например…

resource “google_compute_network” “vpc_network” {
name = “vpc-network”
}

Создание инвиронтментс Heroku-Terraform можно использовать для создания инвиронтментс по требованию в Heroku. Вы можете сделать это через провайдера Heroku следующим образом…

resource “heroku_app” “myHerokuApp” {
name = “a-go-application”

config_vars = {
PASSWORD = “shhhh!”
}

buildpacks = [
“heroku/go”
]
}

Другие интструменты

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

Облачные интструменты

Большинство крупных облачных провайдеров имеют свою собственную инфраструктуру в качестве инструмента программирования. В AWS это CloudFormation. На первый взгляд образование облаков может показаться очень похожим на терраформирование. Так что же отличает их друг от друга?

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

Второе большое различие заключается в особенностях Terraforms (в частности, язык Terraform написан на HCL), который можно считать вполне проприетарным и поддерживаемым большим и восторженным сообществом с открытым исходным кодом.

CHEF, PUPPET, ANSIBLE, SALTSTACK

Такие инструменты, как Chef, Puppet и Ansible, используются в основном для управления конфигурациями (обычно применяются к уже существующей инфраструктуре). В то время как Terraform предназначена для создания, редактирования и уничтожения ресурсов.

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

Перейти к верхней панели