Как добавить несколько секретов в хранилище ключей Azure с помощью terraform

Я видел примеры добавления одного секретного (или) ключа в хранилище ключей Azure. но теперь у меня есть требование добавить несколько секретов в хранилище лазурных ключей с помощью terraform.

Как я могу этого добиться? Кто-нибудь может предложить?

Спасибо.

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

module "keyvault_secret" {

  source = "../../modules/keyvault_secret"

  count               = length(var.secrets)
  keyVaultSecretName  = keys(var.secrets)[count.index]
  keyVaultSecretValue = values(var.secrets)[count.index]
  keyVaultId          = data.azurerm_key_vault.key_vault.id
}

variables: 
variable "secrets" {
  type = map(string)
}
 
variables.tfvars:

secrets  = $(secrets)

in YAML pipeline:

displayName: DEV
    variables: 
      - group: 'Environment - Dev' 
      - name: secrets
        value:  '{"testAPIKey1" = $(testAPIKey1) , "testAPIKey2" = $(testAPIKey2) }' 

я определил эти ключевые значения в вышеуказанной группе переменных - Environment - Dev

Вот что выдает ошибка

Ожидается, что закрывающая скобка завершит выражение. ##[ошибка]Команда Terraform 'plan' не удалась с кодом выхода '1'.: Несбалансированные круглые скобки ##[ошибка] Ошибка: несбалансированные скобки

Есть ли вообще сообщение об ошибке? технически он должен работать с несколькими блоками ресурсов. К вашему сведению, есть и другие способы создания нескольких секретов или любого ресурса, в общем, с использованием метааргументов terraform for_each и count.

ishuar 01.02.2023 00:56
Как установить 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...
0
1
75
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

Вам нужно запустить его в цикле. См. эту ссылку для получения дополнительной информации о циклах Terraform (для каждого или количества):
https://www.cloudbolt.io/terraform-best-practices/terraform-for-loops/

Не проверено, но что-то вроде этого:

#Reference AKV in data block
data "azurerm_key_vault" "kvexample" {
  name = "mykeyvault"
  resource_group_name = "some-resource-group"
}

variable "secret_maps" {
    type = map(string)
    default = {
        "name1"= "value1"
        "name2" = "value2"
        "name3" = "value3"
    }
}

# Count loop
resource "azurerm_key_vault_secret" "kvsecrettest" {
  count = length(var.secret_maps)
  name         = keys(var.secret_maps)[count.index]
  value        = values(var.secret_maps)[count.index]
  key_vault_id = azurerm_key_vault.kvexample.id
}

#----------------- Or use For Each instead of Count
# For Each loop
resource "azurerm_key_vault_secret" "kvsecrettest" {
  for_each = var.secret_maps
  name          = each.key
  value         = each.value
  key_vault_id  = azurerm_key_vault.kvexample.id
}

Привет, @niclas, спасибо, что уделили мне время и ответили на мой вопрос. у нас есть модуль, определенный, как показано ниже: resource "azurerm_key_vault_secret" "secret" { name = var.keyVaultSecretName value = var.keyVaultSecretValue key_vault_id = var.keyVaultId } и вызов модуля, как показано ниже, module "keyvault_secret" { source = "../.. /modules/keyvault_secret" keyVaultSecretName = var.keyVaultSecretName1 keyVaultSecretValue = var.keyVaultSecretValue1 } Как я могу использовать здесь цикл for_each. если я попытаюсь вызвать модуль несколько раз, чтобы добавить больше секретов, он выдает ошибку.

Radhika 01.02.2023 10:19

Вы не можете вызывать его несколько раз, поэтому вам нужно заглянуть в циклы Terraform — либо для цикла, либо для подсчета. blog.gruntwork.io/…

Niclas 01.02.2023 13:04

Большое спасибо @Niclas. он работал с циклом подсчета первого решения. если вы все еще можете помочь мне в моем следующем шаге, я пытаюсь передать переменные в конвейер yaml, где я хочу ссылаться на них из групп переменных в azure devops. если я даю значения напрямую, я смог добиться успеха. но если я попытаюсь изменить их, он выдает ошибки. обновил мой вопрос. пожалуйста, посмотрите и помогите, если это возможно. Спасибо.

Radhika 01.02.2023 17:04

Вам придется сделать новый пост / вопрос для другого вопроса.

Niclas 01.02.2023 17:10

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

Чтение секрета Azure Key Vault в шаблон ARM через файл параметров
Управляемое удостоверение Azure: строка подключения без пароля к ошибке подключения к базе данных SQL Azure
Получение секретов из Azure (C#)
Интеграция Azure Key Vault в приложение веб-API .NET с использованием секретного URL-адреса
Bicep roleAssignments/ошибка разрешения на запись при назначении роли Keyvault
Приложение Azure AKS/Container не может получить доступ к хранилищу ключей с помощью управляемого удостоверения
DefaultAzureCredetials не может пройти аутентификацию через Visual Studio — не удается найти AzureServiceAuth\tokenProvider.json
Как аутентифицировать хранилище ключей Azure, используя идентификатор клиента и секрет?
Шифрование диска виртуальной машины Azure: не удалось настроить блокировку битов должным образом. Исключение: неверный URI
Как обнаружить хранилища ключей Azure и добавить IP-адреса в его брандмауэр при создании?