Script de provisão do Vagrant: echo “source /root/.venvburrito/startup.sh” ~ / .profile falha

2

Estou executando meu provisionamento vagrant com um script bootstrap.sh . O script funciona bem, exceto por uma linha:

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

Esta linha falha. Eu não obtenho nenhuma saída sobre isso, mas quando eu faço vagrant ssh e verificar o arquivo ~/.profile eu posso ver que source /root/.venvburrito/startup.sh não é anexado ao arquivo.

Como posso acrescentar source /root/.venvburrito/startup.sh ao arquivo para que o comando seja originado toda vez que eu fizer vagrant ssh ?

    
por Bentley4 26.02.2014 / 12:37

3 respostas

2

Os provedores de shell (e a maioria dos outros) são executados como o usuário root usando sudo . Mas para o provedor de shell, você pode definir o atributo privileged como false para ser executado como o usuário do SSH.

Exemplo:

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

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

Veja as documentações para obter mais detalhes.

    
por 26.02.2014 / 22:25
1

Execução de um script com vagrant provision :

#whoami
root
#echo $HOME
/root

em comparação com a execução de vagrant ssh :

#whoami
vagrant
#echo $HOME
/home/vagrant

Em outras palavras, quando eu uso ~/.profile , o ~ expande para /root em um script de provisão comparado com quando eu o uso depois de sssh na caixa virtual onde ele se expande para /home/vagrant .

Portanto, para anexar a linha ao arquivo ~/.profile que você pode acessar com o ssh, você precisará da seguinte linha no seu script de provisão:

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

Se você usar printenv , poderá ver todas as variáveis env configuradas. Isso revela que você também pode usar:

echo "source /root/.venvburrito/startup.sh" >> $PWD/.profile
    
por 26.02.2014 / 17:19
0

Eu corri para a mesma coisa. Então percebi depois de ler o comentário do @tmatilai que ele realmente o definiu para o usuário root!

Você pode fazer

sudo su -

para ir para a raiz. e lá você verá sua linha anexada ao arquivo (em /root/.profile)

Além disso, em vez de definir privilégios conforme sugerido, você pode usar um nome totalmente qualificado:

echo "source /root/.venvburrito/startup.sh" >> /home/vagrant/.profile
    
por 19.12.2014 / 19:46