Back to Blog

All About Creating Test Environment in Vagrant

Avanish Pandey

August 5, 2022

All About Creating Test Environment in Vagrant

All About Creating Test Environment in Vagrant

It is an item evolved by HashiCorp. It empowers engineers to rapidly create a situation like the creation condition on the head of a virtualization domain, for example, VirtualBox, instance.

Vagrant permits engineers to compose content in Ruby (and other scripting dialects, for example, Shell orders).

Be that as it may, so as to do this effectively, the creation condition more likely than not been produced through a type of framework building scripting dialects (Infrastructure as Code — IaC, for example, Shell, Ansible, or Puppet. In the event that this IaC content exists it very well may be utilized to assist Vagrant with creating a reproduction framework in a VM (Virtual Machine) condition.

This implies when an engineer runs the Vagrant content it will fabricate/generate another VM which is the as same OS (Operating System) as in the creation condition and gives similar setups.

Setting up a test domain with a wide range of working frameworks and variants can be a tedious errand. Introducing the diverse working frameworks and designing them for tests or advancement can occupy a great deal of time. Vagrant makes this activity less complex, by making it simple to set up virtual machines for testing and improvement.

Vagrant is a basic yet integral asset to make and oversee VMs for testing and advancement. The simple interface permits us to make, start, stop, or pulverize VMs with a solitary order. Vagrant is a utility that permits 

you to oversee VMs however it’s anything but a hypervisor itself. With Vagrant, it is conceivable to computerize the arrangement of a VM inside various hypervisors like Virtualbox.

Vagrant is an important device on the off chance that you need a couple of VMs to test a worker application. It’s additionally a free instrument and acts like a mechanization layer between the client and a virtual domain. Gone are the times of introducing Hyper-V, VMware ESXi, or some other hypervisor on a worker someplace, make VMs, make the VHDs, set up systems administration, and so on., just to do some basic testing. This is the place Vagrant spares you huge amounts of time.

This article will be tied in with taking your abilities up an indent in the event that you’d prefer to set up a whole domain. You’ll figure out how to test a high-accessibility circumstance, for example, setting up load balancers, bunches, and so forth. I’ve additionally actually utilized this to test Ansible overseeing Windows, which required a Linux and a Windows have.

How about we get into the coordinations of how to go through Vagrant to set three VMs on your nearby machine. Vagrant isn’t constrained to three VMs, yet my machine is! For this showing, I will make a Ubuntu Linux worker, a Windows Server 2012 R2, and a Windows Server 2016 VM. I’ll be raising these VMs on Oracle’s Virtualbox. VirtualBox is free, has full help with Vagrant, and there’s as of now a ton of Vagrant boxes as of now made for VirtualBox.

I’ll head on over to the open Vagrant box index and pick the three boxes I’d prefer to utilize. I’ll pick the most recent Ubuntu box, a container from Matt Wrock with Windows Server 2012 R2, and a Windows Server 2016 TP5 box. Since I’ve chosen each of the crates I’ll be raising, I’ll have to add references to each of the containers in my VagrantFile.

Expecting you’ve just got Vagrant and VirtualBox introduced, next we have to get into your VagrantFile setup record. Now, you’ve most likely previously got a VagrantFile made with, maybe, a solitary VM that looks something like this:


All About Creating Test Environment in Vagrant: Introduce Vagrant

To utilize Vagrant, an upheld hypervisor should be introduced just as Vagrant itself. The simplest arrangement, to begin with, is to introduce Virtualbox by means of your framework’s bundle supervisor. In the accompanying order for Debian based frameworks, Vagrant and Virtualbox are both introduced.

$ sudo apt get introduce virtualbox Vagrant

Beginning the first VM

With Vagrant, VMs are made from VM pictures which can be straightforwardly downloaded from Vagrant. Such VM pictures are designated "boxes" and can be found straightforwardly from the open Vagrant box inventory.

To begin making your first VM, make another catalog to work in. This registry is known as the Vagrant venture catalog. Inside this Vagrant undertaking registry, execute the accompanying order.

$ Vagrant init centos/7

A ‘Vagrantfile’ has been put in this catalog. You are currently prepared to ‘Vagrant up’ your first virtual condition! It would be ideal if you read the remarks in the Vagrantfile just as documentation on ‘’ for more data on utilizing Vagrant.

The "init" order will make the "Vagrantfile" which is the arrangement document of the Vagrant venture. The "centos/7" in the order is the name of the CentOS 7 box picture from the Vagrant box inventory. This crate picture will be utilized as the base of the VM.

To begin the VM utilizing Vagrant, simply run the accompanying order. Downloading the container picture independently isn’t required, as the Vagrant will download it naturally on the off chance that it was not as of now downloaded.

The above "up" order educates Vagrant to fire up the VM. On the primary beginning, the Vagrant will download the container to begin from. The crate is put away in the ".Vagrant/" catalog structure in your client’s home registry. On the off chance that the container is utilized again on an alternate venture, it isn’t downloaded a subsequent time however reused. After the download, the Vagrant adds a VM to the hypervisor (for this situation Virtualbox), includes some setup, and starts the VM.

Virtualbox begins the VM, the underlying port sending for ssh is set and Vagrant makes an ssh-key to login to the VM. The VM is currently running and fit to be utilized. Interfacing with the VM by means of SSH should be possible legitimately from the Vagrant utilizing the ssh order.

$ Vagrant ssh

[vagrant@localhost ~]$

A manual association with the VM by means of ssh can likewise be built up utilizing the ssh port from Vagrant (in this model 2222) and the ssh-key Vagrant made for this VM.

$ ssh vagrant@localhost - p 2222 - I


The validness of host ‘[localhost]:2222 ([]:2222)’ can’t be set up.

ECDSA key unique mark is SHA256:Do0ZOirosypupRJNBrgBDWIsbHQr6kily32RjPwwO/E. Is it accurate to say that you are certain you need to keep associating (yes/no)? indeed

Cautioning: Permanently included ‘[localhost]:2222’ (ECDSA) to the rundown of known hosts.

[vagrant@localhost ~]$

The client to login is Vagrant, the port is from the "Vagrant up" yield and the ssh-key is made by Vagrant for this VM.

To make a coordinating ssh setup for the began VM, the Vagrant offers the advantageous order "Vagrant ssh- config".

$ Vagrant ssh-config Host default
Client Vagrant Port 2222
UserKnownHostsFile/dev/invalid StrictHostKeyChecking no
PasswordAuthentication no
"/way/to/Vagrant/venture/.Vagrant/machines/default/virtualbox/private_key" IdentitiesOnly yes
LogLevel FATAL

All About Creating Test Environment in Vagrant

To deal with the VM, the Vagrant offers various straightforward orders to stop a VM (Vagrant end) or to erase a VM to begin once again (Vagrant crush). At the point when the VM is annihilated, the container picture stays set up and shouldn’t be downloaded once more.

$ Vagrant status

Current machine states:

default running (VirtualBox)

The VM is running. To stop this VM, you can run ‘Vagrant end’ to close it down powerfully, or you can run ‘Vagrant suspend’ to just suspend the virtual machine. In either case, to restart it once more, essentially run ‘Vagrant up’.

The status order shows the status of the VM along with a short clarification of how to deal with the VM. Arrangement Multiple VM’s

With Vagrant, it is likewise conceivable to deal with numerous VMs in one anticipate. To do this, the Vagrantfile can be changed to deal with numerous VMs. The made Vagrantfile shows the accompanying setup things. The greater part of the remark lines has been evacuated in the accompanying leaning to lessen it to the base.

Vagrant.configure(2) do |config|
# Every Vagrant advancement condition requires a crate. You can scan for # boxes at = "centos/7" end

The design above-characterized one VM with the name default and the crate picture "centos/7".

To arrange two VMs in the Vagrant venture, supplant the "" line with the accompanying.

Vagrant.configure(2) do |config|
# Every Vagrant improvement condition requires a case. You can look for # boxes at
config.vm.define "centos7" do |c7| = "centos/7" end
config.vm.define "centos6" do | c6| = "centos/6"
end end

The arrangement is currently part of two VM definitions utilizing the "config.vm.define" explanations. The principal proclamation designs the CentOS 7 VM which has the name "centos7" rather than "default". The second arranges a CentOS 6 VM with the name "centos6".


All About Creating Test Environment in Vagrant A "Vagrant status" will currently show two VMs arranged in this venture rather than one 

$ Vagrant status

Current machine states:

centos7 not made (virtualbox) centos6 not made (virtualbox)

This condition speaks to various VMs. The VMs are totally recorded above with their present status. For more data about a particular VM, run ‘Vagrant status NAME’.

The above order expressly teaches Vagrant to fire up the VM named "centos7". Extra settings

All About Creating Test Environment in Vagrant

The Vagrantfile is a strong apparatus to control and arrange the VMs. The hostname of the VM can be set utilizing the accompanying explanation in the VM setup.

The Vagrant document takes into consideration a lot more settings to be characterized to arrange the VM at startup or creation. A rundown of Vagrantfile choices to design a VM can be found on the Vagrant Machine Settings page. On the off chance that you despite everything miss usefulness, the Vagrant modules are the spot to take a gander at.

Vagrant modules can be discovered utilizing the accompanying order. It will list all the "Vagrant " ruby jewels.

The rundown of accessible modules is long. To get insights concerning one of the pearls, include the "- d" alternative to show itemized data. I recommend picking one or just a not many while including the "- d" alternative.

The yield gives a connection to the landing page just as a short portrayal. The landing page, as a rule, gives more insights concerning the utilization of the module and its capacities. The above-recorded module will let you design an intermediary worker for the VM while firing it up.

To introduce the module, utilize the accompanying Vagrant order. Vagrant is a colossally advantageous instrument

Utilizing Vagrant as an advancement situation computerization instrument has numerous advantages. Some of which are recorded beneath:

Vagrant arrangements indistinguishable assets from in the creation condition, on the head of minimal effort equipment.

Tests that can’t be run underway can be run in the Vagrant condition since they are indistinguishable.

Engineers can have numerous situations – like the creation condition – simultaneously for various tests, conceivably with explicit design changes to nature for testing purposes.

Engineers can produce a Vagrant situation, complete the testing, and demolish it when done. It is conceivable to rapidly create creation grade conditions at whatever point essential.

Designers can store checked Vagrant code in a source code storehouse so all designers and QA specialists can reuse them.

Vagrant code can be formed in the source code of the executives’ store with the goal that designers can recreate any past adaptation of a situation that the creation condition has experienced.

Vagrant backings all the main IaC provisioning instruments, for example, Ansible, Chef, Puppet, Salt, Shell, and Docker.

Designers can reuse the creation condition provisioning contents to produce advancement/test situations with minor changes (eg. URLs, have names and IPs and so forth which are from the creation condition)

Vagrant carries mechanization to conditions to present reliable and controlled provisioning. Vagrant is free (there is a cloud variant accessible at cost).

It is important that there will be a few assets that designers can’t use inside a VM, for example, exclusive cloud stage unique devices

Moreover, Vagrant based situations for execution testing can’t be utilized as the framework’s asset force might be lower than the real creation condition. It is critical to construct procedures to beat these issues referenced above – which can be handily maintained a strategic distance from with the assistance of brilliant advancements like virtualization with Vagrant.



Avanish Pandey

August 5, 2022


Subscribe to our Newsletter

Sign up to receive and connect to our newsletter

Thank you! Your submission has been received!
Oops! Something went wrong while submitting the form.

Latest Article