20 points par GN⁺ 2024-05-01 | 3 commentaires | Partager sur WhatsApp
  • Un outil pour automatiser l’infrastructure avec Python
  • Peut s’étendre rapidement d’un seul serveur à plusieurs milliers
  • Adapté à l’exécution de commandes ad hoc, au déploiement de services et à la gestion de configuration

Pourquoi utiliser pyinfra

  • Exécution ultra-rapide sur des milliers de cibles avec des performances prévisibles
  • Débogage immédiat grâce à la sortie stdin/stdout/stderr en temps réel (-vvv)
  • Prise en charge des diff et du dry run avant l’application des changements, pour garantir l’idempotence (Idempotent operations)
  • Extensibilité via tout l’écosystème des packages Python
  • Fonctionne sans agent sur tout appareil accessible en SSH
  • Intégré avec des connecteurs comme Docker, Terraform et Vagrant

Démarrage rapide

  • Installer pyinfra avec la commande pip install pyinfra
  • Possibilité d’exécuter des commandes via SSH
    • pyinfra my-server.net exec -- echo "hello world"
  • Possibilité de cibler Docker, la machine locale et d’autres connecteurs
    • pyinfra @docker/ubuntu exec -- echo "Hello world"
    • pyinfra @local exec -- echo "Hello world"
  • Au-delà de l’exécution de commandes, il est possible de définir l’état à l’aide de tâches
    • pyinfra @docker/ubuntu apt.packages iftop update=true _sudo=true
  • Il est possible d’enregistrer cela dans un fichier Python comme deploy.py puis de l’exécuter
  • En combinant inventaire, tâches et code Python, il est possible de tout déployer

Pour en savoir plus, consultez le guide de démarrage, le guide d’utilisation des tâches, l’utilisation de l’inventaire et des données, les arguments globaux et l’utilisation de la CLI, ou encore les exemples documentés.

L’avis de GN⁺

  • Pour un outil de déploiement, la sécurité et le contrôle sont essentiels, mais l’accent étant mis sur les fonctions d’outil de gestion d’infrastructure, cela peut créer des problèmes dans le processus de déploiement
  • pyinfra n’impose pas lui-même de bonnes pratiques de déploiement ; l’équipe doit donc définir et gérer ses propres règles
  • Le choix de Python permet de tirer parti de son écosystème et reste familier pour les développeurs, mais la barrière à l’entrée peut être plus élevée que pour d’autres outils de déploiement courants
  • Cela semble être un outil adapté à des scénarios de déploiement simples et flexibles ; pour des déploiements complexes de niveau enterprise, des outils plus matures comme Ansible ou Puppet peuvent être plus appropriés
  • L’intégration avec des outils IaC comme Terraform ou Pulumi est appréciable, mais on peut se demander s’il existe vraiment beaucoup de cas qu’ils ne couvrent pas déjà à eux seuls

3 commentaires

 
savvykang 2024-05-02

Je pense qu’il faut une autre manière de définir les playbooks dans Ansible que le YAML. Le fait qu’Ansible réimplémente des fonctionnalités Python sous forme de filtres jinja pour le traitement des données me semble être un énorme gaspillage. Cela ne poserait pas de problème si le schéma des facts du playbook correspondait à l’entrée des tâches, mais en réalité, les situations où un traitement intermédiaire des données est inévitable sont bien plus fréquentes. J’ai aussi l’impression que le choix d’utiliser Jinja pour le traitement des données n’était pas une décision technique très clairvoyante.

 
xguru 2024-05-01

pyinfra - outil d’automatisation d’infrastructure basé sur Python

Je l’avais déjà partagé à l’époque de la sortie de la version 1.0, mais le projet continue d’être mis à jour très activement.
Il en est maintenant à la version 2.92, et la 3.0, actuellement en bêta, devrait être publiée prochainement.

 
GN⁺ 2024-05-01
Avis Hacker News

Résumé :

  • Ansible nécessite un interpréteur Python sur les systèmes cibles, alors que Pyinfra n’a besoin que d’un shell. Pyinfra est un logiciel sous-estimé.
  • Ansible est bien, mais au final on se retrouve à écrire du Python sous forme de chaînes YAML. Dans ce cas, autant utiliser directement Python dès le départ.
  • Un développeur de Pyinfra a commenté en recommandant d’utiliser la v3, actuellement en bêta. Elle serait stable et en préparation pour une sortie officielle.
  • Plusieurs anciens billets HN à propos de Pyinfra sont liés.
  • Un utilisateur est passé d’Ansible à Pyinfra et juge Pyinfra bien plus propre. Il a aussi apprécié de pouvoir utiliser Pyinfra dans un environnement Fedora CoreOS sans Python.
  • Certains estiment que Puppet est l’outil le plus adapté dans ce domaine. Il reste simple tout en offrant, si nécessaire, des capacités de langage de programmation. En revanche, son ergonomie devrait être améliorée.
  • L’usage des outils de CM (gestion de configuration) peut être très difficile. Même les experts s’accordent sur leur coût de maintenance élevé. Ils devraient évoluer vers une intégration plus étroite avec les conteneurs.
  • Python n’est peut-être pas adapté à la gestion d’infrastructure. Il a des limites en matière de compilation de binaires, de reproductibilité des paquets et d’absence de typage statique.
  • Une méthode simple pour déployer des services en combinant Pyinfra, Docker et Tailscale est présentée. Par le passé, on aurait utilisé Kubernetes, mais c’est excessif et difficile à déboguer.
  • Grâce à Pyinfra, il a été possible d’éviter les problèmes chroniques d’Ansible. Pyinfra permet aussi de définir de façon souple l’inventaire et les variables avec des scripts Python, ce qui est pratique.