1

Ich möchte Vagrant Umgebungsvariablen während der Bereitstellung zur Verfügung stellen, damit ich einige Befehle ausführen kann, die auf ihnen für Anmeldeinformationen angewiesen sind. Speziell aws cli und pg_restore.Wie kann ich Umgebungsvariablen während der Vagrant-Bereitstellung verfügbar machen?

Zum Beispiel benötigt pg_restore Zugriff auf die $ PGPASS-Variable, die ich in meinem .bash_profile einstelle. Ich habe versucht, source /home/vagrant/.bash_profile ausführen, die die erforderlichen AWS-Umgebungsvariablen exportiert, aber später in meinem Bereitstellungsblock der aws Befehl fehlschlägt, weil die Umgebungsvariablen nicht festgelegt sind.

Bash_profile

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

Vagrantfile Provisioning Block

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 

Antwort

1

Sie führen die Bereitstellung als root Benutzer, die Ihre bash für vagrant Benutzer ist so sicherstellen, dass die Bereitstellung als Vagabund laufen durch Zugabe von 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 
+0

Danke! Konnte den Wald nicht durch die Bäume sehen. –