Читаем Terraform: инфраструктура на уровне кода полностью

Terraform поддерживает десятки провайдеров, у каждого из которых есть десятки ресурсов, и для каждого ресурса предусмотрены десятки аргументов. Запомнить все это невозможно. При написании кода Terraform следует регулярно сверяться с документацией, чтобы посмотреть, какие ресурсы вам доступны и как их использовать. Например, вот документация для ресурса aws_instance по адресу http://bit.ly/33dmi7g. Несмотря на свой многолетний опыт использования Terraform, я все еще обращаюсь к этой документации по нескольку раз в день!

Откройте терминал, перейдите в папку, в которой вы создали файл main.tf, и выполните команду terraforminit:

$ terraform init

Initializing the backend...

Initializing provider plugins...

- Checking for available provider plugins...

- Downloading plugin for provider "aws" (terraform-providers/aws) 2.10.0...

The following providers do not have any version constraints in configuration, so the latest version was installed.

To prevent automatic upgrades to new major versions that may contain breaking changes, it is recommended to add version = "..." constraints to the corresponding provider blocks in configuration, with the constraint strings suggested below.

* provider.aws: version = "~> 2.10"

Terraform has been successfully initialized!

Исполняемый файл terraform поддерживает основные команды Terraform, но он не содержит никакого кода для провайдеров (вроде AWS, Azure или GCP). Поэтому, начиная работу с этим инструментом, вы должны выполнить terraforminit, чтобы он мог просканировать ваш код, определить, с какими провайдерами вы работаете, и загрузить для них подходящие модули. По умолчанию код провайдеров загружается в папку .terraform, которая является рабочей папкой Terraform (стоит добавить ее в .gitignore). В последующих главах вы познакомитесь с другими сценариями использования команды init и папки .terraform. А пока что просто знайте, что init необходимо выполнять каждый раз, когда вы начинаете писать новый код Terraform, и это можно делать многократно (это идемпотентная команда).

Теперь, загрузив код провайдера, выполните команду terraformplan:

$ terraform plan

(...)

Terraform will perform the following actions:

  # aws_instance.example will be created

  + resource "aws_instance" "example" {

      + ami                          = "ami-0c55b159cbfafe1f0"

      + arn                          = (known after apply)

      + associate_public_ip_address  = (known after apply)

      + availability_zone            = (known after apply)

      + cpu_core_count               = (known after apply)

      + cpu_threads_per_core         = (known after apply)

      + get_password_data            = false

      + host_id                      = (known after apply)

      + id                           = (known after apply)

      + instance_state               = (known after apply)

      + instance_type                = "t2.micro"

      + ipv6_address_count           = (known after apply)

      + ipv6_addresses               = (known after apply)

      + key_name                     = (known after apply)

      (...)

  }

Plan: 1 to add, 0 to change, 0 to destroy.

Команда plan позволяет увидеть, что сделает Terraform, без внесения каких-либо изменений. Это хорошая возможность еще раз проверить свой код перед выпуском его во внешний мир. По своему выводу команда plan похожа на утилиту diff, которая является частью Unix, Linux и git: знак плюс (+) помечает все, что будет создано; знак минус (-) — что будет удалено, а то, что помечено тильдой (~), будет изменено. В предыдущем выводе вы можете видеть, что Terraform планирует создать лишь один сервер EC2 и ничего другого — именно то, что нам нужно.

Чтобы инициировать создание сервера, нужно выполнить команду terraformapply:

$ terraform apply

(...)

Terraform will perform the following actions:

  # aws_instance.example will be created

  + resource "aws_instance" "example" {

      + ami                          = "ami-0c55b159cbfafe1f0"

      + arn                          = (known after apply)

      + associate_public_ip_address  = (known after apply)

      + availability_zone            = (known after apply)

      + cpu_core_count               = (known after apply)

      + cpu_threads_per_core         = (known after apply)

      + get_password_data            = false

      + host_id                      = (known after apply)

      + id                           = (known after apply)

      + instance_state               = (known after apply)

      + instance_type                = "t2.micro"

      + ipv6_address_count           = (known after apply)

      + ipv6_addresses               = (known after apply)

      + key_name                     = (known after apply)

       (...)

  }

Plan: 1 to add, 0 to change, 0 to destroy.

Do you want to perform these actions?

  Terraform will perform the actions described above.

  Only 'yes' will be accepted to approve.

  Enter a value:

Перейти на страницу:

Все книги серии Бестселлеры O'Reilly

Искусство управления IT-проектами
Искусство управления IT-проектами

В отличие от множества трудов, посвященных руководству проектами и командами, в этой книге не проповедуются никакие новые учения и не превозносятся великие теории. Скотт Беркун считает залогом успеха практику и разнообразие подходов. В книге описываются основные сложности и проблемные ситуации, возникающие в работе менеджера проекта, даны рекомендации по выходу из них.Издание предназначено не только для лидеров команд и менеджеров высшего звена, но и для программистов, тестеров и других исполнителей конкретных проектных заданий. Также оно будет полезно студентам, изучающим бизнес-менеджмент, проектирование изделий или программную инженерию.Текст нового издания значительно переработан автором с целью добиться большей ясности, кроме того, книга дополнена новым приложением и более чем 120 практическими упражнениями.

Скотт Беркун

Деловая литература
iOS. Приемы программирования
iOS. Приемы программирования

Книга, которую вы держите в руках, представляет собой новый, полностью переписанный сборник приемов программирования по работе с iOS. Он поможет вам справиться с наболевшими проблемами, с которыми приходится сталкиваться при разработке приложений для iPhone, iPad и iPod Touch. Вы быстро освоите всю информацию, необходимую для начала работы с iOS 7 SDK, в частности познакомитесь с решениями для добавления в ваши приложения реалистичной физики или движений — в этом вам помогут API UIKit Dynamics.Вы изучите новые многочисленные способы хранения и защиты данных, отправки и получения уведомлений, улучшения и анимации графики, управления файлами и каталогами, а также рассмотрите многие другие темы. При описании каждого приема программирования приводятся образцы кода, которые вы можете смело использовать.

Вандад Нахавандипур

Программирование, программы, базы данных / Программирование / Книги по IT

Похожие книги