| My feedback for those who helped me or are interested in following up :) Pyinfra was the perfect match. I have used their "operations" to pile up the actions that come with the next release: - A new package (apt) - an updtated pip dependency - checking a file - and docker-compose actions to update all containers I was able define my "inventory" easily, which allows me to update my whole fleet with one single command. One caveat here, the timeout is not properly configurable with a ProxyJump. Discussion opened on stackoverflow. Pyinfra idempotency and dry-run approaches allow me to run the update as many times as I want. For the next release, would I need to change anything different, I will simply add a new operation. The beauty of it is that all operations are strictly executed in the order I define them, which mean that any devices that would not have been updated with the first release, would be still updated appropriately with the second release. Cheers ! |