2016-07-07 2 views
0

У меня есть сервер, который я использую для самовосстановления и автоматического масштабирования кластера consul. Он делает это с помощью скриптов terraform, которые управляются часами consul и проверками здоровья.Как настроить Terraform «COMMAND: REMOTE CONFIG» с консулом

Я хочу добавить дополнительный резервный сервер terraform для перехода на другой ресурс. Для этого я должен поделиться terraform.tfstate и terraform.tfstate.backup между моими серверами, чтобы они могли запускать терраформию на тех же ресурсах. Я хотел бы поделиться этими файлами, используя Terraform "COMMAND: REMOTE CONFIG", но мне непонятно, как я начну делиться.

В основном я хочу, чтобы файлы terraform.tfstate и terraform.tfstate.backup постоянно синхронизировались на обоих серверах. Вот моя попытка настроить это. Обратите внимание, что оба терраформировать сервера работают клиент, подключенные к консулу остальной части моего консула кластера:

terraform remote config \ 
-backend=consul \ 
-backend-config="address=localhost:8500" \ 
-backend-config="path=/consul-scripts/terr/terraform.tfstate" \ 
-backend-config="backup=/consul-scripts/terr/terraform.tfstate.backup" \ 
-path="/consul-scripts/terr/terraform.tfstate" \ 
-backup="/consul-scripts/terr/terraform.tfstate.backup" \ 
-address="localhost:8500" 

Однако это явно неправильный синтаксис. При попытке запустить пример консула, предусмотренный на связанную документации, которую я получил следующий вывод:

[email protected]:/consul-scripts/terr$ terraform remote config \ 
>  -backend=consul \ 
>  -backend-config="address=localhost:8500" \ 
>  -backend-config="path=/consul-scripts/terr/terraform.tfstate" 
Error writing backup state file: open terraform.tfstate.backup: permission denied 

Я хотел бы, чтобы мои терраформировать сервера синхронизации вверх через терраформировать «КОМАНДУ: Удаленная настройка» вместо нормального файлового ресурса такой системы, как glusterfs или что-то в этом роде.

Как правильно синхронизировать файлы террафорт таким образом?

+0

Это сообщение об ошибке предполагает, что вы g из удаленной команды конфигурации достаточно правильно, чтобы Terraform попыталась включить удаленное состояние, но независимо от того, какой пользователь вы используете «terraform», так как не имеет права на запись для создания или обновления файла terraform.tfstate.backup в локальной файловой системе. –

ответ

0

Так что да @Martin Atkins получил это право Я просто должен был запустить пример в documentation с sudo. Использование terraform remote config будет хранить файлы .tfstate в скрытом каталоге .terraform/ в каталоге, содержащем скрипты terraform.

Как работает terraform remote config, он создает ключевое значение в консуле, которое содержит сведения о файле tfstate.

Ответ очень близок к тому, что указано в документации. На практике использование terraform remote config представляет собой трехэтапный процесс.

Перед запуском терраформировать следующее должно быть запущен, чтобы вытащить текущий файл tfstate:

#this will pull the current tfstate file 
#if none exists it will create the tfstate key value 
terraform remote config \ 
-backend=consul \ 
-backend-config="address=localhost:8500" \ 
-backend-config="path=tfstate" \ 
pull 

Затем запустите:

terraform apply 

После этого закончил бег следующее нажать обновленный файл tfstate из для консула с целью изменения значения ключа:

terraform remote config \ 
-backend=consul \ 
-backend-config="address=localhost:8500" \ 
-backend-config="path=tfstate" \ 
push