70 votes

Comment faire pour contrôler la version du Chef qui Les utilise à disposition VMs?

Un courant recette Chef n'est pas en cours d'exécution en raison d'un bogue dans la version 0.10.10. Comment puis-je mettre à niveau la version du Chef qui Les utilise, à 0.10.12?

Je ne tiens pas à le mettre à jour pour l'instance actuelle de la VM - je garder la destruction et la reconstruction de ceux-ci. Dois-je modifier quelque chose dans le Vagrant zone de base, ou quelque chose dans mon (physique) du système d'installation?

104voto

mirkokiefer Points 934

À l'aide de l'Errance plugin vagrant-omnibus a très bien fonctionné pour moi:

vagrant plugin install vagrant-omnibus

Vous pouvez ensuite il suffit de configurer votre chef de version dans le Vagrantfile avant de faire l'approvisionnement:

config.omnibus.chef_version = :latest

Vous pouvez également spécifier une version spécifique:

config.omnibus.chef_version = '11.6.0'

40voto

Bryan Larsen Points 2630

Ajouter les lignes

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"

pour votre Vagrantfile avant votre config.vm.provision :chef_solo bloc.

accessoires de hauraki commentaire http://dougireton.com/blog/2012/12/23/automatically-upgrading-chef-client-on-vagrant-up/

modifié pour inclure de Jason Mayfield commentaire. Assurez-vous et donnez-lui un upvote trop. J'ai ajouté --no-upgrade afin d'accélérer les choses et correspondre à l' --conservative sur la deuxième ligne. Vous pourriez faire au lieu de ce que Jason l'a fait, et de supprimer à la fois l' --no-upgrade et --conservative.

modifié pour inclure les modifications suggérées par anonyme user228653

31voto

jtimberman Points 5637

Reconstruire la base de la boîte. Tout d'abord, l'amener sans ravitaillement et SSH.

vagrant up --no-provision 
vagrant ssh

Ensuite, exécutez les commandes dont vous avez besoin pour mettre à jour la boîte. Cela peut inclure la mise à jour de Chef et de Rubis. Éventuellement, mettre à jour les packages pour le système d'exploitation, etc. Vous devez nettoyer la zone de tout ce qui n'est pas nécessaire, comme le package téléchargé des fichiers ou des caches.

Par exemple, j'utilise le Opscode Omnibus de la Pile de l'Installateur pour le Chef dans mon Errance des boîtes (à l'origine construit avec VeeWee), et-je mettre à jour les paquets, trop.

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

N'oubliez pas de "zéro" le disque pour réduire la taille.

# 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

Ensuite, l'emballage de la boîte et de l'ajouter à votre Errance de l'environnement d'utilisation.

vagrant package
vagrant box add mynewlucid32 package.box

Si vous souhaitez utiliser le même nom de boîte, vous aurez besoin de retirer la boîte existante (~/.vagrant.d/boîtes/BOXNAME) en premier.

11voto

Jason Mayfield Points 91

Je suis incapable de poster des commentaires sur les réponses, mais je voulais ajouter une note à Bryan Larsen réponse ci-dessus. Afin d'obtenir sa commande d'allocation de travailler, j'ai besoin d'ajouter une ligne avant de pouvoir construire le gem extensions natives lors de l'installation du nouveau Chef de la version. Par conséquent, il est devenu:

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'

C'était sur Ubuntu 13.04, dans le cas où des questions à n'importe qui.

0voto

Steve Bennett Points 4273

Les conseils de la #chef canal IRC est de mettre à niveau le chef dans ma base 'lucid32' VM, puis de travailler à partir de là. Va voir comment il va.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X