I’m building a small Erlang cluster at home, I have 9 nodes so far. Am using
pool since I am just starting with Erlang.
Since I have been a professional DevOps engineer, I decided to use Erlang for all/any deployment on my cluster for S&G. Seems to me Erlang is a better foundation for DevOps than Python, which is used by Ansible. Having written providers in Golang for Terraform, I can see Erlang will be better than Golang. In both cases better because Erlang has the distribution problems solved already. OTP also make it easy to run what devops folk call “agents” on target machines, leading me to think Erlang is a good foundation for all kinds of semi-realtime monitoring and logging.
I’d love to hear about prior art in Erlang used for DevOps and of others interested in this corner of the IT universe!
You probably already know this but the Chef project uses Erlang for their server implementation.
I wrote an article on Linked about our experience with “functional devops”:
Slightly off topic. The product I work on is a cluster of erlang VMs (app is written in Elixir) deployed via k8s on AWS.
Access to the backend is strictly limited, so no Erlang shell/iEX. Debugging was hell. So I wrote a small app (called inject-elixir) that is deployed with an erlang VM.
The developer writes a small amount of Elixir to do whatever with the backend, and sends out a pull request with the code to review. Once approved and merged GitHub actions kicks in, encrypts the script, creates an image of script + inject-elixir and deploys it with the backend. It joins the mesh, and remotely evaluates the script on one of the backend instances which is then executed.
It creates a secure configuration management tool that only accepts reviewed input. Additionally the inject-elixir app monitors progress of the request and can include sanity checks to ensure nothing dangerous can be called.
It looks a bit hard for me.
especially there is not much support on tools for json, xml nor yaml parsers…