Добавьте несколько пользователей в модуль ADD terraform/create для использования в других средах

В настоящее время я ищу помощь с AAD и terraform. Мне нужно создать несколько пользователей и сделать это модулем, чтобы я мог использовать его в нескольких средах. Кто-нибудь так делал и может помочь?

переменная.tf

variable "users" {
    type = map
    default = [
        [
        "user1",
        "user1display",
        "password119823"
        ],

        [
        "user2",
        "user2display",
        "password119823"
        ]
    ]
}

Эта переменная возвращает ошибку, что это неправильный тип. Как я должен объявить это?

main.tf

resource "azuread_user" "team_user" {
  for_each = toset(var.users)  
  user_principal_name = "${each.value[0]}@${var.domain}"
  display_name = each.value[1]
  password = each.value[2]
  }

Хорошо ли сделан этот цикл? Я вроде нуб с созданием нескольких ресурсов.

Заранее спасибо!

"Хорошо ли сделана эта петля?" - запустите его, и, пожалуйста, сообщите нам, как все прошло.

Marcin 31.03.2022 11:38

У меня есть изменения типа переменной для списка, и код теперь действителен. Цикл возвратил ошибку: Ошибка: недопустимый аргумент набора for_each │ │ в строке 5 aad.tf, в ресурсе "azuread_user" "team_user": │ 5: for_each = toset(var.users) │ ├───────── ─────── │ │ var.users — список кортежей с 2 ​​элементами │ │ Данное значение аргумента for_each не подходит: for_each поддерживает карты и наборы строк, но вы предоставили набор, содержащий кортеж типа .

SanHolo 31.03.2022 11:58
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
Как установить LAMP Stack 1/2 на Azure Linux VM
Как установить LAMP Stack 1/2 на Azure Linux VM
В дополнение к нашему предыдущему сообщению о намерении Azure прекратить поддержку Azure Database для MySQL в качестве единого сервера после 16...
1
2
44
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

for_each не может перебирать список списка. Таким образом, вы можете изменить его на карту списков следующим образом:

resource "azuread_user" "team_user" {
  for_each = {for idx, user in var.users: idx=>user}  
  user_principal_name = "${each.value[0]}@${var.domain}"
  display_name = each.value[1]
  password = each.value[2]
}

Есть еще один вопрос. Как преобразовать мою переменную в файл .tfvars? Когда я добавляю файл tfvars со следующим: users = [[ "user1", "user1display","password119823"], ["user2","user2display","password119823"] ] terraform просит меня "Ввести значение для var. пользователи"

SanHolo 31.03.2022 12:40

@SanHolo Я бы предложил создать новый вопрос для нового выпуска.

Marcin 31.03.2022 12:52
stackoverflow.com/questions/71691322/… Если бы вы могли взглянуть на Марсина, было бы здорово.
SanHolo 31.03.2022 12:59

Я думаю, что ваша структура данных, передаваемая for_each, не идеальна. Было бы намного аккуратнее, если бы вы просто выбрали что-то подобное.

---> извините за отредактированное рабочее решение :)

variable "users" {
    type = map(any)
    default =  {
  user1 = {
    display = "user1display"
    password = "password119823"
  }
  user2 = {
    display = "user2display"
    password = "password119823"
  }
}

resource "azuread_user" "team_user" {
  for_each = var.users
  
  user_principal_name = "${each.key}@${var.domain}"
  display_name = each.value.display
  password = each.value.password
}

│ Ошибка: Недопустимая спецификация типа │ │ в variable.tf, строка 20, в переменной "users": │ 20: user1 = { │ 21: display = "user1display" │ 22: password = "password119823" │ 23: } │ │ A Спецификация типа представляет собой либо ключевое слово примитивного типа (bool, число, строка), либо вызов конструктора сложного типа, например список (строка).

SanHolo 31.03.2022 12:32

извините.. отредактировал..

Andre Santana 31.03.2022 13:12

Другие вопросы по теме