terraform-provider-azurerm: azurerm_key_vault_certificate timeout / retry configuration on creation is too short

Community Note

  • Please vote on this issue by adding a 👍 reaction to the original issue to help the community and maintainers prioritize this request
  • Please do not leave “+1” or “me too” comments, they generate extra noise for issue followers and do not help prioritize the request
  • If you are interested in working on this issue or have submitted a pull request, please leave a comment

Terraform (and AzureRM Provider) Version

Terraform v1.0.0 on linux_amd64

  • provider registry.terraform.io/hashicorp/azurerm v2.56.0
  • provider registry.terraform.io/hashicorp/external v2.1.0
  • provider registry.terraform.io/hashicorp/http v2.1.0
  • provider registry.terraform.io/hashicorp/kubernetes v2.3.2
  • provider registry.terraform.io/hashicorp/null v3.1.0
  • provider registry.terraform.io/hashicorp/restapi v1.16.0

Affected Resource(s)

  • azurerm_key_vault_certificate

Terraform Configuration Files

# Copy-paste your Terraform configurations here - for large Terraform configs,
# please use a service like Dropbox and share a link to the ZIP file. For
# security, you can also encrypt the files using our GPG public key: https://keybase.io/hashicorp
resource "azurerm_key_vault_certificate" "le-cert" {
  for_each = { for le in local.les : le.id => le }
  lifecycle {
    ignore_changes = [
      certificate_policy,
      name,
    ]
  }
  name         = "legal-entity-${each.value.id}"
  key_vault_id = "/subscriptions/${var.azure_sub}/resourceGroups/${var.azure_rg}/providers/Microsoft.KeyVault/vaults/${var.azure_kv}"
  certificate_policy {
    issuer_parameters {
      name = "Self"
    }
    key_properties {
      exportable = true
      key_size   = 2048
      key_type   = "RSA"
      reuse_key  = true
    }
    lifetime_action {
      action {
        action_type = "AutoRenew"
      }
      trigger {
        days_before_expiry = 30
      }
    }
    secret_properties {
      content_type = "application/x-pem-file"
    }
    x509_certificate_properties {
      extended_key_usage = ["1.3.6.1.5.5.7.3.1"]
      key_usage = [
        "cRLSign",
        "dataEncipherment",
        "digitalSignature",
        "keyAgreement",
        "keyCertSign",
        "keyEncipherment",
      ]
      subject            = "CN=${each.value.subdomain}"
      validity_in_months = 12
    }
  }
}

Debug Output

│ Error: Error waiting for Certificate “legal-entity-214” in Vault “https://mykv.vault.azure.net/” to become available: couldn’t find resource (21 retries) │ │ with azurerm_key_vault_certificate.le-cert[“214”], │ on main.tf line 33, in resource “azurerm_key_vault_certificate” “le-cert”: │ 33: resource “azurerm_key_vault_certificate” “le-cert” { │ ╵

Panic Output

Expected Behaviour

Actual Behaviour

Steps to Reproduce

  1. terraform apply

Important Factoids

here is an extract of the diagnostic logs for one cert creation:

we can see that the CertificateEnroll arrives AFTER all the GET retries done by terraform

OperationName,“id_s”,“TimeGenerated [UTC]”,ResultSignature CertificateEnroll,“https://mykv.vault.azure.net/certificates/legal-entity-214/9667ff50c261492382bf157d7397c934","6/18/2021, 9:26:54.240 AM”, CertificateGet,“https://mykv.vault.azure.net/certificates/legal-entity-214","6/18/2021, 9:26:04.056 AM”,OK CertificateGet,“https://mykv.vault.azure.net/certificates/legal-entity-214","6/18/2021, 9:25:54.004 AM”,OK CertificateGet,“https://mykv.vault.azure.net/certificates/legal-entity-214","6/18/2021, 9:25:43.945 AM”,OK CertificateGet,“https://mykv.vault.azure.net/certificates/legal-entity-214","6/18/2021, 9:25:33.834 AM”,OK CertificateGet,“https://mykv.vault.azure.net/certificates/legal-entity-214","6/18/2021, 9:25:23.742 AM”,OK CertificateGet,“https://mykv.vault.azure.net/certificates/legal-entity-214","6/18/2021, 9:25:13.675 AM”,OK CertificateGet,“https://mykv.vault.azure.net/certificates/legal-entity-214","6/18/2021, 9:25:03.577 AM”,OK CertificateGet,“https://mykv.vault.azure.net/certificates/legal-entity-214","6/18/2021, 9:24:53.468 AM”,OK CertificateGet,“https://mykv.vault.azure.net/certificates/legal-entity-214","6/18/2021, 9:24:43.325 AM”,OK CertificateGet,“https://mykv.vault.azure.net/certificates/legal-entity-214","6/18/2021, 9:24:33.179 AM”,OK CertificateGet,“https://mykv.vault.azure.net/certificates/legal-entity-214","6/18/2021, 9:24:23.019 AM”,OK CertificateGet,“https://mykv.vault.azure.net/certificates/legal-entity-214","6/18/2021, 9:24:12.856 AM”,OK CertificateGet,“https://mykv.vault.azure.net/certificates/legal-entity-214","6/18/2021, 9:24:02.760 AM”,OK CertificateGet,“https://mykv.vault.azure.net/certificates/legal-entity-214","6/18/2021, 9:23:52.632 AM”,OK CertificateGet,“https://mykv.vault.azure.net/certificates/legal-entity-214","6/18/2021, 9:23:42.537 AM”,OK CertificateGet,“https://mykv.vault.azure.net/certificates/legal-entity-214","6/18/2021, 9:23:32.437 AM”,OK CertificateGet,“https://mykv.vault.azure.net/certificates/legal-entity-214","6/18/2021, 9:23:22.358 AM”,OK CertificateGet,“https://mykv.vault.azure.net/certificates/legal-entity-214","6/18/2021, 9:23:12.247 AM”,OK CertificateGet,“https://mykv.vault.azure.net/certificates/legal-entity-214","6/18/2021, 9:23:02.151 AM”,OK CertificateGet,“https://mykv.vault.azure.net/certificates/legal-entity-214","6/18/2021, 9:22:52.054 AM”,OK CertificateGet,“https://mykv.vault.azure.net/certificates/legal-entity-214","6/18/2021, 9:22:37.020 AM”,OK CertificateCreate,“https://mykv.vault.azure.net/certificates/legal-entity-214","6/18/2021, 9:22:36.958 AM”,Accepted CertificateGet,“https://mykv.vault.azure.net/certificates/legal-entity-214","6/18/2021, 9:22:36.161 AM”,“Not Found”

References

About this issue

  • Original URL
  • State: closed
  • Created 3 years ago
  • Reactions: 9
  • Comments: 16 (3 by maintainers)

Most upvoted comments

@jackofallops - Support told me that they had a hotfix rolling out that was expected to be done by 7/15. Things have been working better for me. That said, if the resource wasn’t correctly honoring timeout values and this fixes it, why not merge it regardless?