Utilizing Virtualization and Containers can increase the stability, agility, and efficiencies of an organizations infrastructure. With server virtualization, we can segment a single physical server into multiple virtual machines, each with its own operating system and resources. Since multiple server instances can run on a single piece of hardware and fewer physical servers will be needed to meet a company’s infrastructure needs, this can greatly reduce hardware and energy costs.
Containerization, such as Docker, has allowed virtualized systems to be extremely lightweight by sharing the Operating System with the host. Docker and Vagrant make use of configuring the virtualized environment in configuration files, Dockerfile and Vagrantfile. This provides the ability 1) configuration management of virtualized systems and the ability to automate the provisioning of the systems supporting DevOps.
Combining automated CM technologies such as Ansible, Chef, Puppet with containers and virtualization allows for fully automating software platforms from the ground. At Geocent we have developed a library of CM scripts used as building blocks to automate the provisioning of systems and software. For example, separate Ansible scripts for installing Java, PostgreSQL, and Tomcat can be reused by any application using those components within new projects.