Нужна помощь в понимании государственного управления Терраформ - PullRequest
0 голосов
/ 22 октября 2018

Это скорее набор концептуальных вещей, которые я пытаюсь обернуть, когда дело касается работы Terraform.

1) Вот сценарий.Допустим, я создаю простой план, который создает пару машин в AWS.Init, apply, он создает инфраструктуру и создает локальный файл состояния.Удовлетворенный кодом, я отправляю его на github.Мой вопрос здесь должен я также поднять файл состояния?Без файла состояния у любого, кто извлекает код и пытается создать экземпляры снова, не будет состояния, поэтому я предполагаю, что terraform пытается создать новый набор машин.Но файл состояния выглядит как остаточные данные, и поэтому его следует игнорировать.

2) Тот же сценарий, но предположим, что план включает в себя установочный файл, который реализует бэкэнд S3.Существует ли та же проблема, или какой-либо запуск плана учитывает состояние бэкэнда S3?

3) Теперь предположим, что я хочу, чтобы этот план выполнялся как модуль в более крупном плане, который развертывает всю среду, исохраняет свой файл состояния в S3.Модуль уже запущен, так что уже есть машины.Будет ли работать модуль как часть более крупного модуля действовать так же, как (1), так как он использует файл состояния зонтичного плана, или он использует свой существующий файл состояния s3?

4) Должна ли внутренняя настройкабыть реализован как самостоятельный модуль?Я думаю, что если кто-то попытается запустить terraform destroy, он не разрушит серверную часть, только инфраструктуру.

В общем, я довольно смущен рабочим процессом Terraform на предприятии.

1 Ответ

0 голосов
/ 22 октября 2018

Я постараюсь ответить в соответствии с моим опытом работы с Terraform:

1) Обновленное состояние Terraform необходимо для выполнения любых операций с Terraform. Это требование технологии .Вы можете поделиться этим состоянием через общий доступ к файлам или git (не рекомендуется, у вас будут проблемы, если кто-то забудет сделать git pull, а также состояние включает конфиденциальные данные, которые должны быть защищены).Гораздо лучше использовать один, если стандартные бэкэнды .Как вы сказали, если terraform выполняется без обновленного состояния, он воссоздает всю инфраструктуру.

2) По сути, проблема решается с помощью S3 (или любого другого) бэкэнда.С бэкэндом Terraform заботится о том, чтобы вытащить удаленное состояние перед выполнением какого-либо действия.

3) Нет, если вы меняете план, состояние должно быть вручную обновлено.Вы можете использовать terraform refresh или terraform import для импорта существующей инфраструктуры в состояние.

4) Для каждого плана terraform должен быть бэкэнд, его нельзя настроить в модуле.Модули предназначены для экспорта и совместного использования, поэтому они должны быть независимы от серверной части.Серверная часть не управляется terraform (вы должны создать ее перед началом использования terraform), поэтому она не будет уничтожена в любом случае.Если вы хотите, чтобы любой другой ресурс не был уничтожен, вы можете использовать функцию protect_destroy .

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...