¿Cómo puedo administrar apt de manera eficiente en varias máquinas?

11

Administro alrededor de 30 servidores Ubuntu usando puppet. He visto muchas referencias a cron-apt y apticron como enfoques para mantener sus paquetes actualizados, pero no he podido encontrar una manera de administrar el proceso de manera centralizada. Con cront-apt / apticron todavía necesitaría iniciar sesión en cada host y ejecutar aptitude updatepara realizar la actualización. Sin mencionar las notificaciones de revisión de las 30 máquinas cada vez que se actualiza un paquete principal.

Tiene que haber una mejor manera. ¿Alguna sugerencia?

Insyte
fuente

Respuestas:

3

El paisaje puede ser de su interés. Esta es la herramienta de administración "oficial" para administrar grandes implementaciones de Ubuntu, y Canonical probablemente esté muy interesado en obtener su dinero para su uso.

REEDITAR:

Primero, un descargo de responsabilidad; No he usado la duplicación para Debian o Ubuntu, por lo que no estoy familiarizado con el software.

En segundo lugar, parece que apt-mirror sería una solución "demasiado pesada", mis disculpas. La idea original era que tendría una máquina de prueba separada (o un entorno de prueba, ¿probablemente una máquina virtual?) Para implementar la actualización. Una vez que esté satisfecho con el rendimiento de la actualización, extraerá / colocará el paquete en su espejo de "implementación" (habrá un espejo local de las fuentes oficiales y un espejo secundario para las actualizaciones que desea implementar). Las máquinas remotas luego ejecutarían una actualización a una hora preestablecida y la extraerían de su espejo de "implementación" en cada máquina, un trabajo cron que consiste en:

apt-get update && apt-get upgrade --quiet --assume-yes

Desafortunadamente, cuando comencé a leer los detalles, parece que apt-mirrorsacará todo tipo de cosas y no solo los paquetes que busca. Entonces, voy a abandonar esta idea, aunque el concepto tiene algún mérito.

Avery Payne
fuente
El paisaje se ve interesante. Tendré que mirar más de cerca eso. No tengo claro cómo ejecutar un espejo local apto (lo que hago actualmente) me ayudaría a aprobar / revisar las actualizaciones pendientes. ¿Puedes aclarar eso?
Insyte
14

Un compañero de trabajo descubrió y examinó brevemente apt-dater, que es un "administrador de actualización remota de paquetes basado en terminal".

Utiliza una interfaz basada en maldiciones para administrar actualizaciones en todos sus hosts, o grupos de hosts, etc. Admite el registro de la sesión completa de apt, incluidos los errores que puedan encontrarse, etc.

Se basa en ssh y sudo en las máquinas administradas.

ver http://www.ibh.de/apt-dater/

No lo he usado yo mismo, así que no puedo respaldarlo, pero suena cerca de lo que estás buscando.

jeff
fuente
Esto se ve muy prometedor. Insyte, voy a recomendar esta respuesta sobre la mía. Si bien puede hacer todos los pasos que he descrito, ¿desea realmente invertir el tiempo en eso, cuando probablemente podría hacer una configuración muy rápida de esto y simplemente seguir con la vida? @ Jeff, +1 para una buena sugerencia.
Avery Payne
4

Como ya está utilizando Puppet, la forma más fácil de hacerlo (y la mejor para el control de cambios / seguimiento) es especificar la versión deseada de los paquetes que desea instalar en el manifiesto de Puppet. No pierdas de vista la lista de anuncios de seguridad, y cuando aparezca algo que utilizas solo actualizas Puppet para que diga "instala esta nueva versión de este paquete". Suponiendo que está utilizando el control de revisión en sus manifiestos, entonces sabe cuándo se cambió la "política", y los informes de Puppet le muestran exactamente cuándo se realizó el cambio (para que pueda correlacionarlo fácilmente con cualquier evento de registro posterior).

womble
fuente
Esto es más o menos lo que hacemos. No utilizamos el tipo de paquete de títeres, ya que eso haría que cada servidor instale todos los paquetes. En cambio, escribimos un archivo en el servidor con el nombre y la versión del paquete y luego usamos un script para ejecutarlos y verificamos si están instalados y luego intentamos instalarlos. La segunda parte es un script que lee mi carpeta de correo electrónico con correos electrónicos de apticron y toma todos los paquetes que necesitan actualizarse y reescribe el archivo de manifiesto. Todavía no estamos completamente seguros de qué tan bien funciona este método.
David Pashley
2
¿Por qué el tipo de paquete Puppet instala todos los paquetes en cada máquina? Coloca las estrofas para cada paquete en la clase relevante o tipo definido, por lo que solo se instala en la (s) máquina (s) adecuada (s). Si desea centralizar la lista de versiones en un solo archivo, tenga una gran lista de recursos virtuales y luego realice cuando sea necesario.
womble
2

Eche un vistazo a clusterssh (apt-get install clusterssh):

$ cssh servidor1 servidor2 servidor3 ...

Thiago Figueiro
fuente
1
En realidad, esto todavía funciona en 10.9.3 ... es un poco divertido usarlo
Jonathan S. Fisher
1

Sin haberlo pensado realmente antes, mi primera idea sería algo similar a lo que avery ha sugerido, especialmente si ya tiene un entorno de prueba.

Básicamente, configura sus máquinas de producción para que se actualicen automáticamente desde su propio repositorio local, y solo actualiza este repositorio después de haber actualizado su entorno de prueba a la versión más nueva de lo que ejecuta.

Apticron no escala bien, está diseñado para ejecutarse en entornos bastante pequeños, pero tiene algunos puntos positivos:

  • No solo le envía una lista, sino también los registros de cambios para los paquetes que se actualizarán.
  • Para obtener los registros de cambios, descarga los paquetes, por lo que cuando actualiza no tiene que esperar a que se descarguen.
el otro recibir
fuente