All About Creating Test Environment in Vagrant

Aug 5, 2020 12:57:57 AM | by Avanish Pandey

 

Vagrant 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, for 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:

 

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

 

'vagrantup.com' 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 .Vagrant/machines/default/virtualbox/private_key

 

The validness of host '[localhost]:2222 ([127.0.0.1]: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

 

HostName 127.0.0.1

 

Client Vagrant

 

Port 2222

 

UserKnownHostsFile/dev/invalid

 

StrictHostKeyChecking no

 

PasswordAuthentication no

 

IdentityFile "/way/to/Vagrant/venture/.Vagrant/machines/default/virtualbox/private_key"

 

IdentitiesOnly yes

 

LogLevel FATAL

 

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 https://app.vagrantup.com/boxes/search.

 

config.vm.box = "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 "config.vm.box" line with the accompanying.

 

Vagrant.configure(2) do |config|

 

# Every Vagrant improvement condition requires a case. You can look for

 

# boxes at https://app.vagrantup.com/boxes/search.

 

config.vm.define "centos7" do |c7|

 

c7.vm.box = "centos/7"

 

end

 

config.vm.define "centos6" do | c6|

 

c6.vm.box = "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".

 

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

 

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.

 

Tags: Azure Devops, ci cd, docker, continuous testing, Continuous testing in devOps, vagrant

Avanish Pandey

Written by Avanish Pandey

Avanish Pandey is the 1st and current CEO of Astaqc Consulting. Before joining as CEO of Astaqc, he was a Manager and Sr. Quality Assurance Engineer handling a team of QA's. Avanish was Born and raised in Faridabad, a city and district in Haryana, NCR region of Delhi and he received a bachelor's degree in Computer Science from the MDU.

    Subscribe to Email Updates

    Lists by Topic

    see all

    Posts by Topic

    See all

    Recent Posts