Запечатанные секреты с Kubernetes с использованием terraform
- Итак, в моем текущем коде терраформирования я пытаюсь прочитать секреты из хранилища Hashicorp и создать из него запечатанный секрет.
- Итак, я пытаюсь прочитать секреты hardicorp из вывода terraform, а затем сказать terraform обновить существующий файл yml значениями из хранилища hashicorp и преобразовать их в запечатанный секрет, используя сценарий оболочки в terraform.
main.tf
required_providers {
mongodbatlas = {
source = "mongodb/mongodbatlas"
}
}
required_version = ">= 0.13"
}
#vault login
provider "vault" {
address = var.vault_address
auth_login {
path = "auth/login"
parameters = {
role_id = var.login_role_id
secret_id = var.login_secret_id
}
}
}
#vault to show
data "vault_generic_secret" "key" {
path = "path_to_vault_secret"
}
resource "null_resource" "secret3" {
provisioner "local-exec" {
command = "/bin/sh Downloads/terraform/secret.sh"
}
}
вывод.tf
#read the output from the harshi corp vault
output "user_name" {
value = "${data.vault_generic_secret.key.data["dbuser"]}"
sensitive = true
}
output "user_password" {
value = "${data.vault_generic_secret.key.data["dbuser_password"]}"
sensitive = true
}
секрет.ш
#!/bin/bash
user_name=$(terraform output -raw user_name)
user_password=$(terraform output -raw user_password)
password_old_value="abc"
user_old_value="abc"
sed -e "s/$password_old_value/$user_password/g" /Downloads/db-creds.yml > /Downloads/dummy-creds.yml
sed -e "s/$user_old_value/$user_name/g" /Downloads/dummy-creds.yml > /Downloads/test-creds.yml
mv /test-creds.yml /terraform/db-creds.yml
cat /terraform/db-creds.yml
kubeseal -n sealed-secret-application < /terraform/db-creds.yml > /terraform/db-creds-encrypted.yaml -o yaml
у меня тут два вопроса
- Есть ли другой лучший способ выполнить ту же задачу
- при выполнении этого я сталкиваюсь с ошибкой ниже
Error: local-exec provisioner error
│
│ with null_resource.secret3,
│ on main.tf line 37, in resource "null_resource" "secret3":
│ 37: provisioner "local-exec" {
│
│ Error running command '/bin/sh /Downloads/terraform/secret.sh': exit status 1. Output: