How to create CentOS VM using Vagrant
Create CentOS VM using Vagrant
1. Download and install the latest Oracle VM VirtualBox.
https://www.oracle.com/technetwork/server-storage/virtualbox/downloads/index.html
Like (For Mac OS X)
https://download.oracle.com/virtualbox/6.0.6/VirtualBox-6.0.6-130049-OSX.dmg
2. Download and install the latest Vagrant.
https://www.vagrantup.com/downloads.html
Like (For Mac OS X)
https://releases.hashicorp.com/vagrant/2.2.4/vagrant_2.2.4_x86_64.dmg
3. Download "
==> box: Loading metadata for box 'centos /7'
This box can work with multiple providers! The providers that it
1) hyperv
2) libvirt
3) virtualbox
4) vmware_desktop
Enter your choice: 3
==> box: Adding box 'centos /7' (v1902. 01) for provider : virtualbox
==> box: Successfully added box 'centos /7' (v1902. 01) for 'virtualbox '!
4. Create a directory "centos7-test-
A `Vagrantfile` has been placed in this directory. You are now
`vagrantup.com` for more information on using Vagrant.
abhinavs-Air:centos7-test-vm agupta$ ls -lrth
-rw -r--r-- 1 agupta staff 2.9K May 11 20:33 Vagrantfile
5. Check default vagrant file content.
# -*- mode: ruby -*-
# vi : set ft=ruby :
# All Vagrant configuration is done below. The "2" in Vagrant. configure
# configures the configuration version (we support older styles for
# backwards compatibility). Please don't change it unless you know what
# you're doing.
Vagrant. configure( "2") do |config|
# The most common configuration options are documented and commented below.
# For a complete reference, please see the online documentation at
# https://docs.vagrantup.com.
# Every Vagrant development environment requires a box. You can search for
# boxes at https://vagrantcloud.com/search.
# Disable automatic box update checking. If you disable this, then
# boxes will only be checked for updates when the user runs
# `vagrant box outdated`. This is not recommended.
# config. vm . box_check_update = false
# Create a forwarded port mapping which allows access to a specific port
# within the machine from a port on the host machine. In the example below,
# accessing "localhost : 8080" will access port 80 on the guest machine.
# NOTE: This will enable public access to the opened port
# config.vm.network "forwarded_port", guest: 80, host: 8080
# Create a forwarded port mapping which allows access to a specific port
# within the machine from a port on the host machine and only allow access
# via 127.0.0.1 to disable public access
# config.vm.network "forwarded_port", guest: 80, host: 8080, host_ip: "127.0.0.1"
# Create a private network, which allows host-only access to the machine
# using a specific IP.
# config.vm.network "private_network", ip : "192.168.33.10"
# Create a public network, which generally matched to bridged network.
# Bridged networks make the machine appear as another physical device on
# your network.
# config.vm.network "public_network"
# Share an additional folder to the guest VM. The first argument is
# the path on the host to the actual folder. The second argument is
# the path on the guest to mount the folder. And the optional third
# argument is a set of non-required options.
# config. vm . synced_folder ".. /data", "/vagrant_data"
# Provider-specific configuration so you can fine-tune various
# backing providers for Vagrant. These expose provider-specific options.
# Example for VirtualBox:
#
# config.vm.provider "virtualbox " do |vb |
# # Display the VirtualBox GUI when booting the machine
# vb . gui = true
#
# # Customize the amount of memory on the VM:
# vb . memory = "1024"
# end
#
# View the documentation for the provider you are using for more
# information on available options.
# Enable provisioning with a shell script. Additional provisioners such as
# Puppet, Chef, Ansible, Salt, and Docker are also available. Please see the
# documentation for more information about their specific syntax and use.
# config.vm.provision "shell", inline: <<-SHELL
# apt-get update
# apt-get install -y apache2
# SHELL
6. Edit below highlighted content inside the Vagrantfile.
- Change config
- Add config
-
-
config.vm.provider "virtualbox " do |vb |
# # Display the VirtualBox GUI when booting the machine
# vb . gui = true ---> This section can been uncommentted if you need GUI interface of VM.
#
# # Customize the amount of memory on the VM:
7. Below is the content of Vagrantfile after editing above content
abhinavs-Air:centos7-test-vm agupta$ vim Vagrantfile
# -*- mode: ruby -*-
# vi : set ft=ruby :
# All Vagrant configuration is done below. The "2" in Vagrant. configure
# configures the configuration version (we support older styles for
# backwards compatibility). Please don't change it unless you know what
# you're doing.
Vagrant. configure( "2") do |config|
# The most common configuration options are documented and commented below.
# For a complete reference, please see the online documentation at
# https://docs.vagrantup.com.
# Every Vagrant development environment requires a box. You can search for
# boxes at https://vagrantcloud.com/search.
# Disable automatic box update checking. If you disable this, then
# boxes will only be checked for updates when the user runs
# `vagrant box outdated`. This is not recommended.
# config. vm . box_check_update = false
# Create a forwarded port mapping which allows access to a specific port
# within the machine from a port on the host machine. In the example below,
# accessing "localhost : 8080" will access port 80 on the guest machine.
# NOTE: This will enable public access to the opened port
# config.vm.network "forwarded_port", guest: 80, host: 8080
# Create a forwarded port mapping which allows access to a specific port
# within the machine from a port on the host machine and only allow access
# via 127.0.0.1 to disable public access
# config.vm.network "forwarded_port", guest: 80, host: 8080, host_ip: "127.0.0.1"
# Create a private network, which allows host-only access to the machine
# using a specific IP.
config.vm.network "private_network", ip : "192.168.33.60"
# Create a public network, which generally matched to bridged network.
# Bridged networks make the machine appear as another physical device on
# your network.
# config.vm.network "public_network"
# Share an additional folder to the guest VM. The first argument is
# the path on the host to the actual folder. The second argument is
# the path on the guest to mount the folder. And the optional third
# argument is a set of non-required options.
# config. vm . synced_folder ".. /data", "/vagrant_data"
# Provider-specific configuration so you can fine-tune various
# backing providers for Vagrant. These expose provider-specific options.
# Example for VirtualBox:
#
config.vm.provider "virtualbox " do |vb |
# # Display the VirtualBox GUI when booting the machine
# vb . gui = true
#
# # Customize the amount of memory on the VM:
#
# View the documentation for the provider you are using for more
# information on available options.
# Enable provisioning with a shell script. Additional provisioners such as
# Puppet, Chef, Ansible, Salt, and Docker are also available. Please see the
# documentation for more information about their specific syntax and use.
# config.vm.provision "shell", inline: <<-SHELL
# apt-get update
# apt-get install -y apache2
# SHELL
8. Now Start/UP CentOS VM. Verify current directory is "centos7-test-
/Users/agupta /vagrant_box/centos7-test-vm
9. Verify VM created successfully and it is up/running.
/Users/agupta /vagrant_box/centos7-test-vm
Current machine states:
The VM is running. To stop this VM, you can run `vagrant halt` to
10. Connect to CentOS VM
/Users/agupta /vagrant_box/centos7-test-vm
-bash : warning: setlocale : LC_CTYPE: cannot change locale (UTF-8): No such file or directory
[vagrant@centos7-test-vm ~] $ sudo su -
[root@centos7-test-vm ~] #
Enjoy CentOS VM 😊
Photo by Sai Kiran Anagani on Unsplash
Awesome and thanks for making this blog
ReplyDeleteInteresting thoughts
ReplyDeleteNicee post
ReplyDelete