Terraform azurerm просматривает файлы и содержимое

#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 отредактировал мой пост, чтобы добавить то, что я пытался