Only played with it for a little but it seems well designed an simpler alternative to ansible, chef and other such things.
Only played with it for a little but it seems well designed an simpler alternative to ansible, chef and other such things.
As someone who's never used any of the infrastructure tools, I'm thinking of pyinfra as a way to run shell commands + install dependencies on hosts (declaratively?) on a bunch of hosts via ssh.
Inventory is to sort of take a self-defined inventory on a bunch of hosts?
One final question on usage, would it be possible to sync or reference files from the machine running pyinfra on the remote hosts? Or would that have to be done indirectly via running shell commands to sync?
- ops are (mostly) declarative, but some (server.shell) will always execute the command given
- inventory is just that, basically a list of hosts to target plus associated data, docs page: https://docs.pyinfra.com/en/2.x/inventory-data.html
- absolutely for syncing files, check out the files.put and files.template operations (and the files ops in general): https://docs.pyinfra.com/en/2.x/operations/files.html
What would you say are key differentiators of PyInfra from these existing projects?
For ansible/chef, etc the main reasons/benefits boil down to:
- instant feedback esp on errors, get the stdout/stderr of whatever command pyinfra was executing, there’s no agent or abstraction to hide it
- configure in python rather than yaml+jinja2 mess
- integrate with the whole python package ecosystem
- speed and small overhead as inventories scale