Terraform Remote State - расположение файла состояния

Я использую Terraform с AWS и S3 / Dynamo для удаленного состояния всех наших модулей. Это отлично работает и отлично.

Но где вы собираетесь сохранить файл состояния для модуля, где вы создаете корзину S3 и DynamoDB (для удаленного состояния)?

Похоже на проблему «Курица или яйцо». Должен ли я загружать файл состояния в репозиторий GIT, даже если мне не следует хранить его там?

Обычно это состояние больше не затрагивается, но было бы чище, если бы все разработчики могли получить доступ к этому состоянию, не так ли? Каковы ваши лучшие практики?

2 ответа

Решение

Вы никогда не должны загружать файл состояния в какое-либо хранилище. Это проблема курицы и яйца. Сначала вам нужно будет развернуть S3 и DynamoDB, которые создадут файл локального состояния. Затем, поскольку у вас есть корзина S3, вы можете добавить блок конфигурации серверной части [1]. После этого следует terraform initкоторый спросит вас, хотите ли вы перенести состояние на удаленный сервер [2], и все. После этого файл состояния будет сохранен в корзине S3.

Больше информации здесь:

[1] https://www.terraform.io/docs/language/settings/backends/s3.html#example-configuration

[2] https://www.terraform.io/docs/language/settings/backends/configuration.html#initialization .

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

Более разумный подход - иметь жестко контролируемую главную учетную запись, вручную настроенную с помощью корзины и DDB. Оттуда у вас есть база для создания торгового автомата для создания новых учетных записей с ведром состояний, DDB, базовой конфигурацией, IAM и т. Д.

Другие вопросы по тегам