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

Весь смысл поддержки нескольких сред состоит в том, что они изолированы друг от друга, поэтому, если вы управляете всеми ими из одного набора конфигурационных файлов Terraform, вы нарушаете эту изоляцию. По аналогии с переборками, которые не дают затопить все секции судна из-за протечки в одной из них, вы должны предусмотреть «переборки» для своей архитектуры Terraform (рис. 3.3).

Рис. 3.3. Добавление «переборок» в архитектуру Terraform

Как проиллюстрировано на рис. 3.3, мы описываем все наши среды не в одном наборе конфигурационных файлов (вверху), а в разных наборах (внизу), поэтому проблема в одной среде полностью изолирована от других. Файлы состояния можно изолировать двумя способами.

Изоляция через рабочие области. Подходит для быстрых изолированных проверок с одной и той же конфигурацией.

• Изоляция с помощью описания структуры файлов. Подходит для промышленного использования, когда требуется строгая изоляция между средами.


Изоляция через рабочие области

Вы можете хранить свое состояние Terraform в нескольких отдельных именованных рабочих областях. У Terraform изначально одна рабочая область, которая используется по умолчанию. Чтобы создать новую рабочую область или переключиться между областями, нужно выполнить команду terraformworkspace. Поэкспериментируем с неким кодом Terraform, который развертывает сервер EC2:

resource "aws_instance" "example" {

  ami           = "ami-0c55b159cbfafe1f0"

  instance_type = "t2.micro"

}

Сконфигурируйте для этого сервера хранилище на основе бакета S3 и таблицы DynamoDB, которые вы создали ранее в этой главе, но в качестве значения для key укажите workspaces-example/terraform.tfstate:

terraform {

  backend "s3" {

    # Поменяйте это на имя своего бакета!

    bucket = "terraform-up-and-running-state"

    key    = "workspaces-example/terraform.tfstate"

    region = "us-east-2"

    # Замените это именем своей таблицы DynamoDB!

    dynamodb_table = "terraform-up-and-running-locks"

    encrypt        = true

  }

}

Выполните команды terraforminit и terraformapply, чтобы развернуть этот код:

$ terraform init

Initializing the backend...

Successfully configured the backend "s3"! Terraform will automatically use this backend unless the backend configuration changes.

Initializing provider plugins...

(...)

Terraform has been successfully initialized!

$ terraform apply

(...)

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

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

$ terraform workspace show

default

Рабочая область по умолчанию хранит ваше состояние именно в том месте, которое вы указали в параметре key. Как видно на рис. 3.4, взглянув на свой бакет S3, вы увидите файл terraform.tfstate и папку workspaces-example.

Рис. 3.4. Бакет S3 после сохранения состояния в рабочей области по умолчанию

Создадим новую рабочую область над названием example1, используя команду terraformworkspacenew:

$ terraform workspace new example1

Created and switched to workspace "example1"!

You're now on a new, empty workspace. Workspaces isolate their state, so if you run "terraform plan" Terraform will not see any existing state for this configuration.

Теперь посмотрите, что получится, если мы попытаемся выполнить terraformplan:

$ terraform plan

Terraform will perform the following actions:

# aws_instance.example will be created

    + resource "aws_instance" "example" {

    + ami                    = "ami-0c55b159cbfafe1f0"

    + instance_type          = "t2.micro"

    (...)

  }

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

Terraform хочет создать с нуля совершенно новый сервер EC2! Дело в том, что файлы состояния в каждой рабочей области изолированы друг от друга и, поскольку вы теперь в рабочей области example1, Terraform больше не использует файл состояния из рабочей области по умолчанию. Следовательно, не видит сервер EC2, который был там создан.

Попробуйте выполнить команду terraformapply, чтобы развернуть этот второй сервер EC2 в новой рабочей области:

$ terraform apply

(...)

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

Повторим этот пример еще один раз и создадим новую рабочую область под названием example2:

$ terraform workspace new example2

Created and switched to workspace "example2"!

You're now on a new, empty workspace. Workspaces isolate their state, so if you run "terraform plan" Terraform will not see any existing state for this configuration.

Снова выполните terraformapply, чтобы развернуть третий сервер EC2:

$ terraform apply

(...)

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

Теперь у вас есть три рабочие области; в этом можно убедиться с помощью команды terraformworkspacelist:

$ terraform workspace list

  default

  example1

* example2

Вы можете переключиться между ними в любой момент, используя команду terraformworkspaceselect:

$ terraform workspace select example1

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

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

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

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

Скотт Беркун

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

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

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

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

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

Старший брат следит за тобой. Как защитить себя в цифровом мире
Старший брат следит за тобой. Как защитить себя в цифровом мире

В эпоху тотальной цифровизации сложно представить свою жизнь без интернета и умных устройств. Но даже люди, осторожно ведущие себя в реальном мире, часто недостаточно внимательно относятся к своей цифровой безопасности. Между тем с последствиями такой беспечности можно столкнуться в любой момент: злоумышленник может перехватить управление автомобилем, а телевизор – записывать разговоры зрителей, с помощью игрушек преступники могут похищать детей, а к видеокамерам можно подключиться и шпионить за владельцами. Существуют и государственные проекты наподобие «Умного города», подразумевающие повсеместное внедрение видеокамер и технологий распознавания лиц.Все это не значит, что нужно стремиться к цифровому затворничеству и панически избегать гаджетов, но необходимо изучить и соблюдать элементарные правила безопасности. Михаил Райтман в своей книге рассказывает, как максимально снизить вероятность утечки персональных данных, осложнив задачу потенциальным злоумышленникам.

Михаил Анатольевич Райтман

Зарубежная компьютерная, околокомпьютерная литература
Восстановление данных на 100%
Восстановление данных на 100%

В книге изложены методы восстановления данных с различных носителей информации – жестких дисков, массивов RAID, CD, DVD, карт флэш-памяти, карт фотоаппаратов и мобильных телефонов. Ремонт поврежденного оборудования рассматривается в издании только как один из аспектов всего процесса извлечения данных. Основная тема – извлечение данных, поврежденных из-за физических или логических нарушений в работе компьютерной системы либо неверных действий пользователя. В книге рассматривается восстановление случайно удаленных файлов, извлечение ценной информации с поломанных жестких дисков; описываются программы и методика восстановления данных с поврежденных массивов RAID, что критически важно для работы корпоративных компьютерных систем.Книга не требует специальной подготовки читателя: простые пошаговые процедуры восстановления данных предваряются описанием принципов их хранения на различных носителях.

Петр Андреевич Ташков

Зарубежная компьютерная, околокомпьютерная литература / Прочая компьютерная литература / Книги по IT