Как я могу сделать переменные среды доступными во время подготовки Vagrant?

Я хотел бы сделать переменные среды доступными для Vagrant во время подготовки, чтобы я мог запускать некоторые команды, которые полагаются на них для учетных данных. В частности, aws cli и pg_restore.

Например, pg_restore нужен доступ к переменной $PGPASS, которую я устанавливаю в файле .bash_profile. Я попытался запустить source /home/vagrant/.bash_profile, который экспортирует необходимые переменные среды AWS, но позже в моем блоке подготовки команда aws не работает, потому что переменные среды не установлены.

.bash_profile

export AWS_ACCESS_KEY_ID='keyid'
export AWS_SECRET_ACCESS_KEY='secret'

Блок подготовки Vagrantfile

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

person Ryan Fisher    schedule 04.06.2016    source источник


Ответы (1)


Вы запускаете подготовку как пользователь 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
person Frederic Henri    schedule 04.06.2016
comment
Спасибо! Не было видно леса за деревьями. - person Ryan Fisher; 04.06.2016