Ein aktuelles Chef-Rezept wird aufgrund eines Fehlers in Version 0.10.10 nicht ausgeführt. Wie kann ich die von Vagrant verwendete Version von Chef auf 0.10.12 aktualisieren?
Ich möchte es nicht nur für die aktuelle Instanz der VM aktualisieren, sondern diese ständig zerstören und neu erstellen. Muss ich etwas in der Vagrant-Basisbox oder etwas in der Installation meines (physischen) Systems ändern?
rubygems
chef-infra
vagrant
Steve Bennett
quelle
quelle
:latest
durch eine bestimmte Version ersetzen ?config.omnibus.chef_version = '11.6.0'
config.omnibus.chef_version = :latest config.vm.provision :chef_solo do |chef|
aber Chef Solo scheint immer noch 10.26.0 zu verwenden und den gleichen Fehler auszulösenFügen Sie die Zeilen hinzu
zu Ihrem Vagrantfile vor Ihrem
config.vm.provision :chef_solo
Block.Requisiten zu Haurakis Kommentar auf http://dougireton.com/blog/2012/12/23/automatically-upgrading-chef-client-on-vagrant-up/
bearbeitet, um Jason Mayfields Kommentar aufzunehmen. Stellen Sie sicher und geben Sie ihm auch eine Gegenstimme. Ich habe hinzugefügt
--no-upgrade
, um die Dinge zu beschleunigen und die--conservative
in der zweiten Zeile abzugleichen. Sie könnten stattdessen das tun, was Jason getan hat, und sowohl das--no-upgrade
als auch das entfernen--conservative
.bearbeitet, um die vorgeschlagene Bearbeitung durch anonymen Benutzer einzuschließen228653
quelle
config.vm.provision :shell, inline: 'apt-get install ruby1.9.1-dev'
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"
Erstellen Sie die Basisbox neu. Rufen Sie es zunächst ohne Bereitstellung und SSH auf.
Führen Sie dann die Befehle aus, die Sie zum Aktualisieren der Box benötigen. Dies kann das Aktualisieren von Chef und Ruby umfassen. Aktualisieren Sie optional die Pakete für das Betriebssystem usw. Sie sollten die Box von allem bereinigen, was nicht benötigt wird, z. B. heruntergeladene Paketdateien oder Caches.
Zum Beispiel verwende ich den Opscode Omnibus Full Stack Installer für Chef in meinen Vagrant-Boxen (ursprünglich mit VeeWee erstellt ) und aktualisiere auch die Pakete.
Vergessen Sie nicht, die Festplatte auf "Null" zu setzen, um die Größe zu verringern.
Verpacken Sie dann die Box und fügen Sie sie zur Verwendung Ihrer Vagrant-Umgebung hinzu.
Wenn Sie denselben Boxnamen verwenden möchten, müssen Sie zuerst die vorhandene Box (~ / .vagrant.d / boxen / BOXNAME) entfernen.
quelle
wget -O - https://opscode.com/chef/install.sh | sudo bash
der folgenden ist das neue Empfehlungsverfahren .sudo true && curl -L https://www.opscode.com/chef/install.sh | sudo bash
Ersteres kann dazu führen, dass "ein gültiges Paket nicht abgerufen werden kann!"Es gibt eine Reihe von Optionen, die Sie angeben können, wenn Sie Chef für die Bereitstellung verwenden. Eine davon ist
version
, mit der Sie die gewünschte Chef-Version angeben können.Siehe zum Beispiel die
chef.version
Zeile in diesem Auszug aus einemVagrantfile
von mir:quelle
Ich kann keine Kommentare zu Antworten veröffentlichen, aber ich wollte Bryan Larsens Antwort oben eine Notiz hinzufügen. Damit sein Bereitstellungsbefehl funktioniert, musste ich eine Zeile hinzufügen, bevor ich die nativen Erweiterungen von gem während der Installation der neuen Chef-Version erstellen konnte. Daher wurde es:
Dies war unter Ubuntu 13.04, falls das für jemanden wichtig ist.
quelle
Wenn Sie Chef Test Kitchen verwenden, können Sie die Chef-Version in der
.kitchen.yml
Datei wie folgt angeben :quelle