Pssh con LinuxDoesMatter

56:10
 
공유
 

Manage episode 285462057 series 1898587
Player FM과 저희 커뮤니티의 Eduardo Collado 콘텐츠는 모두 원 저작자에게 속하며 Player FM이 아닌 작가가 저작권을 갖습니다. 오디오는 해당 서버에서 직접 스트리밍 됩니다. 구독 버튼을 눌러 Player FM에서 업데이트 현황을 확인하세요. 혹은 다른 팟캐스트 앱에서 URL을 불러오세요.

Hoy nos visita LinuxDoesMatter para hablarnos de pssh y de cómo utilizarlo en producción, en la vida real, para migrar un NAS.

pssh y el set completo de herramientas que viene con el paquete:

  • pssh command – Parallel ssh — comando ssh a muchas maquinas a la vez.
  • pscp command – Parallel scp — copiar fichero a conjunto de máquinas.
  • prsync command – Parallel rsync — sincronizar dir local con muchos remotos
  • pnuke command – Parallel nuke — matar en proceso por nombre en muchas máquinas a la vez.
  • pslurp command – Parallel slurp — traer fichero/s de máquinas remotas a la nuestra local.

Usando comandos ssh tradicionales podríamos realizar una tarea en 350 servidores simplemente dedicando una línea a cada uno, pero como se puede ver no es la forma más óptima.

ssh root@host01 ‘mkdir /ora_backup;chmod 0755 /ora_backup;chown -R group:oinstall /ora_backup’
ssh root@host02 ‘mkdir /ora_backup;chmod 0755 /ora_backup;chown -R group:oinstall /ora_backup’
….
ssh root@host350 ‘mkdir /ora_backup;chmod 0755 /ora_backup;chown -R group:oinstall /ora_backup’

Solución:

Antes de nada explicamos qué es el usuario para accionas masivas, útil tb para ansible/pssh/otros:

1.- Lo vamos a llamar por ejemplo linuxadm.

2.- Todas las máquinas tienen desplegado este usuario linuxadm y la máquina de salto desde donde voy a hacer la accion masiva accede con este usuario sin contraseña a todas las maquinas impactadas. La clave pública de linuxadm esta trasmitida en todas las maquinas a las que se da soporte.

Las máquinas se despliegan así, con la clave pública de linuxadm en

/home/linuxadm/.ssh/authorized_keys.

3.- En todas las máquinas de destino linuxadm es usuario sudoer y puede escalar sin contraseña

#cat /etc/sudoers.d/linuxadm o la lines de abajo tb en /etc/sudoers (visudo)

linuxadm ALL=(ALL) NOPASSWD: ALL en las máquinas de destino

Una vez hechos estos tres primeros pasos vamos a la máquina de salto:

Estamos en la máquina de salto…

me convierto en linuxadm $ sudo su – linuxadm (intro)

$whoami
linuxadm
$ cat hosts.txt
host01
host02

host350
$cat hosts.txt | wc -l
350
$

llegó el momento:

$ pssh -h hosts.txt -o out_mkdir -e error_mkdir -i “sudo mkdir /ora_backup”
$ pssh -h hosts.txt -o out_chmod -e error_chmod -i “sudo chmod 0755 /ora_backup”
$ pssh -h hosts.txt -o out_tchown -e error_chown -i “sudo chown oracle:oinstall /ora_backup”

Comprobar

$ pssh -X -q -h hosts.txt -i “sudo ls -l /ora_backup”

Recordatorio. Linea en /etc/fstab capturando un share NFS

server01:/usr/local/pub /pub nfs nfs auto,noatime,nolock,bg,intr,tcp,actimeo=1800 0 0

para desmontar a mano:

umount /pub o bien umount -l /pub (fozarlo) >>> comentar lsof o fuser

Tarea “migracion de nas”

La cabina (o el servidor NFS) server01 va a ser migrada a srvnew05

En esos 350 servidores toda linea como esta:

server01:/usr/local/pub /pub nfs nfs auto,noatime,nolock,bg,intr,tcp,actimeo=1800 0 0

tiene que acabar como esta:

srvnew05:/usr/local/pub /pub nfs nfs auto,noatime,nolock,bg,intr,tcp,actimeo=1800 0 0

Acciones a emprender…

1.- Crear una ventana de downtime para el cambio. Tal día a tal hora los aplicativos que usan esos shares NFS deben estar parados. El downtime o ventana de tiempo hay que a ser posible respetarlo. Puede prolongarse si fuerza mayor

2.- Copiamos un script para desmontar los shares en las 350 máquinas. pscp

$ pscp -h hosts.txt -o out_copy -e err_copy umount.sh /tmp

3.- Desmontamos todas la entradas implicadas. pssh

$ pssh -X -q -h hosts.txt -o out_umount -e error_umount -i sudo /tmp/umount.sh

Copiamos o copiarán los contenidos de la cabina server01 a la cabina srvnew05
Se respetan el nombre de los shares nfs.

Esto tomará su tiempo pueden ser horas… dentro del periodo de downtime o ventana de mantenimiento.

Recordad que sed -i cambiaría cada ocurrencia de server01 por srvnew05. En todfos los /etc/fstab impactados. El script a tal efecto hará esto cuando toque.

4.- Subimos el script que cambia server01 por srvnew05 en los /etc/fstab y vuelve a montar

$ pscp -h hosts.txt -o out_copy2 -e err_copy2 newname_remount.sh /tmp

Ejecutamos que acabamos de subir a todas las máquinas el script que cambia cada ocurrencia de server01 en cada /etc/fstab por srvnew05 y volverá a montar los filesystems

$ pssh -X -q -h hosts.txt -o out_newremo -e error_newremo -i sudo /tmp/newname_remount.sh

Y eso es todo… puedo comentar lo de la herramienta de tiquets las subtareas y dptos implicados

Comunicar el fin de la tarea a todos los “stakeholders”.

Los reponsables de los aplicativos impactados por el cambio arrancarán sus programas/aplicaciones para ver si todo funciona correctamente.

259 에피소드