domingo, 17 de enero de 2016

Crear distribucion en cluster con SSH

Wikijc:Sistemas distribucioncluster

HOW TO DISTRIBUCION EN CLUSTER POR ssh()


Muchas veces es conveniente considerar a todas nuestras máquinas como un conjunto y poder operar sobre todas ellas casi simultaneamente.
Por ejemplo, para cambiar la clave de sysadmin en todas las máquinas, sin olvidarte de ninguna o forzar una actualización en todas por la existencia de un agujero en alguna aplicación.
Para que esto funcione no necesitamos sincronizar la ID de sysadmin que actualmente es 1000:1000 en este cluster, pero si no lo hacemos se romperán varias cosas en el futuro ej. NFS, NIS, Kerberos, LDAP, etc....
Por lo tanto vamos a usar la ID 1000:1000 para sysadmin.

$ sudo su -
$ vi /etc/passwd
.
.
.
sysadmin:x:1000:1000:sysadmin,,,:/home/sysadmin:/bin/bash
jc:x:1001:1001:Juan Carlos,,,:/home/jc:/bin/bash
.
.
.
$ vi /etc/group
En el editor vi puedo poner el siguiente comando para que me sustituya donde aparece el usuario jc por los 2 usuarios jc y sysadmin
:1,20 s /jc/jc\,sysadmin/g

$ pwconv
$ chown -R jc:jc /home/jc
$ find /tmp -uid 1000 -exec chown -R jc:jc {} \;
$ find / -uid 1000
$ find /var/tmp -uid 1000 -exec chown -R jc:jc {} \;
$ find /media/datos -uid 1000 -exec chown -R jc:jc {} \;
$ mkdir /home/sysadmin
$ chown -R sysadmin:sysadmin /home/sysadmin
$ su - sysadmin
$ passwd sysadmin
Para ver el historial de comandos que hemos usado en una consola ejecutamos el siguiente comando
$ history | tail -50

En este momento el cluster consiste en la siguiente máquinas:
sysadmin@giralda.val.blom.lan
sysadmin@mail.blom.es
sysadmin@mambo.val.blom.lan
sysadmin@olmo.mad.blom.lan
sysadmin@palmera.mad.blom.lan

El establecimiento de un cluster es también imprescindible para usar rsync() o splunk()... pero todos sabemos que que los toreros no usan splunk()...

Para meter una maquina en el cluster tenemos que cortar y pegar lo siguiente como sysadmin en /home/sysadmin
Tenemos que crear las claves para poder entrar sin passwd en cada una de las maquinas
$ ssh-keygen -t rsa
Tambien se puede usar otro metodo de encriptacion que es dsa en vez de rsa $ ssh-keygen -t dsa

$ ls .ssh
$ passwd sysadmin
$ scp sysadmin@mambo.val.blom.lan:/home/sysadmin/.ssh/authorized_keys $HOME/.ssh/
$ cat $HOME/.ssh/*.pub >> $HOME/.ssh/authorized_keys
$ scp $HOME/.ssh/authorized_keys sysadmin@mambo.val.blom.lan:/home/sysadmin/.ssh/authorized_keys
$ ssh sysadmin@mambo.val.blom.lan dist-renew-keys
$ ls .ssh
$ mkdir bin
$ scp sysadmin@mambo:bin/* bin/
$ cd bin
$ ls
$ vi dist-cp
  1. !/bin/bash
  2. mrp, copiar archivos al mismo sitio las demas máquinas en el cluster
usage() { echo -e "Copy local file mask result to the cluster. \nusage: $0 \n" exit 1 }

loop() { for host in `cat /home/sysadmin/.ssh/authorized_keys | cut -f 3 -d " "| sort | uniq`;\
        do echo $host; scp -B $params ${host}:$params ; done
exit $? }
params="$@"
[ -z $1 ] && usage
if [ ! -z $2 ] && [ -r $2 ] ; then
 loop
fi
[ -r $1 ] && loop
usage
$ vi dist-cmd
  1. !/bin/bash
  2. mrp, copiar archivos al mismo sitio las demas máquinas en el cluster
usage() { echo -e "Run on each machine in the cluster. \nusage: $0 \n" exit 1 }

loop() { for host in `cat /home/sysadmin/.ssh/authorized_keys | cut -f 3 -d " "| sort | uniq`;\
        do echo $host; ssh ${host} $params ; done
exit $? }
params="$@"
[ ! -z $1 ] && loop
usage
$ vi dist-renew-keys
  1. !/bin/bash
  2. mrp, copiar mi authorized keys a todas las demas máquinas en el cluster
  3. fijate que este script asume tener **LA** lista y sobreescribe todos los demás
for host in `cat /home/sysadmin/.ssh/authorized_keys | cut -f 3 -d " "| sort | uniq`; do echo $host; scp -q /home/sysadmin/.ssh/authorized_keys ${host}:/home/sysadmin/.ssh/ ; done
$ ./dist-cmd ls -l
$ ./dist-cmd ls -l
$ ./dist-cmd ls -l /etc
$ ./dist-cmd ls -l /etc
$ scp sysadmin@mambo:.bashrc .
$ ls -al

Ahora nuestra maquina también estara en la distribución y debe de funcionar
$ for host in `cat $HOME/.ssh/authorized_keys | cut -f 3 -d " "| sort | uniq`; do echo $host; ssh $host "ls -al"; done
Todos los scripts de comandos distribuidos comienzan con "dist-" y se guardan en /home/sysadmin/bin
$ ls -l /home/sysadmin/bin
total 12
-rwxr-x--- 1 sysadmin sysadmin 370 2008-02-06 16:40 dist-cmd
-rwxr-x--- 1 sysadmin sysadmin 456 2008-02-06 16:35 dist-cp
-rwxrwx--- 1 sysadmin sysadmin 350 2008-02-06 13:22 dist-renew-key

Para distribuir nuestro fichero de claves a todas las maquinas del cluster
$vi /home/sysadmin/bin/dist-renew-key
Para ver las maquinas que integran el cluster lo hacemos con el usuario sysadmin
$su - sysadmin
$for host in `cat /home/sysadmin/.ssh/authorized_keys | cut -f 3 -d " "| sort | uniq`; do echo $host; done

Para ver las maquinas que estan en el cluster lo hacemos viendo el fichero authorized_keys
$vi /home/sysadmin/.ssh/authorized_keys

Tenemos que cambiar el lenguaje por defecto para poder traducir los ficheros de log
$ vi /etc/default/locale
  1. LANG="es_ES.UTF-8"
LANG="C"

Para poner alias fijos se edita el fichero .bashrc y se añade las lineas con los alias
$ vi .bashrc
alias v='sudo tail -30 /var/log/syslog'
alias ll='ls -l'
alias la='ls -A'
alias l='ls -CF'
alias f='tail -f /var/log/syslog'

Para que solo los usuarios que queramos puedan hacer ssh remotamente, tenemos que poner al final del fichero /etc/ssh/sshd_config la siguiente linea con los usuarios autorizados
...
AllowUsers planfor itapnoa
...
Para que los cambios de .bashrc se cojan sin reiniciar la sesion tenemos que ejecutar el comando siguiente
$source /root/.bashrc
o
$source /home/usuario/.bashrc

No hay comentarios:

Publicar un comentario

Nota: solo los miembros de este blog pueden publicar comentarios.