Como fazer upload de arquivos de configuração usando o provedor de shell?

3

Além de instalar aplicativos como o emacs em minha máquina convidada, eu também gostaria de fazer upload de alguns arquivos de configuração (por exemplo, para configurar o emacs para o desenvolvimento do Clojure). Infelizmente, a documentação do Vagrant não dá pistas sobre como fazer isso. Eu acho que eu teria que colocar os arquivos de configuração em uma pasta compartilhada e copiá-los da pasta compartilhada na máquina de convidado para os locais desejados?

    
por Trollhorn 06.01.2014 / 09:27

2 respostas

9

Você pode usar o provisionador "file". Parece ser indocumentado, mas o uso é simples. Por exemplo:

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

  config.vm.provision :file do |file|
    file.source      = '~/.my.conf'
    file.destination = '/home/vagrant/.my.conf'
  end
end

A primeira captura é que ele é executado como o usuário ssh ("vagrant" por padrão) sem sudo, portanto, é necessário ter acesso de gravação ao diretório na VM. Uma solução alternativa é copiar para um local temporário e, em seguida, usar um provedor de shell normal para copiá-lo / movê-lo para o local correto.

O segundo problema é que os caminhos de destino não são expandidos corretamente. Portanto, usar ~ ou $HOME provavelmente não funcionará como esperado. (O caminho de origem, por outro lado, é expandido.)

    
por 31.01.2014 / 19:54
1

Sim, você deve "colocar os arquivos de configuração em uma pasta compartilhada e copiá-los da pasta compartilhada na máquina convidada para o local desejado".

    
por 06.01.2014 / 15:55