Создайте корзину google cloud и сохраните в ней состояние terraform с помощью того же сценария terraform?

#terraform #terraform-provider-gcp

Вопрос:

Я новичок в терраформировании и пытаюсь использовать его для создания и настройки всего проекта с нуля. В настоящее время мы думаем об этом, поскольку 1 проект Google-это одна среда.

Представляется разумным сохранить удаленное состояние terraform внутри корзины в проекте, который он настраивает. т. Е. пусть terraform создаст облачный проект google, создаст корзину, а затем сохранит свое собственное удаленное состояние в этой корзине, которую он только что создал. Это также кажется очень продвинутым и потенциально куриным / яйцом.

Возможно ли сохранить удаленное состояние сценариев terraform в проекте, который создает сам сценарий terraform?

Комментарии:

1. Сначала вам нужно будет создать корзину и сохранить состояние локально, а затем добавить конфигурацию удаленного сервера. Первым шагом после добавления удаленного бэкэнда является повторный terraform init запуск, который перенесет состояние на удаленный бэкэнд.

2. @MarkoE Так как бы это выглядело тогда? Я бы изолировал создание проекта и создание корзины в один файл, запустил его, а затем снова запустил инициализацию terraform? 1. Как бы я заставил terraform игнорировать все мои другие файлы при первом запуске? 2. Если бы я запустил тот же процесс против существующего проекта, это могло бы все испортить, верно? Выполнение всего этого также кажется не атомарным и не было бы закрыто под замком. 3. Похоже, что это лучше всего сделать с помощью 2 отдельных сценариев терраформирования. Сценарий создания среды, а затем сценарий развертывания / выпуска. То, что я пытаюсь сделать, невозможно. Верно?

3. Как сказал Марко, вам в основном просто нужно сначала создать корзину (используя интерфейс командной строки, консоль, скрипт.. неважно). Я не уверен, но после этого вы могли бы импортировать корзину в состояние terraform, но я не думаю, что это хорошо, так как у вас может возникнуть проблема с terraform, и она может удалить всю корзину, так что вы потеряете все состояния. Если вы запустите terraform против корзины, в которой уже есть объекты, terraform не удалит их, terraform будет управлять корзиной (разрешениями и т. Д.), А не объектами.

4. Если вы хотите «автоматизировать» его, у вас может быть setup.sh , например, экземпляр, который создает это ведро, и вам просто нужно запустить его в первый раз, или, если вы улучшите логику, вы можете проверить, существует ли ведро, и решить, создавать его или нет.

5. @JuanFontes Что делает setup.sh чтобы создать начальное ведро и т. Д.?

Ответ №1:

Вы можете использовать terraform для создания проекта и корзины, а затем перенести состояние в эту корзину. Но это сценарий с курицей/яйцом, который задает вопрос: что произойдет, если вам нужно удалить/перестроить корзину, содержащую состояние?

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

Ответ №2:

Нет, ты не можешь этого сделать. После нескольких дней исследований это невозможно.