- Herramienta para automatizar infraestructura usando Python
- Puede escalar rápidamente desde un solo servidor hasta miles de servidores
- Adecuada para ejecutar comandos ad hoc, desplegar servicios y gestionar configuraciones
Por qué usar pyinfra
- Puede ejecutarse a gran velocidad con rendimiento predecible sobre miles de objetivos
- Permite depuración inmediata con salida en tiempo real de stdin/stdout/stderr (
-vvv) - Ofrece diff y dry run antes de aplicar cambios, brindando idempotencia (Idempotent operations)
- Ofrece extensibilidad con todo el ecosistema de paquetes de Python
- Puede ejecutarse sin agentes en cualquier dispositivo con SSH disponible
- Se integra con conectores como Docker, Terraform y Vagrant
Inicio rápido
- Instala pyinfra con el comando
pip install pyinfra - Es posible ejecutar comandos mediante SSH
pyinfra my-server.net exec -- echo "hello world"
- Es posible especificar objetivos como Docker, la máquina local y otros conectores
pyinfra @docker/ubuntu exec -- echo "Hello world"pyinfra @local exec -- echo "Hello world"
- Además de ejecutar comandos, se pueden definir estados usando operaciones
pyinfra @docker/ubuntu apt.packages iftop update=true _sudo=true
- Esto se puede guardar en un archivo Python como
deploy.pyy ejecutarlo - Se puede desplegar todo combinando inventario, operaciones y código Python
Para más detalles, consulta la guía de inicio, la guía de uso de operaciones, el uso de inventario y datos, los argumentos globales y el uso del CLI, o revisa los ejemplos documentados.
Opinión de GN⁺
- Como herramienta de despliegue, la seguridad y el control son importantes, pero al estar enfocada en funciones de gestión de infraestructura, puede haber posibilidades de problemas en el proceso de despliegue
- Como pyinfra no impone por sí mismo mejores prácticas de despliegue, el equipo debe definir y gestionar reglas por separado
- Usar Python como lenguaje permite aprovechar su ecosistema y resulta familiar para desarrolladores, pero tiene una barrera de entrada frente a otras herramientas comunes de despliegue
- Parece una herramienta adecuada para escenarios de despliegue simples y flexibles; para despliegues complejos de nivel empresarial, herramientas más maduras como Ansible o Puppet podrían ser más apropiadas
- Es positivo que se integre con herramientas IaC como Terraform o Pulumi, aunque queda la duda de si hay muchas tareas que no puedan resolverse solo con ellas
3 comentarios
Creo que hace falta una forma de definir playbooks en Ansible aparte de YAML. Me parece un enorme desperdicio que Ansible vuelva a implementar funciones de Python como filtros de jinja para ofrecerlas con el fin de procesar datos. No habría problema si el esquema de los facts del playbook coincidiera con la entrada de las tasks, pero en la práctica hay muchas más situaciones en las que el procesamiento intermedio de datos es inevitable. También da la impresión de que haber usado Jinja para el procesamiento de datos no fue una decisión técnica muy visionaria.
pyinfra - herramienta de automatización de infraestructura basada en Python
Ya lo había compartido una vez cuando salió la versión 1.0, pero han seguido actualizándolo activamente.
Ahora va por la versión 2.92, y la 3.0, que actualmente está en beta, se lanzará pronto.
Opiniones en Hacker News
Resumen: