scripts! OMG scripts!
I've built out automation processes for hosts using version control and an automation tool to ensure that the hosts were built, managed, monitored and had (a whole mess of different) applications installed on them correctly, consistently and repeatably. The backbone of this was scripting. Some in python, some in perl, some in bash, some in rshell, some in sh. I've got core application scripts in ksh that were deployed to an app over 11 years ago that are *still* in use today. I've written a *very* few powershell scripts to monitor and maintain a non windows based application on windows hosts (that I very much despise having to deploy to windows boxes, hopefully never again since MS has ssh for windows). Most of my scripts were written to do one thing and one thing only, and to bail if the environment they were pointed at did not match what they were meant to do. One of the reasons I'm still kept around is because I can go through the mental process of (from box on loading dock to plugged in, built, deployed, connected, made operational) and pick out the hundreds of steps that go into each step of that flow.
The biggest issue anyone ever runs into in scripting is *not* comprehending that things can go *wrong*. Error cases are *hard* when you haven't had time to think them through or test them out.