#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:
Нет, ты не можешь этого сделать. После нескольких дней исследований это невозможно.