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

33 Чтобы не усложнять эти примеры, мы запускаем серверы EC2 и ALB в одной подсети. В промышленных условиях их почти наверняка следовало бы разместить в разных подсетях: серверы EC2 в закрытой (чтобы они не были доступны непосредственно из Интернета), а ALB — в открытой (чтобы пользователи могли обращаться к нему напрямую).

3. Как управлять состоянием Terraform

В главе 2, используя Terraform для создания и обновления ресурсов, вы могли заметить, что при каждом выполнении команд terraformplan и terraformapply этой системе удавалось находить созданные ранее ресурсы и обновлять их соответствующим образом. Но откуда ей было известно о том, какие из них находятся под ее управлением? В вашей учетной записи AWS может находиться любая инфраструктура, развернутая с помощью различных механизмов (отчасти вручную, отчасти через Terraform, отчасти с помощью утилиты командной строки). Так как же Terraform определяет свои ресурсы?

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

• Что собой представляет состояние Terraform.

• Общее хранилище для файлов состояния.

• Ограничения внутренних хранилищ Terraform.

• Изоляция файлов состояния.

• Изоляция с помощью рабочих областей.

• Изоляция с помощью описания структуры файлов.

• Источник данных terraform_remote_state.


Примеры кода

Напоминаю: все примеры кода для этой книги можно найти по адресу github.com/brikis98/terraform-up-and-running-code.


Что собой представляет состояние Terraform

При каждом своем запуске система Terraform записывает информацию о созданной ею инфраструктуре в свой файл состояния. По умолчанию, если запуск происходит в /foo/bar, Terraform создает файл /foo/bar/terraform.tfstate. Этот файл имеет нестандартный формат JSON и связывает ресурсы Terraform в ваших конфигурационных файлах с их представлением в реальном мире. Представьте, к примеру, что у Terraform следующая конфигурация:

resource "aws_instance" "example" {

  ami           = "ami-0c55b159cbfafe1f0"

  instance_type = "t2.micro"

}

Ниже показан небольшой фрагмент файла terraform.tfstate (урезанный, чтобы его было легче читать), который будет создан после выполнения terraformapply:

{

  "version": 4,

  "terraform_version": "0.12.0",

  "serial": 1,

  "lineage": "1f2087f9-4b3c-1b66-65db-8b78faafc6fb",

  "outputs": {},

  "resources": [

    {

      "mode": "managed",

      "type": "aws_instance",

      "name": "example",

      "provider": "provider.aws",

      "instances": [

        {

          "schema_version": 1,

          "attributes": {

            "ami": "ami-0c55b159cbfafe1f0",

            "availability_zone": "us-east-2c",

            "id": "i-00d689a0acc43af0f",

            "instance_state": "running",

            "instance_type": "t2.micro",

            "(...)": "(truncated)"

          }

        }

      ]

    }

  ]

}

Благодаря формату JSON Terraform знает, что ресурс типа aws_instance с именем example соответствует серверу EC2 с идентификатором i-00d689a0acc43af0f в вашей учетной записи AWS. При каждом запуске Terraform может запросить у AWS текущее состояние этого сервера и сравнить его с вашей конфигурацией, чтобы определить, какие изменения следует внести. Иными словами, вывод команды plan — это расхождение между кодом на вашем компьютере и инфраструктурой, развернутой в реальном мире (согласно идентификаторам в файле состояния).


Файл состояния является приватным API

Файл состояния — это приватный API, который меняется с каждым новым выпуском и предназначен сугубо для внутреннего использования в Terraform. Вы никогда не должны редактировать его вручную или считывать его напрямую.

Если вам по какой-то причине нужно модифицировать файл состояния (что должно быть редкостью), используйте команды terraform import или terraform state (примеры работы с ними показаны в главе 5).

Если вы используете Terraform в личном проекте, можно спокойно хранить файл terraform.tfstate локально на своем компьютере. Но если вы ведете командную разработку реального продукта, может возникнуть несколько проблем.

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

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

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

Все книги серии Бестселлеры 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