Terraform:检查azure vault中是否存在机密

Terraform:检查azure vault中是否存在机密,terraform,Terraform,我正在使用terraform进行Azure部署,并尝试将ssh密钥存储在Azure vault中。如果该密钥在vault中不存在,我希望创建并存储ssh密钥,否则我希望重用该密钥(如果存在) 这是我试过的 首先独立创建vault,因为它包含所有我的关键点 使用数据测试密钥是否存在,但当密钥不存在时,我总是得到错误行11。我想不出怎么做 注意:不能重新运行tls_私钥,因为ssh密钥将更改 有什么想法吗? 感谢实际的密钥库API没有提供“密钥存在”测试功能(除了其他答案中提到的在C#代码/API中

我正在使用terraform进行Azure部署,并尝试将ssh密钥存储在Azure vault中。如果该密钥在vault中不存在,我希望创建并存储ssh密钥,否则我希望重用该密钥(如果存在)

这是我试过的

  • 首先独立创建vault,因为它包含所有我的关键点
  • 使用数据测试密钥是否存在,但当密钥不存在时,我总是得到错误行11。我想不出怎么做
  • 注意:不能重新运行tls_私钥,因为ssh密钥将更改
  • 有什么想法吗?
    感谢

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

    我认为你可以通过阅读钥匙和捕捉错误来逃脱惩罚,看看Terraform的“尝试并继续”方法:

    因此,您可以创建vault(步骤1),然后使用try功能读取步骤2中的密钥。
    注意:try(..)的工作原理是接受错误并继续使用其第二个参数。因此,您首先在第一个参数中读取密钥,然后在第二个参数中创建密钥。

    实际密钥库API没有提供“密钥存在”测试功能(除了其他答案中提到的在C代码/API中实现此功能的一些方法之外)

    我认为你可以通过阅读钥匙和捕捉错误来逃脱惩罚,看看Terraform的“尝试并继续”方法:

    因此,您可以创建vault(步骤1),然后使用try功能读取步骤2中的密钥。
    注意:try(..)的工作原理是接受错误并继续使用其第二个参数。因此,您首先在第一个参数中读取键,然后在第二个参数中创建键。

    Hi,我不知道如何为try命令编写正确的语句。在第一个try参数中如何访问资源,因为我无法声明资源而不出错?您好,我不知道如何为try命令编写正确的语句。由于我不能在没有错误的情况下声明资源,因此如何在first try参数中访问该资源?
    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
    }