Every application that you build needs an infrastructure that can be as simple as a server or as complex as a large collection of software and other utilities. Any application in the least would require a server with relevant software configured. Smaller applications can do with a simple setup but it becomes complex for huge enterprise-level and business-critical applications.
The story doesn’t end here. Every time a new environment is added the entire process is repeated and done manually. This can become a daunting task. Moreover, in case of a traditional infrastructure where there are multiple developers working on a project, there is a possibility that the codes may get overwritten. If your organisation does not maintain any code versioning, it is equally daunting to recall the changes.
Thus, if you have an offshore development team, or a freelancer working on your designs, there is a possibility that you cannot create an environment on their local machines with similar server configuration.
It is important for any good infrastructure to have characteristics like automation, consistency, agility, easy extensibility, trackability of changes, automatic availability of changes to everyone, etc. You can incorporate all these factors in your infrastructure by managing it as a code and using a tool like Git to maintain it. This way it becomes the project source code and anyone taking a pull from the repository has the same code.
This blog talks about Vagrant, an automation tool that helps in creating and configuring lightweight, reproducible, and portable environments by providing a simple yet effective command line interface to manage virtual machines. In its simplest form, Vagrant is an automation tool with a domain-specific language (DSL) that is used to automate the creation of VMs and VM environments. The purpose of this tool is that users can create a set of instructions to set-up or configure one or more VMs. The end result is always the same irrespective of the number of times users use the pre-created set of instructions. This really makes life easy for developers who need a consistent development environment or those who want to share a demo environment with other users.
If you wish to know more about Vagrant provisioners, vagrant files, packaging, and sharing, etc., download our ebook on How to manage AEM infrastructure using Vagrant.