Well, the Everything as Code movement is a good idea. Right now, I do way much twiddling of everything from WordPress to AWS Lightsail to registering domains and it is a muddle. Five years ago, this was really hard. I ended up writing a whole series of bash scripts just to get a bunch of Raspberry Pi's to act like a single camera and load things properly. In the end, docker helped a lot, but there was still so much bare metal work to be done just to get the operating system into the right place. Even with Amazon AMIs and Raspbian.
But things have gotten way better, so what are the big things that have happened:
- Docker containers. Wow, this stuff has gotten really mature and most things can run in them. The number of containerized things in Dockerhub is incredible. But that's only part of the problem
- Kubernetes has matured, so there is finally a way to bring up an entire collection of containers in a reasonable way. Before with docker-machine, it was really complicated to do this securely. And the neat thing is that pods just have some goals and they work towards what should be running, so it is a kind of functional specification.
- Helm has matured. Now there are the whole series of "charts" that make it possible to bring things up under Helm.
- Terraform has arrived. This lets you do the lower level setup in a cross-platform way. It is the way that you get to the point of creating virtual hardware on which you can run helm charts that create Kubernetes pods of docker containers. Whew, that's a lot of abstraction!
Well, with all this open-source stuff available, there are some great services to try:
- Amazon EKS is complicated but powerful. And for ease of use, there is DigitalOcean Kubernetes which I use because it is sort of like what Apple would do if they offered cloud services, powerful but easy to understand.
- Bitnami Kubernetes Production Runtime. These are great completed Helm charts which make it easy to just get a set configuration started.
I tried to make this for a WordPress installation and it is a lot of work, but you can get it running. It is still very heavy weight, but watch this trend.
Still it is hard to get all this running properly, but in the long term getting everything into a GitHub repo is the way to go.