我是vault新手,我想做一些非常简单的事情。我想在我的TF代码中注入我的保险库username
和password
,以便保险库可以在我的应用程序启动期间验证我的凭据。通常,我是这样在本地验证我的保险库的:
export VAULT_ADDR=https://myvault.dev
export VAULT_SKIP_VERIFY=true
export VAULT_NAMESPACE=myns
vault login -namespace=myns -method=userpass username=myuser password=mypwd
现在我正在使用一个用户数据脚本,我在引导期间注入我的TF代码来访问保险库并获得我的秘密:
main.tf
resource "aws_instance" "myec2" {
ami = "ami-082b5a644766e0e6f"
instance_type = "t2.micro"
}
user_data = <<EOF
#!/usr/bin/env bash
set -x -v
exec > >(tee -i user-data.log 2>/dev/console) 2>&1
# Install latest AWS cli
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install --update
# Install VAULT cli
sudo wget https://releases.hashicorp.com/vault/1.8.2/vault_1.8.2_linux_amd64.zip
sudo unzip vault_1.8.2_linux_amd64.zip
sudo mv vault /usr/local/bin/vault
sudo chmod +x /usr/local/bin/vault
vault -v
# vault env var
export VAULT_ADDR=https://myvault.dev
export VAULT_SKIP_VERIFY=true
export VAULT_NAMESPACE=myns
# Return only my secret key:
vault kv get -field=pass secret/myscret
现在我不知道如何登录vault从我的应用程序内获得我的秘密之前。关键是我不想在我的TF代码中硬编码我的保险库凭证,因为我将把我的代码推送到git仓库。我将感激任何帮助。如果我错过了什么,请告诉我。
由于您的应用程序在ec2中,您可以在vault中启用aws认证方法,并使用ec2方法而不是凭据来登录
文档:https://www.vaultproject.io/docs/auth/aws