Поставщик Terraform Azure — как мне добавить через terraform более одного ключа и / или секрета для моего хранилища ключей?

#azure-keyvault #terraform-provider-azure #secret-key

#azure-keyvault #terraform-provider-azure #секретный ключ

Вопрос:

Все примеры, которые я видел, содержат 1 ключ и / или q секретов. Есть ли способ добавить еще один (или более)?

Ответ №1:

Чтобы добавить несколько ключей или секретов для вашего хранилища ключей, вам просто нужно добавить ресурсы azurerm_key_vault_key и azurerm_key_vault_secret несколько раз.

Рекомендуется создавать такие ресурсы в цикле. Terraform предлагает несколько различных конструкций цикла, каждая из которых предназначена для использования в несколько разных сценариях:

  • count параметр: цикл по ресурсам.
  • for_each выражения: цикл по ресурсам и встроенным блокам внутри ресурса.
  • for выражения: цикл по спискам и картам.

Например, создайте один или несколько ключей и секретов с count параметрами.

 variable "key_lists" {
    type = list(string)
    default = ["key1","key2","key3"]
    
}

variable "secret_maps" {
    type = map(string)
    default = {
        "name1"= "value1"
        "aaa" = "111"
        "bbb" = "222"
    }
}

resource "azurerm_key_vault_key" "generated" {
  count        = length(var.key_lists)
  name         = var.key_lists[count.index]
  key_vault_id = azurerm_key_vault.example.id
  key_type     = "RSA"
  key_size     = 2048

  key_opts = [
    "decrypt",
    "encrypt",
    "sign",
    "unwrapKey",
    "verify",
    "wrapKey",
  ]
}

resource "azurerm_key_vault_secret" "example" {
  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.example.id

}
  

Вы можете прочитать этот блог для получения дополнительных советов по циклу Terraform.

Комментарии:

1. Теперь я получаю следующую ошибку, касающуюся ресурса «azurerm_disk_encryption_set» «example» { name = «example-set» resource_group_name = «${azurerm_resource_group.example.name }» location = «${azurerm_resource_group.example.location}» key_vault_key_id = «${azurerm_key_vault_key.example.id }» Неправильный тип значения атрибута в main.tf строка 116 в ресурсе «azurerm_disk_encryption_set» «example»: 116: key_vault_key_id = «${azurerm_key_vault_key.example[count.index]}» Неподходящее значение для атрибута «key_vault_key_id»: требуется строка.

2. Вы хотите, чтобы один из ключей зашифровал диск? Попробуйте использовать key_vault_key_id = azurerm_key_vault_key.example[count.index].id или key_vault_key_id = azurerm_key_vault_key.example[0].id ?

3. key_vault_key_id = «${azurerm_key_vault_key.example[0].id}» выглядит хорошо. Спасибо.