Objectives: Moore's Law and widespread virtualization techniques have made IT infrastructures bigger, more distributed and much more complex than before. Many rare operations are now frequent and what could have been done manually is now a time consuming (and error prone) activity. So our objective is to automate all the interactions with the software, and this means having a way to create virtual machines, provisioning the hardware, configuring the operating system, deploying the application and keeping all the steps monitored and controlled, and repeatable on demand.
- To spend less and less time in boring and repetitive tasks.
- To spend more time and energy in creative tasks, and to improve the business value of what we do.
- To eliminate errors due to human factors.
How: Writing software in high level programming languages as Python, either with libraries and frameworks (Fabric, Salt) o in Domain Specific Languages (DSLs) created to coordinate many system at once, keep configuration in sync and manage remotely a huge amount of different uses cases (Puppet, Ansible, CFEngine3). We also realize sort of "robots" to continuously perform the same actions (for example, using Jenkins to automate the build and test phase of a software).