Вопрос по chef, vagrant, rubygems – Как контролировать версию Chef, которую использует Vagrant для предоставления виртуальных машин?
Текущий рецепт Chef не работает из-за ошибки в версии 0.10.10. Как я могу обновить версию Chef, которую использует Vagrant, до 0.10.12?
Я не хочу просто обновлять его для текущего экземпляра виртуальной машины - я продолжаю уничтожать и перестраивать его. Нужно ли что-то менять в базовом блоке Vagrant или что-то в моей (физической) установке системы?
Использование плагина Vagrantбродяга-омнибус отлично работал для меня:
vagrant plugin install vagrant-omnibus
Затем вы можете просто сконфигурировать свою версию chef в Vagrantfile перед выполнением инициализации:
config.omnibus.chef_version = :latest
Вы также можете указать конкретную версию:
config.omnibus.chef_version = '11.6.0'
:latest
по конкретной версии?
Steve Bennett
опции Вы можете указать при использовании Chef для обеспечения. Одним из них являетсяversion
, который позволяет указать версию Chef, которую вы хотите.
Например, см.chef.version
строка в этом отрывке изVagrantfile
мой:
config.vm.provision :chef_solo do |chef|
chef.version = "10.14.2"
chef.cookbooks_path = "cookbooks"
chef.add_recipe("vagrant_main")
end
но я хотел добавить примечание к ответу Брайана Ларсена выше. Чтобы заставить его команду инициализации работать, мне нужно было добавить строку перед ней, чтобы иметь возможность создавать собственные расширения gem во время установки новой версии Chef. Поэтому стало:
config.vm.provision :shell, inline: 'apt-get install ruby1.9.1-dev'
config.vm.provision :shell, inline: 'gem install chef --version 11.4.4 --no-rdoc --no-ri'
Это было на Ubuntu 13.04, на случай, если это будет важно для всех.
поднимите его без предоставления и SSH к нему.
vagrant up --no-provision
vagrant ssh
Затем выполните команды, необходимые для обновления окна. Это может включать обновление Chef и Ruby. При необходимости обновите пакеты для ОС и т. Д. Вы должны очистить ящик от всего, что не требуется, например, от загруженных файлов пакетов или кешей.
Например, я использую Opscode OmnibusУстановщик полного стека для шеф-повара в моих бродячих коробках (изначально построен сVeeWee), и я тоже обновляю пакеты.
sudo dpkg --purge chef chef-full
sudo true && curl -L https://www.opscode.com/chef/install.sh | sudo bash
sudo apt-get update && sudo aptitude safe-upgrade
sudo rm /var/cache/apt/archives/*.deb
Не забудьте "обнулить" диск для уменьшения размера.
# a bunch of commands like gem install chef, apt-get upgrade, whatever
sudo dd if=/dev/zero of=/EMPTY bs=1M
sudo rm /EMPTY
exit
Затем упакуйте коробку и добавьте ее в свою среду Vagrant для использования.
vagrant package
vagrant box add mynewlucid32 package.box
Если вы хотите использовать одно и то же имя ящика, вам сначала нужно удалить существующий ящик (~ / .vagrant.d / boxes / BOXNAME).
wget -O - https://opscode.com/chef/install.sh | sudo bash
следующее новоеrecommend процедура.sudo true && curl -L https://www.opscode.com/chef/install.sh | sudo bash
Первое может привести к тому, что «невозможно получить действительный пакет!»
config.vm.provision :shell, :inline => 'apt-get install build-essential ruby1.9.1-dev --no-upgrade --yes'
config.vm.provision :shell, :inline => "gem install chef --version 11.4.2 --no-rdoc --no-ri --conservative"
в ваш Vagrantfile перед вашимconfig.vm.provision :chef_solo
блок.
реквизиты для комментария haurakihttp://dougireton.com/blog/2012/12/23/automatically-upgrading-chef-client-on-vagrant-up/
отредактированный, чтобы включить комментарий Джейсона Мэйфилда. Удостоверьтесь и дайте ему возражение тоже. я добавил--no-upgrade
чтобы ускорить процесс и соответствовать--conservative
на второй линии. Вместо этого вы можете сделать то, что сделал Джейсон, и удалить оба--no-upgrade
а также--conservative
.
отредактировано, чтобы включить предлагаемое редактирование анонимным пользователем228653
config.vm.provision :shell, :inline => 'wget -q https://opscode-omnibus-packages.s3.amazonaws.com/ubuntu/12.04/x86_64/chef_11.6.2-1.ubuntu.12.04_amd64.deb -O /tmp/chef_11.6.2-1.ubuntu.12.04_amd64.deb'
config.vm.provision :shell, :inline => "dpkg -i /tmp/chef_11.6.2-1.ubuntu.12.04_amd64.deb"
config.vm.provision :shell, inline: 'apt-get install ruby1.9.1-dev'
Steve Bennett