- create vm instance ( setup firewall, users, network dna, stuff) - install : apache, runtime - install app.
- create vm instance ( setup firewall, users, network dna, stuff) - install : apache, runtime - install app.
Every single answer goes straight to name dropping various specific techs/tools and I don’t doubt it really is the most simple way for each poster. But I think a much better answer, would be a bunch of questions that dig into what kind of problem you are trying to solve, what are the circumstances, skillset, limitations, budget, is it 1 tiny private app for fun or a couple of apps your team or even company depends on etc.
Because it depends on the specifics in _your_ situation and jumping straight to _a_ solution, without understanding _your_ problem, is imho part of the over-complexity-problem in our industry.
Here is my suggestion for keeping it simple, by solely relying on skills you will need anyways: git and shell scripting.
- Write a shell script that executes all those commands you would run manually to set up your system.
- Put up a git repository in the `/` directory, `.gitignore` everything by default, and explicitly git-notignore all those configuration files and user files/maintenance scripts which are relevant for your environment. Use githooks to also track/restore file permissions and ownerships of these tracked files.
You can also script the process with (for example) Terraform.
- packer for images
- terraform for prod infra
- vagrant for local dev
- pssh for ci/cd and config management
And in some cases I would say they'd be far more efficient with this setup.
If you later want to port this into terraform, you can.