chef vagrant

Vagrant Instala chef-cliente encima de la imagen base



(2)

Encontré 2 soluciones y ambas funcionan como se esperaba:

1) Método 1: En su Vagrantfile, agregue

config.omnibus.chef_version = :latest

Esto asegurará que tanto chef-solo como chef-client estén instalados en la VM y que sean necesarios para el aprovisionamiento de chef. Para usar el complemento omnibus, asegúrese de instalar primero el complemento: el vagrant plugin install vagrant-omnibus

2) Método 2: use config.vm.provision shell en línea como se menciona aquí: https://github.com/mitchellh/vagrant-aws/issues/19#issuecomment-15487131 . En su Vagrantfile, agregue:

config.vm.provision "shell", path: "utils/tools/install_chef.bash"

El script utils / tools / install_chef.bash que escribí se parece a esto:

#!/bin/bash function error { echo -e "/033[1;31m${1}/033[0m" 1>&2 } function checkRequireRootUser { if [[ "$(whoami)" != ''root'' ]] then error "ERROR: please run this program as ''root''" exit 1 fi } function installChef() { if [[ "$(which chef-client)" = '''' ]] then local chefProfilePath=''/etc/profile.d/chef.sh'' curl -s -L ''https://www.opscode.com/chef/install.sh'' | bash && / echo ''export PATH="/opt/chef/embedded/bin:$PATH"'' > "${chefProfilePath}" && / source "${chefProfilePath}" fi } function main() { checkRequireRootUser installChef } main

ACTUALIZAR:

si aparece el siguiente error: Unknown configuration section ''omnibus'' . Significa que te estás perdiendo omnibus plugin. Para instalarlo, escriba: vagrant plugin install vagrant-omnibus

Estoy tratando de usar Chef para instalar el servidor de grafito y encontré errores al decir que chef-solo o chef-client no se encontraron en la máquina virtual. Estoy usando Ubuntu 12.04.amd64 LTS, esta es la versión del servidor, por lo que no tendrá instalado chef-client. Sé que la versión 13 tendrá auto-cliente instalado, pero no puedo usar la versión 13.

Busqué en Google y vi a algunas personas sugerir que se pusieran a la caja y que instalaran el cliente-chef.

Mi pregunta es: ¿hay alguna forma en que pueda preinstalar el chef-cliente antes de que el chef comience? Básicamente, me gustaría que mi programa de chef descargue la imagen en bruto y haga todo lo posible sin pasos manuales adicionales de los usuarios. ¿Es posible?

Mi Vagrantfile:

Vagrant.configure("2") do |config| config.vm.box = "ubuntu-12.04-amd64" config.vm.box_url = "http://cloud-images.ubuntu.com/vagrant/precise/current/precise-server-cloudimg-amd64-vagrant-disk1.box" config.vm.hostname = "graphite" config.vm.network :forwarded_port, guest: 8080, host: 9090 config.vm.provision :chef_solo do |chef| chef.cookbooks_path = "cookbooks" chef.roles_path = "roles" chef.data_bags_path = "data_bags" chef.add_role "Graphite-Server" chef.add_role "StatsD-Server" end end

Registro de errores:

[default] Running provisioner: chef_solo... The chef binary (either `chef-solo` or `chef-client`) was not found on the VM and is required for chef provisioning. Please verify that chef is installed and that the binary is available on the PATH.

Gracias


Puedo recomendar el plugin vagrant-omnibus que básicamente ejecuta el script install.sh para usted, si chef no está instalado.