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.
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.
If you later want to port this into terraform, you can.
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.
- create vm instance ( setup firewall, users, network dna, stuff) - install : apache, runtime - install app.