20 pontos por GN⁺ 2024-05-01 | 3 comentários | Compartilhar no WhatsApp
  • 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.py e 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

 
savvykang 2024-05-02

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.

 
xguru 2024-05-01

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.

 
GN⁺ 2024-05-01
Comentários do Hacker News

Resumo:

  • O Ansible exige um interpretador Python no sistema de destino, mas o Pyinfra funciona com apenas um shell. O Pyinfra é um software subestimado.
  • O Ansible é bom, mas no fim você acaba escrevendo Python em strings YAML. Nesse caso, é melhor usar Python diretamente desde o início.
  • Um desenvolvedor do Pyinfra comentou recomendando o uso da v3, atualmente em beta. Ela é estável e está sendo preparada para lançamento oficial.
  • Há vários links para posts antigos no HN sobre o Pyinfra.
  • Um usuário migrou do Ansible para o Pyinfra e avaliou que o Pyinfra é muito mais limpo. Também gostou de poder usar o Pyinfra em ambientes Fedora CoreOS sem Python.
  • Também há a opinião de que o Puppet é a ferramenta mais adequada nessa área. Ele é simples e, quando necessário, oferece recursos de linguagem de programação. Ainda assim, precisa melhorar em usabilidade.
  • Usar ferramentas de CM (gerenciamento de configuração) pode ser muito difícil. Até especialistas concordam que o custo de manutenção é alto. Elas deveriam evoluir para uma integração mais próxima com contêineres.
  • Python pode não ser a melhor opção para gerenciamento de infraestrutura. Há limitações como build de binários, reprodutibilidade de pacotes e ausência de tipagem estática.
  • Foi apresentada uma forma simples de implantar serviços combinando Pyinfra, Docker e Tailscale. No passado, talvez se usasse Kubernetes, mas ele é exagerado para isso e também difícil de depurar.
  • Graças ao Pyinfra, foi possível evitar problemas crônicos do Ansible. O Pyinfra é conveniente porque permite definir inventário e variáveis com flexibilidade usando scripts Python.