Vagrant¶
Vagrant is an open-source tool that helps us to automate the creation and management of Virtual Machines. In a nutshell, we can specify the configuration of a virtual machine in a simple configuration file, and Vagrant creates the same Virtual machine using just one simple command. It provides command-line interfaces to automate such tasks.
Requirements
Virtualbox
Vagrant
Installing Virtualbox in the Host Machine¶
Download link
https://download.virtualbox.org/virtualbox/6.1.30/VirtualBox-6.1.30-148432-Win.exe
Through Command line
sudo apt update
sudo apt install virtualbox
Note
To Run Virtual Machine You should need to Disable the Secure-Boot in BIOS Options of your Machine
To Verify that your Virtual Box is Working fine or not in Linux, Please hit the below command.
sudo systemctl status virtualbox.service
Installing Vagrant in the Host Machine¶
Download link
https://releases.hashicorp.com/vagrant/2.3.4/vagrant_2.3.4_windows_i686.msi
Through Command line
sudo apt update
sudo apt install vagrant
Note
You Should Need to Restart Your Machine After Installation of Vagrant
Creating a Common Directory for all VMs¶
Create a Directory with name vagrantvms
mkdir vagrantvms
cd vagrantvms
To Bring up VM¶
Create a Directory name ubuntu
mkdir ubuntu
cd ubuntu
vagrant init ubuntu/bionic64
vagrant up
vagrant ssh
Create a Directory name centos
mkdir centos
cd centos
vagrant init geerlingguy/centos7
vagrant up
vagrant ssh
To Init Specific Vagrant box
Vagrant.configure("2") do |config|
config.hostmanager.enabled = true
config.hostmanager.manage_host = true
### Nginx VM ###
config.vm.define "web01" do |web01|
web01.vm.box = "ubuntu/bionic64"
web01.vm.hostname = "web01"
web01.vm.network "private_network", ip: "192.168.33.11"
web01.vm.synced_folder "../vprofile-code", "/vprofile-vm-data"
end
### tomcat vm ###
config.vm.define "app01" do |app01|
app01.vm.box = "geerlingguy/centos7"
app01.vm.hostname = "app01"
app01.vm.network "private_network", ip: "192.168.33.12"
app01.vm.synced_folder "../vprofile-code", "/vprofile-vm-data"
app01.vm.provider "virtualbox" do |vb|
vb.memory = "1024"
end
app01.vm.provision "shell", inline: <<-SHELL
# yum update -y
yum install epel-release -y
SHELL
end
### RabbitMQ vm ####
config.vm.define "rmq01" do |rmq01|
rmq01.vm.box = "geerlingguy/centos7"
rmq01.vm.hostname = "rmq01"
rmq01.vm.network "private_network", ip: "192.168.33.16"
rmq01.vm.synced_folder "../vprofile-code", "/vprofile-vm-data"
rmq01.vm.provision "shell", inline: <<-SHELL
# yum update -y
#yum install epel-release -y
# yum install wget -y
SHELL
end ; f
., v/
### Memcache vm ####
config.vm.define "mc01" do |mc01|
mc01.vm.box = "geerlingguy/centos7"
mc01.vm.hostname = "mc01"
mc01.vm.network "private_network", ip: "192.168.33.14"
mc01.vm.synced_folder "../vprofile-code", "/vprofile-vm-data"
mc01.vm.provision "shell", inline: <<-SHELL
yum install epel-release -y
SHELL
end
### DB vm ####
config.vm.define "db01" do |db01|
db01.vm.box = "geerlingguy/centos7"
db01.vm.hostname = "db01"
db01.vm.network "private_network", ip: "192.168.33.15"
db01.vm.synced_folder "../vprofile-code", "/vprofile-vm-data"
db01.vm.provision "shell", inline: <<-SHELL
# yum update -y
yum install epel-release -y
SHELL
end
end