【问题标题】:Terraform: check if secret exists into azure vaultTerraform:检查机密是否存在于 azure Vault 中
【发布时间】:2020-10-27 21:37:17
【问题描述】:

我正在使用 terraform 进行 Azure 部署,并尝试将 ssh 密钥存储在 Azure 保管库中。如果密钥不存在于保险库中,我想创建并存储 ssh 密钥,否则我想重用密钥(如果存在)。

这是我尝试过的

  1. 首先独立创建保管库,因为它包含我的所有密钥
  2. 使用数据来测试密钥是否存在,但当密钥不存在时,我总是收到第 11 行错误。我不知道该怎么做。
  3. 注意:tls_private_key 不得重新运行,因为 ssh 密钥会更改。
data "azurerm_resource_group" "rg_transverse" {
  name = "k8s-transversal-rg"
}


# Retrieving vault
data "azurerm_key_vault" "data-cluster-vault" {
  name                  = "k8s-transverse-vault"
  resource_group_name   = data.azurerm_resource_group.rg_transverse.name
}
data "azurerm_key_vault_secret" "data-cluster-key-public-openssh" {
  name = "cluster-key-public-openssh" 
  key_vault_id = "${data.azurerm_key_vault.data-cluster-vault.id}" 
}
output "secret_value2" {
  value = "${data.azurerm_key_vault_secret.data-cluster-key-public-openssh.value}"
}

# Creating ssh key only if doesn't exist
 resource "tls_private_key" "cluster-key" {
   count = (data.azurerm_key_vault_secret.data-cluster-key-public-openssh.value == "" ) ? 1 : 0
   algorithm   = "RSA"
   rsa_bits    = "4096"
 }

# store ssh key into vault if created
resource "azurerm_key_vault_secret" "cluster-key-public-openssh" {
  depends_on = [tls_private_key.cluster-key]
  count = (data.azurerm_key_vault_secret.data-cluster-key-public-openssh.value == "" ) ? 1 : 0
  name         = "cluster-key-public-openssh"
  value        = tls_private_key.cluster-key[count.index].public_key_openssh
  key_vault_id = data.azurerm_key_vault.data-cluster-vault.id
}

有什么想法吗? 谢谢

【问题讨论】:

    标签: terraform


    【解决方案1】:

    实际的 key-vault API 没有提供“key-exists”测试功能(除了在其他答案中提到的在 C# 代码/API 中实现此功能的一些方法之外)。

    恕我直言,我认为您可以通过阅读密钥并发现错误而侥幸,请参阅 Terraform 的这种尝试并继续的方法:

    https://www.terraform.io/docs/configuration/functions/try.html

    因此,您将创建您的保管库(第 1 步),然后使用 try 函数读取第 2 步中的密钥。 注意:try(..) 通过吃错误并继续其第二个参数来工作。因此,您首先在第一个参数中读取密钥,然后在第二个参数中创建密钥。

    【讨论】:

    • 嗨,我不知道如何为 try 命令编写正确的语句。由于无法在没有错误的情况下声明资源,如何在第一个 try 参数中访问资源?
    猜你喜欢
    • 2018-05-20
    • 2020-12-19
    • 1970-01-01
    • 2019-07-28
    • 2011-06-05
    • 2018-03-26
    • 2020-02-11
    • 1970-01-01
    • 2020-03-30
    相关资源
    最近更新 更多