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)