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.

Reply via email to