Jak kontrolować wersję Chef, której Vagrant używa do udostępniania maszyn wirtualnych?

Aktualny przepis kucharza nie działa z powodu błędu w wersji 0.10.10. Jak Mogę Uaktualnić Wersję Chef, której używa Vagrant, do 0.10.12?

Nie chcę po prostu aktualizować go dla bieżącej instancji maszyny wirtualnej - ciągle je niszczę i odbudowuję. Czy muszę zmienić coś w ramce Vagrant base box lub coś w instalacji mojego (fizycznego) systemu?

Author: Steve Bennett, 2012-07-04

6 answers

Używanie wtyczki Vagrant vagrant-omnibus zadziałało dla mnie świetnie:

vagrant plugin install vagrant-omnibus

Możesz po prostu skonfigurować wersję chef w pliku Vagrantfile przed wykonaniem aprowizacji:

config.omnibus.chef_version = :latest

Możesz również podać konkretną wersję:

config.omnibus.chef_version = '11.6.0'
 103
Author: mirkokiefer,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-06-30 16:00:13

Dodaj linie

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"

Do Twojego Vagrantfile przed Twoim config.vm.provision :chef_solo blokiem.

[[6]] rekwizyty do komentarza hauraki na http://dougireton.com/blog/2012/12/23/automatically-upgrading-chef-client-on-vagrant-up/

Edytowano, aby uwzględnić komentarz Jasona Mayfielda. Upewnij się i daj mu też głos. Dodałem --no-upgrade, aby przyspieszyć i dopasować --conservative w drugiej linii. Możesz zamiast tego zrobić to, co zrobił Jason i usunąć zarówno --no-upgrade, jak i --conservative.

Edytowane do Dołącz sugerowaną edycję przez anonimowego użytkownika 228653

 40
Author: Bryan Larsen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-12-27 14:25:29

Odbudować skrzynkę bazową. Po pierwsze, przynieś go bez provisioning i SSH do niego.

vagrant up --no-provision 
vagrant ssh

Następnie wykonaj polecenia potrzebne do aktualizacji pola. Może to obejmować aktualizację Chef i Ruby. Opcjonalnie zaktualizuj pakiety dla systemu operacyjnego itp. Należy wyczyścić pole ze wszystkiego, co nie jest wymagane, takich jak pobrane pliki pakietów lub pamięci podręczne.

Na przykład używam Opscode Omnibus Full Stack Installer for Chef W moich pudełkach Vagrant (pierwotnie zbudowanych z VeeWee ), aktualizuję też Pakiety.

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

Nie zapomnij "zerować" dysku, aby zmniejszyć rozmiar.

# 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

Następnie spakuj pudełko i dodaj je do swojego środowiska Vagrant do użytku.

vagrant package
vagrant box add mynewlucid32 package.box

Jeśli chcesz użyć tej samej nazwy pola, musisz usunąć istniejące pole (~ / .włóczęga.d/boxes / BOXNAME).

 31
Author: jtimberman,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-05-05 09:31:57

Istnieje wiele opcji , które możesz określić, gdy używasz Chef do tworzenia aprowizacji. Jedną z nich jest version, która pozwala określić wersję kucharza, którą chcesz.

Na przykład, zobacz chef.version wiersz w tym wyciągu z Vagrantfile mojego:

config.vm.provision :chef_solo do |chef|
   chef.version = "10.14.2"
   chef.cookbooks_path = "cookbooks"
   chef.add_recipe("vagrant_main")
 end
 12
Author: Sam,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-04-10 07:19:02

Nie jestem w stanie dodawać komentarzy do odpowiedzi, ale chciałem dodać notatkę do powyższej odpowiedzi Bryana Larsena. Aby uruchomić jego polecenie provisioning, musiałem dodać przed nim linię, aby móc zbudować natywne rozszerzenia gem podczas instalacji nowej wersji Chef. Dlatego stało się:

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'

To było na Ubuntu 13.04, gdyby to miało znaczenie dla kogokolwiek.

 11
Author: Jason Mayfield,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-06-27 23:44:15

Jeśli używasz Chef Test Kitchen, możesz określić wersję Chef w pliku .kitchen.yml, TAK:

provisioner:
  name: chef_zero
  require_chef_omnibus: 12.6.0
 0
Author: codeforester,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-01-18 17:51:23