Tengo un libro de cocina del chef (para apache2). No funciona en un nodo. Así que estoy tratando de modificarlo y actualizarlo, pero el nodo no parece descargar la nueva versión. He podido cargar todo al servidor de chef desde mi máquina local con knife upload .
éxito, e imprime que cargó los bits del libro de cocina apache2 que cambié.
Cuando ejecuto manualmente (como root) chef-client
en el nodo, puedo verlo contactando al servidor, obteniendo la lista de ejecución, etc. Sin embargo, los archivos de recetas /var/cache/chef/cookbooks/apache2
son los archivos antiguos. Y la receta falla (porque no tiene los cambios que hice).
¿Cómo consigo que el cliente chef en el nodo use la nueva versión actualizada del libro de cocina apache2? ¿Debo agregar el número de versión en el libro de cocina (no he estado haciendo esto)?
chef-client -l debug
salida:
[2015-01-30T10:51:31+01:00] DEBUG: Synchronizing cookbook apache2
[2015-01-30T10:51:31+01:00] DEBUG: Not storing cookbooks/apache2/recipes/mod_ldap.rb, as the cache is up to date.
[2015-01-30T10:51:31+01:00] DEBUG: Not storing cookbooks/apache2/recipes/mod_xsendfile.rb, as the cache is up to date.
[2015-01-30T10:51:31+01:00] DEBUG: Not storing cookbooks/apache2/recipes/mod_auth_openid.rb, as the cache is up to date.
[2015-01-30T10:51:31+01:00] DEBUG: Not storing cookbooks/apache2/recipes/mod_setenvif.rb, as the cache is up to date.
[2015-01-30T10:51:31+01:00] DEBUG: Not storing cookbooks/apache2/recipes/mod_python.rb, as the cache is up to date.
[2015-01-30T10:51:31+01:00] DEBUG: Not storing cookbooks/apache2/recipes/mod_authz_host.rb, as the cache is up to date.
[2015-01-30T10:51:31+01:00] DEBUG: Not storing cookbooks/apache2/recipes/mod_proxy_ajp.rb, as the cache is up to date.
[2015-01-30T10:51:31+01:00] DEBUG: Not storing cookbooks/apache2/recipes/mod_expires.rb, as the cache is up to date.
(lots of this for all files)
Soy nuevo en el chef, por lo que podría haber cometido un error de principiante.
knife cookbook upload <cookbook_name>
. Si eso no lo resuelve, intentaknife cookbook list <cookbook_name>
subir la versión y luego ejecutar para asegurarte de que realmente la estás cargando correctamente. Alternativamente, ejecuteknife cookbook download
(en otro directorio) para desplegar lo que el servidor cree que es el código correcto.Respuestas:
Hay un par de cosas en las que puedo pensar que podrían ayudarte.
Verifique que la versión del libro de cocina que está cargando sea la versión más reciente
Un problema común con el control de versiones del libro de cocina es que puede estar modificando localmente la versión del libro de cocina 1.0.0 y cargándola, pero el Servidor Chef ya tiene cargada la versión del libro de cocina 1.0.1. En ese caso, los Clientes Chef normalmente recuperarán la última versión (a menos que se les indique lo contrario) y sus cambios nunca se sincronizarán con el caché local.
Puede ver todas las versiones actuales del libro de cocina en Chef Server a través de:
knife cookbook show apache2
Una solución a esto es la que mencionó: aumente su número de versión más allá de lo que existe en Chef Server, es decir, 1.0.2 y cárguelo.
Otro método es eliminar cualquier otro libro de cocina apache2 del Chef Server y volver a cargar el que desee. Esto no necesita ninguna actualización de número de versión, y el resultado final es que Chef Server tendría un solo libro de cocina apache2.
Valide que sus cambios realmente están llegando a Chef Server
Usando
knife cookbook show apache2 <cookbook version> recipes default.rb
Reemplazar versión, ruta y nombre de archivo, por ejemplo, si desea ver una plantilla llamada foo.erb:knife cookbook show apache2 0.1.0 templates foo.erb
Este comando solicitará el archivo del Servidor Chef y mostrará la salida en su terminal. Esta es una manera simple de determinar que los cambios que realizó se están cargando a través de
knife cookbook upload
.Más allá de esto, si esto no ayuda, agregar los detalles de la
knife
versión, lachef-server
versión, lachef-client
versión, así como un registro de depuración deknife cookbook upload apache2 -VV
sería útil para la depuración adicional.fuente
Primero depure todas las versiones de libros de cocina en el servidor y luego verifique qué versión de libro de cocina está descargando el cliente. si es antiguo, solo verifique si el servidor tiene una versión actualizada. si también es sí, vaya a la interfaz de usuario del servidor de chef y compruebe si hay env. es posible que haya configurado un entorno en el que se especifiquen las restricciones de los libros de cocina. Actualice la versión allí y comenzará a funcionar nuevamente.
fuente
Otra causa de esto puede ser que no todas las dependencias del libro de cocina están presentes en el servidor del chef. Me encontré con esto justo ahora, y la nueva versión de mi libro de cocina aparecía
knife cookbooks list
pero mi cliente no estaba usando la nueva versión. Después de algunas depuraciones, descubrí que Berkshelf, ni el cuchillo habían subido la nueva dependencia para mi libro de cocina. Después de cargar eso, el cliente comenzó a usar la versión más nueva.fuente