Рубрики
Uncategorized

Защита вашего террафора

Как хранить состояние вашей террафора в ведро S3 и заблокируйте его динамодойб. Теги с террафом, AWS, архитектурой, дежопами.

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

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

Так куда я должен хранить его?

Terraform позволяет хранить это состояние в ведре S3, используя ресурс Backend 🎉

1. Создание ведра S3

В AWS вам нужно создать ведро S3.

  • Перейдите к разделу S3 в AWS и нажмите «Создать ведро».

  • Введите имя и выберите регион, в котором вы хотите установить ведро, затем нажмите «Далее».

  • Убедитесь, что вы щелкнули флажок «Версии» (сохраните все версии объекта в одном ведре.) «Затем нажмите« Далее ».

  • Важно: .. Убедитесь, что выбран «Block Public Access», он должен быть по умолчанию, затем нажмите «Далее».

  • Просмотрите вашу конфигурацию, и если вы счастливы, нажмите «Создать ведро».

2. Интеграция с вашим ведром S3

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

  • В каталоге, где текущие файлы Terraform живут, вам нужно будет создать новый файл, который вы можете назвать все, что вам нравится, для этого учебника, мы назовем это BackeND.terrasorform.

  • Здесь вам нужно будет иметь следующую структуру:

terraform {
    backend "s3" {
        bucket = "{your-bucket-name}"
        encrypt = true
        key = "path/to/state/state.tfstate" # Where you want to store state in S3
        region = "{your-bucket-region}"
    }
}
  • После того, как у вас есть этот файл в вашем каталоге Terraform, вы теперь готовы хранить и прочитать ваше состояние из S3; Запуск команды, как Террафом применяется заставит это. Вы сможете увидеть, что файл теперь хранится в ключ каталог, указанный в ведре S3.

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

Теперь, когда ваше состояние Terraporm хранится в ведре S3, как мы мешаем нескольким людям, применяющим стек одновременно? 🤯

Мы будем держать блокировку файлов в таблице Dynamodb 😁

1. Создание таблицы dynamodb

В AWS вам нужно создать таблицу dynamodb.

  • Перейдите к разделу Dynamodb в AWS и нажмите «Создать таблицу».

  • Дайте имя на таблицу Dynamodb и установите клавишу первичной клавиши/раздела AS Лозайд Отказ

  • Остальные настройки можно оставить по умолчанию. Нажмите «Создать ведро».

2. Интеграция с вашим таблицей Dynamodb

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

  • Измените свою бэкэнд (файл, который мы создали ранее, названные Backend.terrashorform В нашем случае) и добавьте новый ключ:
terraform {
    backend "s3" {
        bucket = "{your-bucket-name}"
        dynamodb_table = "{your-dynamodb-table-name}" # This is the new key
        encrypt = true
        key = "path/to/state/state.tfstate"
        region = "{your-bucket-region}"
    }
}
  • Вот и все, состояние блокировки теперь работает в вашем стеке террафора. Вы можете проверить это, запустив План террафора И пока он работает, навигация на вашем таблице Dynamodb в AWS и в разделе «Поиск», нажмите «Поиск», и должен быть Безразличный там; Это исчезнет однажды План Процесс завершен.

Вуаля, сделано! 💥

Там есть много материалов на том, как настроить это, но это то, что мне нравилось делать, в короткие сроки, когда желая начать вести блог, поэтому вот мой первый на dev.to, хотя это не первый этого типа статьи!

Разрешения: Вам нужно будет обеспечить, чтобы профиль AWS вы используете, имеет правильные разрешения для доступа к ведрам S3 и выполняют правильные операции против таблицы DynamOdb. Они можно найти здесь: https://www.terraform.io/docs/backends/types/s3.html

Оригинал: «https://dev.to/iamstej/protecting-your-terraform-state-6gn»