Skip to content

Использование 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:

vault token create -policy="token-create-policy" -policy=test

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

После успешного выполнения, вы сможете получить значения секретов с помощью команд:

terraform output -raw get_vault_username
terraform output -raw get_vault_password