Technically I think you could run ansible in any language. But there would have to be a deep rethink on how to reproduce what had already been created in the python scripts that make up ansible 'workflow'. there is a lot of moving parts in the backend that we don't see.
Get Outlook for iOS<https://aka.ms/o0ukef> ________________________________ From: [email protected] <[email protected]> on behalf of Jon Forrest <[email protected]> Sent: Thursday, February 25, 2021 8:33:16 AM To: [email protected] <[email protected]> Subject: [ansible-project] Ansible Without Python? I had a radical thought the other day. Would it be possible to replace Python as the language used by Ansible with a compiled language, perhaps Go because of its fast compile and link speed? Note that I'm not talking about something like the existing Ansible shell module, which is only useful in environments without Python (or Go). This is actually two questions because the answer depends on whether we're talking about the controller or the client. On the controller it would be a simple matter of software to rewrite Ansible to produce the same Python it produces today. I suspect, but have no data to support, that an Ansible controller would run much faster this way, especially in large environments. Go Ansible on the client would be much harder and I think is less likely to produce positive results. Obviously each client would have to have a working Go environment. I suspect that it would be no more difficult to make this happen than it is to put a working Python environment on a client. At first glance it isn't clear that the size of such an environment would be smaller in Go than in Python. Indeed, the size of the Go 1.16 installer for Windows is roughly 100MB larger than that for Python 3.9.2. However, if this is an issue I suspect that a striped down working Go environment could be created that's much smaller. Another step necessary on the client would be the creation of a pre-compiled Go Ansible runtime. With this present on each client, the Ansible controller would only have to send the minimal amount of Go code to the client, which would then compile that code, and link it with the Go Ansible runtime. It's only because Go has such an incredibly fast compiler and linker that Go Ansible is worth considering. I suspect, but again can't prove, that various clever caching techniques could be using on the client to reduce the amount of compiling and linking that needs to be done. For simple small environments what I'm thinking about wouldn't make much difference. However, there are some huge Ansible environments out there that I could see benefiting from what I have in mind. Thoughts? Cordially, Jon Forrest -- 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 [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/ansible-project/s169lu%24nbn%241%40ciao.gmane.io. -- 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 [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/ansible-project/SYBPR01MB56166A84C8287B50CEBDF950AD9F9%40SYBPR01MB5616.ausprd01.prod.outlook.com.
