- Ferramenta para automatizar infraestrutura usando Python
- Escala rapidamente de um único servidor até milhares de servidores
- Adequada para execução de comandos ad hoc, implantação de serviços e gerenciamento de configuração
Por que usar o pyinfra
- Execução ultrarrápida com desempenho previsível em milhares de alvos
- Depuração imediata com saída stdin/stdout/stderr em tempo real (
-vvv) - Suporte a diff e dry run antes de aplicar alterações, oferecendo idempotência (Idempotent operations)
- Extensibilidade com todo o ecossistema de pacotes Python
- Funciona sem agente em qualquer dispositivo com SSH disponível
- Integração com conectores como Docker, Terraform e Vagrant
Início rápido
- Instale o pyinfra com o comando
pip install pyinfra - É possível executar comandos via SSH
pyinfra my-server.net exec -- echo "hello world"
- Também é possível definir como alvo Docker, máquina local e outros conectores
pyinfra @docker/ubuntu exec -- echo "Hello world"pyinfra @local exec -- echo "Hello world"
- Além de executar comandos, é possível definir estados usando operações
pyinfra @docker/ubuntu apt.packages iftop update=true _sudo=true
- Você pode salvar isso em um arquivo Python como
deploy.pye executá-lo - É possível implantar tudo combinando inventário, operações e código Python
Para mais detalhes, consulte o guia de introdução, o guia de uso de operações, o uso de inventário e dados, os argumentos globais e o uso da CLI, ou confira os exemplos documentados.
Opinião do GN⁺
- Como ferramenta de implantação, segurança e controle são importantes, mas como o foco está nas funções de gerenciamento de infraestrutura, pode haver risco de problemas no processo de deploy
- Como o próprio pyinfra não impõe boas práticas de deploy, a equipe precisa definir e gerenciar regras por conta própria
- O uso de Python como linguagem é uma vantagem por aproveitar o ecossistema Python e ser familiar aos desenvolvedores, mas a barreira de entrada pode ser maior em comparação com outras ferramentas de deploy comuns
- Parece ser uma ferramenta adequada para cenários de deploy simples e flexíveis, enquanto para implantações corporativas complexas ferramentas mais maduras como Ansible e Puppet podem ser mais apropriadas
- A integração com ferramentas de IaC como Terraform ou Pulumi é positiva, mas fica a dúvida se há muitas tarefas que elas sozinhas já não conseguem resolver
3 comentários
Acho que é necessário haver uma forma de definir playbooks no Ansible além de YAML. O fato de o Ansible reimplementar recursos do Python como filtros do Jinja para oferecer processamento de dados me parece um desperdício enorme. Talvez não haja problema se o esquema dos facts do playbook coincidir com a entrada das tasks, mas, na prática, há muito mais casos em que o processamento intermediário de dados é inevitável. Também acho que o uso de Jinja para processamento de dados talvez tenha sido uma decisão técnica meio míope.
pyinfra - ferramenta de automação de infraestrutura baseada em Python
Eu já tinha postado uma vez quando a versão 1.0 foi lançada, mas ela continua sendo atualizada ativamente.
Agora está na versão 2.92, e a 3.0, que atualmente está em beta, deve ser lançada em breve.
Comentários do Hacker News
Resumo: