- 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.pypuis 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
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.
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.
Avis Hacker News
Résumé :