我想在配置期间使环境变量可供Vagrant使用,以便我可以运行一些依赖它们作为凭据的命令。特别是aws cli
和pg_restore
.
例如,pg_restore
需要访问我在.bash_profile
中设置的$PGPASS变量。我尝试运行导出所需 AWS 环境变量的source /home/vagrant/.bash_profile
,但稍后在我的预置块中,aws
命令失败,因为未设置环境变量。
.bash_profile
export AWS_ACCESS_KEY_ID='keyid'
export AWS_SECRET_ACCESS_KEY='secret'
流浪文件预配块
config.vm.provision :shell, run: "always", inline: <<-SH.gsub(/^s*/,"")
source /home/vagrant/.bash_profile
aws s3 cp s3://bucket/sql/file /tmp/file # fail, missing credentials
echo $(printenv | grep AWS_) # outputs blank line
SH
您以root
用户身份运行预配,您的 bash 适用于vagrant
用户,因此请确保通过添加privileged: false
config.vm.provision :shell, privileged: false, run: "always", inline: <<-SH.gsub(/^s*/,"")
source /home/vagrant/.bash_profile
aws s3 cp s3://bucket/sql/file /tmp/file # fail, missing credentials
echo $(printenv | grep AWS_) # outputs blank line
SH