![Cómo implementar programas en varias máquinas](https://rvso.com/image/50576/C%C3%B3mo%20implementar%20programas%20en%20varias%20m%C3%A1quinas%20.png)
Necesito instalar algunos programas en alrededor de 40 máquinas Kubuntu 13.04 y me gustaría saber qué opciones tengo para hacerlo de la manera más eficiente posible.
EDITAR: Ya tengo los repositorios configurados y todas las máquinas son clones idénticos, sin autenticación LDAP ni servidor centralizado.
Respuesta1
Cualquier software de gestión de configuración servirá, para eso están, sugeriría echarle un vistazo a chef. Esta es la propaganda de su página web:
Chef es una plataforma de automatización que transforma la infraestructura en código. Deja de pensar en términos de servidores físicos y virtuales. Con Chef, su verdadero activo es el código que da vida a esos servidores y a los servicios que brindan. Una infraestructura automatizada puede acelerar su tiempo de comercialización, ayudarle a gestionar la escala y la complejidad y proteger sus sistemas.
Ya sea que su red esté en la nube, en el sitio o híbrida, Chef puede automatizar la forma en que configura, implementa y escala sus servidores y aplicaciones, ya sea que administre 5 servidores, 5000 servidores o 500 000 servidores. No es de extrañar que empresas como Facebook y Amazon hayan elegido a Chef para desafíos de misión crítica.
este vídeo te ayudará mucho: http://www.youtube.com/watch?v=0UXh5EnFZrM
página de inicio: http://www.opscode.com/chef/
Respuesta2
Solo para ampliar la muy buena respuesta de Rahul, puede configurar el acceso sin contraseña a cada una de las máquinas con bastante facilidad utilizando este enfoque:
instalar
sshpass
en su máquina local:sudo apt-get install sshpass
Esto le permitirá pasar la contraseña como argumento de línea de comando:
sshpass -p '<password>' ssh user@server
Crear una clave ssh
ssh-keygen -t rsa
Puede simplificar las cosas permitiendo una frase de contraseña vacía (el resto de esta respuesta asumirá que lo ha hecho; avíseme si sus preocupaciones de seguridad lo prohíben y lo modificaré en consecuencia).
Crea un archivo con todas las IP que te interesan y sus respectivos usuarios y contraseñas, una por línea:
1.2.3.4 bob bobs_password 11.22.33.44 hary harrys_password
Ahora, use
sshpass
para copiar sus archivos clave y, siempre que haya usado una frase de contraseña vacía, permita el acceso sin contraseña a todas las máquinas:while read ip user pass; do sshpass -p "$pass" ssh ssh-copy-id -i ~/.ssh/id_rsa.pub $user@$ip; done < ips.txt
Ahora que tiene configurado el acceso sin contraseña, instale su software en cada máquina (esto supone que
$user
puede ejecutarseapt-get
, básicamente eso$user
esroot
):while read ip user pass; do ssh $user@$ip "apt-get install package; done < ips.txt
Respuesta3
Para objetivos a largo plazo
Si desea una herramienta de automatización que le permita centralizar la administración de los distintos tipos de *nix que se ejecutan en su red y administrar todos los aspectos de la configuración que pueda, entonces puede consultar:
- marioneta
- cocinero
- cfmotor3
Para objetivo a corto plazo
Si desea una solución temporal solo para instalar algún paquete a través de apt-get
o yum
, puede usar shell o perl, script en python.
Si ya ha configurado la autenticación sin contraseña, puede utilizar el siguiente script:
#!/usr/bin/env bash
Servers_list=/opt/servers_list
PackageName="package-name"
for Host in $(< $Servers_list )
do
echo "Installing package on $Host"
ssh "${Host}" apt-get -y install "${PackageName}"
done
Si no tiene autenticación sin contraseña, puede usar expect
una herramienta o paramiko
módulo en Python.