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

Вы можете заметить, что команда apply отображает такой же вывод, как и plan, и спрашивает вас, действительно ли вы хотите перейти к осуществлению этого плана. plan — отдельная команда, которая в основном подходит для быстрой проверки и разбора кода (больше об этом — в главе 8), но в большинстве случаев вы будете сразу выполнять команду apply, проверяя ее вывод.

Введите yes и нажмите клавишу Enter, чтобы развернуть сервер EC2:

Do you want to perform these actions?

  Terraform will perform the actions described above.

  Only 'yes' will be accepted to approve.

  Enter a value: yes

aws_instance.example: Creating...

aws_instance.example: Still creating... [10s elapsed]

aws_instance.example: Still creating... [20s elapsed]

aws_instance.example: Still creating... [30s elapsed]

aws_instance.example: Creation complete after 38s [id=i-07e2a3e006d785906]

Apply complete! Resources: 1 added, 0 changed, 0 destroyed.

Поздравляем, вы развернули сервер EC2 в своей учетной записи AWS, используя Terraform! Чтобы в этом убедиться, перейдите в консоль EC2 (https://amzn.to/­2GOFxdI); вы должны увидеть страницу, похожую на ту, что изображена на рис. 2.4.

Рис. 2.4. Один сервер EC2

Мы действительно видим наш сервер! Однако нужно признать, что это не самый впечатляющий пример. Сделаем его немного более интересным. Для начала обратите внимание на то, что у нашего сервера EC2 нет имени. Чтобы его указать, добавьте к ресурсу aws_instance параметр tags:

resource "aws_instance" "example" {

  ami           = "ami-0c55b159cbfafe1f0"

  instance_type = "t2.micro"

  tags = {

    Name = "terraform-example"

  }

}

Чтобы увидеть последствия этих изменений, еще раз выполните команду terraformapply:

$ terraform apply

aws_instance.example: Refreshing state...

(...)

Terraform will perform the following actions:

  # aws_instance.example will be updated in-place

  ~ resource "aws_instance" "example" {

        ami                          = "ami-0c55b159cbfafe1f0"

        availability_zone            = "us-east-2b"

        instance_state               = "running"

        (...)

      + tags = {

        + "Name" = "terraform-example"

      }

      (...)

    }

Plan: 0 to add, 1 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:

Система Terraform отслеживает все ресурсы, которые были созданы для этого набора конфигурационных файлов. Поэтому ей известно, что сервер EC2 уже существует (обратите внимание на строчку Refreshingstate… при выполнении команды apply), и она может вывести разницу между тем, что развернуто на данный момент, и тем, что описано в вашем коде (это одно из преимуществ использования декларативного кода по сравнению с процедурным; см. раздел «Сравнение Terraform с другими средствами IaC» на с. 42). В предыдущем сравнении видно, что Terraform хочет создать один тег под названием Name. Это именно то, что вам нужно, поэтому введите yes и нажмите клавишу Enter.

Обновив свою консоль EC2, вы увидите примерно такое окно, как на рис. 2.5.

Рис. 2.5. У сервера EC2 теперь есть тег с именем

Итак, у вас теперь есть рабочий код Terraform, стоит сохранить его в системе управления версиями. Это позволит вам делиться им с другими членами команды, отслеживать историю всех изменений инфраструктуры и использовать журнал фиксаций для отладки. Ниже показан пример того, как создать локальный Git-репозиторий и применять его для хранения конфигурационного файла Terraform:

git init

git add main.tf

git commit -m "Initial commit"

Cледует также создать файл под названием .gitignore. Он заставляет Git игнорировать определенные типы файлов, которые вы бы не хотели сохранить по случайности:

.terraform

*.tfstate

*.tfstate.backup

Файл .gitignore, показанный выше, заставляет Git игнорировать папку .terraform, которую Terraform использует в качестве временной рабочей папки, а также файлы вида *.tfstate, в которых Terraform хранит состояние (в главе 3 вы узнаете, почему файлы состояния нельзя записывать в репозиторий). Файл .gitignore тоже нужно зафиксировать:

git add .gitignore

git commit -m "Add a .gitignore file"

Чтобы поделиться этим кодом со своими коллегами, вам необходимо создать общий Git-репозиторий, к которому вы все можете обращаться. Для этого можно использовать GitHub. Перейдите на сайт https://github.com, зарегистрируйтесь (если вы этого еще не сделали), создайте новый репозиторий и укажите его в качестве удаленной точки входа под названием origin для своего локального Git-репозитория:

git remote add origin [email protected]:/.git

Теперь, когда вы хотите поделиться своими изменениями с коллегами, можете загрузить изменения в репозиторий origin:

git push origin master

Если вы хотите посмотреть, какие изменения внесли ваши коллеги, можете загрузить изменения из репозитория origin:

git pull origin master

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

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

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

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

Скотт Беркун

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

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

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

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

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