Monte o cache apt de uma caixa Vagrant no host para acelerar a instalação dos pacotes

Este é um pequeno truque que uso para acelerar a instalação de pacotes nas caixas do Debian / Ubuntu no Vagrant .

Eu adiciono uma função simples que verifica se um diretório chamado algo semelhante a ~ / .vagrant.d / cache / apt / opscode-ubuntu-12.04 / partial (pode ter outro caminho no Windows ou MacOS) e crio o diretório se não já não existe.

def local_cache(box_name)
cache_dir
= File.join( File.expand_path(Vagrant::Environment::DEFAULT_HOME),
'cache',
'apt',
box_name
)

partial_dir
= File.join(cache_dir, 'partial')
FileUtils.mkdir_p(partial_dir) unless File.exists? partial_dir
cache_dir

end

Coloquei essa função no meu Vagrantfile para que eu possa usar assim:

Vagrant::Config.run do |config|
config
.vm.box = "opscode-ubuntu-12.04"
cache_dir
= local_cache(config.vm.box)

config
.vm.share_folder "v-cache",
"/var/cache/apt/archives/",
cache_dir


end

O resultado é que o cache apt dentro da VM ( / var / cache / apt / archives / ) é sempre montado no mesmo diretório do host ( ~ / .vagrant.d / cache / apt / opscode-ubuntu-12.04 / in neste caso) e apt basta baixar os pacotes na primeira vez ou se o pacote foi atualizado.

Isso me economiza muito tempo enquanto estou desenvolvendo ou depurando livros de receitas do Chef. Principalmente quando minhas receitas precisam instalar muitos pacotes.

O original (com melhor formato) está aqui: https://gist.github.com/3797297