The most straightforward method of automating.
Breaks down a manual task into discrete steps, define each step in code with any scripting language (Bash, Python, Ruby), and execute the script on the server.
Great for small, one-off tasks.
Problems:
- Using general-purpose programming language gives flexibility, but also brings possible chaos when each developer will write script in its own manner.
- Idempotence is difficult to implement.
- Costly to implement in a way to manage a large number of servers, instead of a local one.