#azure #loops #terraform
#лазурь #петли #терраформирование
Вопрос:
С помощью terraform (1.0.11) я хочу создать несколько групп ресурсов в своей подписке azure.
resource "azurerm_resource_group" "resourcegroup" { name = "rg-${var.client}-${var.env}" location = var.location }
Но я хочу, чтобы значения были взяты из файлов в каталоге.
cat clients/client1.tfvars client = "client1" env = "testing" cat clients/client2.tfvars client = "client2" env = "prod"
Я хочу, чтобы terraform прошелся по этим файлам и создал одну группу ресурсов для каждого файла, используя значения внутри него.
Возможно ли это вообще ? Я попытался поиграть с набором файлов, файлами и местными жителями, но на самом деле не смог добиться результата, так как я новичок в языке терраформирования.
resource "azurerm_resource_group" "resourcegroup" { for_each = fileset("${path.module}/resources", "*") name = "rg-test-${each.value.client}-${each.value.env}" location = var.location }
Очевидно, не работает, потому что я просто просматриваю имена файлов, а не содержимое.
Попытался создать локальный файл с шаблоном
locals { allclients = templatefile("${path.module}/templates/env.tpl", { clients = fileset("${path.module}/resources", "*")}) }
cat templates/env.tpl %{ for client in clients ~} ${client}= file("./resources/${client}") %{ endfor ~}
В этом случае файл функции игнорируется и рассматривается как простая строка, предсказуемая, я думаю, так как это не файл .tf.
Почему я не создаю переменную со списком объектов со всеми клиентами ? Потому что в конечном итоге появятся десятки и десятки клиентов, и я думаю, что управление файлами будет намного проще и удобочитаемо для человека.
Заранее спасибо за вашу помощь.
Комментарии:
1. «Я пытался поиграть с набором файлов, файлами и локальными» — можете ли вы показать, что вы на самом деле пытались, и объяснить, почему это не работает?
2. @Marcin отредактировал мой пост, чтобы добавить то, что я пытался