Dear All, I'd like to share what we are doing using Ansible in an academic context and maybe bootstrap some discussions about our specific implementation and needs.
--- TLDR; In our context, distributed system experimenters aren't expert in system provisionning and with Ansible we are able to give them nice abstractions with a good degree of expressivity and safety (e.g idempotency). In this direction, we built EnOSlib https://discovery.gitlabpages.inria.fr/enoslib/ to provide a smooth integration of Ansible with Python. Some initial questions/discussions: - We use "in-memory" inventory, but we deem our implementation fragile Is their a canonical way to populate an Inventory datastructure from scratch ? (see our implementation[1]) - In some specific use case we are pushing our deployments to the scale of thousands of machines and we are seeing the Ansible SSH transport suffer. What would be a good way to scale ? (We already identified few things [5]) --- Some details on the Ansible integration which intensively uses the Python API so that experimenter can stick with their python code as much as possible. - We target different infrastructure but don't rely on dynamic inventory. We rather provide a way to generate an inventory from python. Once the infrastructure resources are ready the inventory is either: + dumped on the file system (and reloaded when needed) + or generated on the fly when needed (in memory)[1]. In my opinion the corresponding code is fragile as it subclasses the Inventory datastructure and populate it manually. - We provide a `run_ansible`[2] function to run any Ansible playbook. - We provide a Python context manager[3] to allow programmer to call Ansible Modules directly from Python. This is considered as a very convenient way to script remote actions on nodes from Python. - Built on this two, we provide built-in services to deploy common tool used when experimenting with distributed systems (e.g [4]) [1] https://gitlab.inria.fr/discovery/enoslib/blob/master/enoslib/enos_inventory.py [2] https://discovery.gitlabpages.inria.fr/enoslib/apidoc/api.html#enoslib.api.run_ansible [3] https://discovery.gitlabpages.inria.fr/enoslib/apidoc/api.html#enoslib.api.play_on [4] https://discovery.gitlabpages.inria.fr/enoslib/apidoc/service.html#monitoring [5] https://discovery.gitlabpages.inria.fr/enoslib/performance_tuning.html -- You received this message because you are subscribed to the Google Groups "Ansible Project" group. To unsubscribe from this group and stop receiving emails from it, send an email to ansible-project+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/ansible-project/a0cd200f-9fec-4a35-bc4a-df523805550f%40googlegroups.com.