Использование Vault с Terraform¶
Рассмотри как в terraform использовать секреты, которые хранятся во внешнем vault.
1. Создание политик¶
Для начала создадим необходимые политики в Vault:
Политика для доступа к KV хранилищу
vault policy write test - <<EOF
path "kv/*" {
capabilities = [ "create", "read", "update", "list" ]
}
EOF
vault policy write token-create-policy - <<EOF
path "auth/token/create" {
capabilities = ["update"]
}
EOF
token-create-policy
необходима, потому что провайдер vault создает дочерний маложивущий child token
2. Создание токена¶
Создадим токен, который будет использоваться Terraform:
3. Создание секретов¶
Предварительно должно быть создано KV хранилище. Внутри хранилища создаем секрет secret_tf с ключом username и значением test. Команду для записи секрета можно выполнить следующим образом:
vault write
4. Применение конфигурации Terraform¶
Создадим файл конфигурации Terraform для работы с Vault: 1. Применим terraform
terraform {
required_providers {
vault = {
source = "hashicorp/vault"
version = "3.23.0"
}
}
required_version = ">= 1.4.4"
}
provider "vault" {
address = "https://vault-host.ru"
token = "token из шага 2"
}
data "vault_generic_secret" "secret_credentials" {
path = "kv/secret_tf"
}
output "get_vault_username" {
value = nonsensitive(data.vault_generic_secret.secret_credentials.data["username"])
}
# terraform output -raw get_vault_password
output "get_vault_password" {
value = data.vault_generic_secret.secret_credentials.data["password"]
sensitive = true
}
terraform apply
После успешного выполнения, вы сможете получить значения секретов с помощью команд: