sudo y fabric para administrar y desplegar como devop
Igor Támara
Senior Software EngineerAutomatizar labores de servidor permite reaccionar con más precisión y velocidad en ambientes en los cuales un administrador de sistema se encuentra a cargo de varias máquinas. Es más divertido hacer scripts que copiar y pegar, y puede lograrse que varias máquinas de prodcucción estén actualizadas con los parches de seguridad liberados más recientemente, también permite contar con más tiempo para ver fotos de gatos o hacer memes de doge. En esta entrada suponemos que ya está familiarizado con uso de llaves públicas y privadas ssh y quiere hacer varias tareas en varios servidores usando fabric y sudo. También está enfocada a administradores con superpoderes de paquetería descendiente de Debian.
La instalación
Para instalar sudo, como root ejecutar:
apt-get install sudo
Para instalar fabric:
apt-get install pip
pip install fabric
La configuración
Para editar la configuración de sudo, como root
visudo
Se pueden definir el grupo de usuarios, nuestro usuario se llama deploy y creamos el alias para usuario
UPDATERS
User_Alias UPDATERS = deploy
Los comandos que vamos a permitir ejecutar, los separamos por coma, también se puede especificar la orden exacta a usar, por ejemplo en lugar de
/usr/bin/apt-get
se podría usar /usr/bin/apt-get update
. cabe notar que NOPASSWD
hará que sudo no solicite la clave.
UPDATERS ALL = NOPASSWD: /usr/bin/apt-get,/usr/bin/service,/etc/init.d/nginx
Ahora en fabric considerando que nuestro usuario en el servidor es
deploy
, podemos emplear un script llamado fabfile.py
como el siguiente:
from fabric.api import env from fabric.api import sudo env.user = 'deploy' update_server(): sudo('apt-get update', shell=False) sudo('apt-get -y upgrade', shell=False)
El uso
Que se invocaría estando en el mismo directorio con:
fab miservidor.midominio.com,servidor2.otrodominio.com update_server
Adicionalmente se puede ejecutar en paralelo con la opción
-P
.
Enlaces
- Gracias a t3rmin4t0r por la fotografía
- Crear llaves públicas y privadas ssh.
- A more in depth guide to sudo.
- Fabric manual.
Written by Igor Támara
A seasoned developer, Igor brings expertise in designing and building complex software systems. With a focus on quality and performance, they lead projects that drive innovation and deliver reliable solutions to meet user needs.