2014-09-10 2 views
3

Каждый раз, когда я vagrant уничтожает, то vagrant up обработка Vagrantfile выходит и получает тот же старый шеф-повар, что и в прошлый раз.Chef/Vagrant - как указать установщик omnibus в уже загруженный файл?

config.omnibus.chef_version = :latest 

Как я могу избежать загрузки 34 МБ каждый раз? Иногда я хочу перезапустить с нуля, а не использовать брокерское обеспечение.

Я наблюдал, где он принес повар из, скачал его себе

/Users/jluc/kds2/chef/vagrant/chef_11.14.6-1_amd64.deb 

комментированием chef_version directiveI был своего рода в надежде использовать install_url, но это, кажется, не доволен моим файлом.

#config.omnibus.chef_version = :latest 
config.omnibus.install_url = '/Users/jluc/kds2/chef/vagrant/chef_11.14.6-1_amd64.deb' 

Пропустив install_url и указывая chef_version на мой загруженный файл не помогло.

В документе doc (https://github.com/schisamo/vagrant-omnibus) указано, что install_url должен быть сценарием установки. Как использовать обычный сценарий установки, но использовать загруженный файл?

@Peter

Отлично. Похоже, что это сработает, но с трудом получить его. У меня есть это в сценарии установки, которые я ссылку в Vagrantfile Он работает от бродячего SSH

#!/usr/bin/env bash 
dpkg --install /vagrant/chef_11.14.6-1_amd64.deb 

, но не из Vagrantfile:

config.omnibus.install_url = '/vagrant/utilities/chefinstall.sh' 
+0

Установочный URL-адрес относительно вашего хост-компьютера или удаленного URL-адреса. –

+0

Если вы измените материал выше на бит, который я изменил в своем ответе, он должен работать! :) –

ответ

3

Бродяга-омнибус плагин позволяет давать какие-либо скрипт для установки шеф-повара. Так что если вы поставите повар установить в папку, где Vagrantfile есть, вы могли бы указать на инсталляционный скрипт, который выглядит как:

#!/usr/bin/env bash 
dpkg --install /vagrant/chef_11.14.6-1_amd64.deb 

Положите его в той же папке, что и Vagrantfile. Затем в вашем файле Vagran:

config.omnibus.chef_version = '11.14.6' 
config.omnibus.install_url = './chefinstall.sh' 

Это должно сработать. Это достаточно умно, что он проверяет, какая версия Chef установлена ​​на коробке, и только запускайте скрипт, если этого не хватает.

Вы можете также использовать бродячую cachier плагин, так что не придется загружать каждый раз, новейшую версию плагина омнибус крючками в кэш:

config.omnibus.cache_packages = true 

Так что, если ваша главная забота оказывает на загрузка повторяется, выписка vagrant-cachier

+0

Я нахожусь на моем телефоне в данный момент, но я сделаю пример из того, что я имею в виду как редактирование, когда буду дальше на моей машине. –

+0

Также может быть, что ваш заказ в вашем Vagrantfile означает шеф-повара это происходит до того, как установлен пакет omnibus. Можете ли вы опубликовать весь свой Vagrantfile в сущности, и я посмотрю, смогу ли я заставить его работать, если вы хотите? :) –

0

Предложение Петра о добавлении chef_version заставляет его работать нормально.

Это правильный ответ, я просто оставляю это сообщение, потому что он дает больше контекста в структуре каталогов, с которой я всегда сталкиваюсь с документами Chef.

config.omnibus.chef_version = '11.14.6' 
config.omnibus.install_url = install_url 

Деталь:

(примечание:. Не смотря на то бродяга-cachier, потому что я пытаюсь ограничить мою зависимость от неосновного (Opscode) кулинарные книги/плагины Получения Berkshelf стабильным взял меня лучше часть недели на OSX Mavericks).

инсталляционный скрипт, chefinstall.sh:

#!/usr/bin/env bash 
dpkg --install /vagrant/chef_11.14.6-1_amd64.deb 

Это моя установка, каталог-накрест

|-- Vagrantfile 
|-- chef_11.14.6-1_amd64.deb 
|-- utilities 
| |-- chefinstall.sh 

От хозяина, это то, что права доступа выглядеть следующим образом:

audrey:utilities jluc$ ls -l chefinstall.sh 
-rwxr-xr-x 1 jluc staff 68 10 Sep 12:19 chefinstall.sh 

И от гостя, на всякий случай:

[email protected]:~$ ls -l /vagrant/utilities/chefinstall.sh 
-rwxr-xr-x 1 vagrant vagrant 68 Sep 10 12:19 /vagrant/utilities/chefinstall.sh 

Это то, что я положил в Vagrantfile, без успеха, пока не добавил chef_version в соответствии с предложением Питера.

#relative (to Vagrantfile) on host 
install_url = './utilities/chefinstall.sh' 

puts "jlp:install_url:#{install_url}:" 

Это то, что Пит обнаружил, что делает его работу, добавляя chef_version:

config.omnibus.chef_version = '11.14.6' 
config.omnibus.install_url = install_url 

Перед chef_version, я обнаружил, что этот хак работал хорошо.

config.vm.provision :shell, :inline => "sudo /vagrant/utilities/chefinstall.sh" 
Смежные вопросы