tools hashicorp curso bajar rubygems chef vagrant

rubygems - hashicorp - ¿Cómo controlar la versión de Chef que Vagrant usa para aprovisionar máquinas virtuales?



vagrant vbox (6)

Una receta actual de Chef no se está ejecutando debido a un error en la versión 0.10.10. ¿Cómo puedo actualizar la versión de Chef que usa Vagrant a 0.10.12?

No quiero simplemente actualizarlo para la instancia actual de la VM, sigo destruyendo y reconstruyendo esos. ¿Debo cambiar algo en la caja base de Vagrant, o algo en la instalación de mi sistema (físico)?


Agrega las líneas

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"

a su Vagrantfile antes de su config.vm.provision :chef_solo bloque de config.vm.provision :chef_solo .

puntales al comentario de hauraki en http://dougireton.com/blog/2012/12/23/automatically-upgrading-chef-client-on-vagrant-up/

editado para incluir el comentario de Jason Mayfield. Asegúrate de darle un voto positivo también. --conservative --no-upgrade para acelerar las cosas y --conservative el --conservative en la segunda línea. En su lugar, podría hacer lo que hizo Jason, y eliminar tanto el --no-upgrade como el --conservative .

editado para incluir la edición sugerida por usuario anónimo228653


Hay varias options que puede especificar al usar Chef para el aprovisionamiento. Una de estas es la version , que le permite especificar la versión de Chef que desea.

Por ejemplo, vea la línea chef.version en este extracto de un Vagrantfile mío:

config.vm.provision :chef_solo do |chef| chef.version = "10.14.2" chef.cookbooks_path = "cookbooks" chef.add_recipe("vagrant_main") end


No puedo publicar comentarios sobre las respuestas, pero quería agregar una nota a la respuesta anterior de Bryan Larsen. Para que su comando de aprovisionamiento funcionara, necesitaba agregar una línea antes de poder crear las extensiones gemelas nativas durante la instalación de la nueva versión de Chef. Por lo tanto, se convirtió en:

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''

Esto fue en Ubuntu 13.04, en caso de que le importe a alguien.


Reconstruye el cuadro base. Primero, créelo sin aprovisionamiento y SSH.

vagrant up --no-provision vagrant ssh

Luego, realice los comandos que necesita para actualizar la caja. Esto puede incluir la actualización de Chef y Ruby. Opcionalmente, actualice los paquetes para el sistema operativo, etc. Debe limpiar el cuadro de todo lo que no se requiere, como los archivos de paquete descargados o las memorias caché.

Por ejemplo, utilizo Opscode Omnibus Full Stack Installer para Chef en mis cajas Vagrant (originalmente construidas con VeeWee ), y también actualizo los paquetes.

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

No te olvides de "poner a cero" el disco para reducir el tamaño.

# 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

Luego, empaca la caja y agrégala a tu entorno Vagrant para su uso.

vagrant package vagrant box add mynewlucid32 package.box

Si desea utilizar el mismo nombre de casilla, primero deberá eliminar la casilla existente (~ / .vagrant.d / boxes / BOXNAME).


Si está utilizando Chef Test Kitchen, puede especificar la versión de Chef en el archivo .kitchen.yml , así:

provisioner: name: chef_zero require_chef_omnibus: 12.6.0


Usando el plugin Vagrant vagrant-omnibus funcionó muy bien para mí:

vagrant plugin install vagrant-omnibus

A continuación, puede simplemente configurar su versión de chef en Vagrantfile antes de realizar el aprovisionamiento:

config.omnibus.chef_version = :latest

También puede especificar una versión específica:

config.omnibus.chef_version = ''11.6.0''