@vitaly_il1
DevOps Consulting

Как сделать итерацию по серверам в Terraform?

У меня есть десяток серверов Transfer Server, и два десятка пользователей.
Мне нужно пройти по списку серверов и создать по два пользователя на сервере.
Читал несколько док-тов (https://blog.gruntwork.io/terraform-tips-tricks-lo... и т.п.) и пробовал, но не получается.
Terraform самый новый - 1.0.3.
Посоветуйте, пож-ста.
  • Вопрос задан
  • 121 просмотр
Решения вопроса 1
@yellowmew
Cloud infrastructure, monitoring engineer. SRE
Vitaly Karasik
Евгений, я хочу это сделать Terraform

Terraform - инструмент для провижининга инфраструктуры. tf управляет ресурсами инфраструктуры и хранит их состояние в стейте для того чтобы просчитывать изменения при изменении параметров или кода
Пользователи на ваших серверах - это уже не инфраструктура, они никак не фигурируют (и не могут без костылей) в стейте tf, а значит именно управлять ими tf не будет.
Вы, конечно, можете использовать костыль в виде null resource запускающего просто sh\posh\cmd скрипт, который откуда то возьмет данные для подключения к вашим серверам, данные о пользователях которых надо создать
Терраформ этим ресурсом по сути не управляет, он только выполнит\перевыполнит(по триггерам на состояние других ресурсов в tf) ваш скрипт. О небезопасности хранения учетных данных таким образом думаю не стоит напоминать.
Аналогично вместо скрипта может быть ансибл\шеф (возможно через провайдер) или что-то другое так же запускаемое терраформом (но стейт созданных "ресурсов"=пользователей хранить будет опять же не терраформ, а значит об управлении речь не идет)
Не надо плоскогубцами забивать гвозди. Да, в некоторых случаях это возможно сделать, но это создает больше проблем чем решает
Кстати, намек как плоскогубцами забить гвоздь содержится в описании null_resource - ссылка выше.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
inf
@inf
DevOps Engineer
Вообще ansible такое должен делать.
Terraform для этой задачи можно использовать только при создании новых серверов так как внутреннее состояние сервера никак не отражается в состоянии терраформа.
Классическое решение это использование user data атрибут в конфигурации ec2 инстанса.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы