Is it possible to run kubectl port-forward in Terraform null_resource block

Viewed 770

Is there any way to do port-forwarding in the middle of processing using Terraform providers without getting stuck?

Here's what I'd do in terminal for installing Bank Vaults, port forward into the Vault pod, and import data from a json file, then create a secret or config map based on the imported data.

Reference: https://banzaicloud.com/docs/bank-vaults/installing/#deploy-operator

kubectl apply -f vault-cr.yaml

kubectl port-forward vault-0 8200 &

vault kv put -format=json secret/path @/tmp/var.json

kubectl apply -f secret.yaml

This Terraform code won't work because it is getting stuck in the import_vault_data resource block.

resource "kubectl_manifest" "some_app" {
  
}

resource "kubectl_manifest" "bank_vaults" {
  yaml_body = <<YAML
# vault manifest
YAML
}

resource "null_resource" "import_vault_data" {
  depends_on = [kubectl_manifest.bank_vaults]
  provisioner "local-exec" {
    command     = "kubectl port-forward vault-0 8200 & sleep 15 && vault kv put -format=json secret/path @/tmp/var.json"
  }
}

resource "kubectl_manifest" "some_secret" {
  depends_on = [null_resource.import_vault_data]
  yaml_body = <<YAML
# secret manifest
YAML
}

I've also tried Terragrunt's before hook and after hook but they also have the same issue. (Related discussion: https://github.com/gruntwork-io/terragrunt/issues/856#issuecomment-530091210)

0 Answers
Related