Script di provisioning Vagrant: echo “source /root/.venvburrito/startup.sh” >> ~ / .profile non riesce


2

Sto eseguendo il mio provisioning vagabondo con uno script bootstrap.sh . Lo script funziona bene tranne per una riga:

echo "source /root/.venvburrito/startup.sh" >> ~/.profile

Questa linea fallisce. Non ottengo alcun output a riguardo, ma quando lo faccio vagrant sshe controllo il ~/.profilefile vedo che source /root/.venvburrito/startup.shnon è aggiunto al file.

Come posso aggiungere source /root/.venvburrito/startup.shal file in modo che quel comando provenga ogni volta che lo faccio vagrant ssh?

Risposte:


2

Il provisioning della shell (e la maggior parte degli altri) viene eseguito come utente root utilizzando sudo. Ma per il provider di shell è possibile impostare l' privilegedattributo su falsecome utente SSH.

Esempio:

Vagrant.configure("2") do |config|
  # ...

  config.vm.provision "shell", path: "bootstrap.sh", privileged: false
end

Vedi la documentazione per maggiori dettagli.


Questo non funziona per me. Anche quando corro come utente SSH, non posso aggiungere file echo. La versione echoutilizzata da SSH differisce dalla versione disponibile sul sistema operativo guest (dove è possibile eseguire il comando se lo copio e lo incollo).
8bitjunkie,

1

Esecuzione di uno script con vagrant provision:

#whoami
root
#echo $HOME
/root

rispetto alla corsa vagrant ssh:

#whoami
vagrant
#echo $HOME
/home/vagrant

In altre parole, quando lo uso ~/.profile, si ~espande /rootin uno script di provisioning rispetto a quando lo uso dopo che ho SSH nella casella virtuale in cui si espande /home/vagrant.

Quindi, per aggiungere la riga al ~/.profilefile a cui puoi accedere con ssh, avrai bisogno della seguente riga nel tuo script di provisioning:

echo "source /root/.venvburrito/startup.sh" >> /home/vagrant/.profile

Se lo usi printenvpuoi vedere tutte le variabili env impostate. Questo rivela che potresti anche usare:

echo "source /root/.venvburrito/startup.sh" >> $PWD/.profile

0

Mi sono imbattuto nella stessa cosa. Poi mi sono reso conto dopo aver letto il commento di @ tmatilai di averlo effettivamente impostato per l'utente root!

Tu puoi fare

sudo su -

per arrivare alla radice. e lì vedrai la tua linea aggiunta al file (in /root/.profile)

Inoltre, invece di impostare i privilegi come ha suggerito, puoi invece utilizzare un nome completo:

echo "source /root/.venvburrito/startup.sh" >> /home/vagrant/.profile
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.