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.