Probably, you can find several blogs that explain how to create a Vagrant box from scratch, but honestly... it is a tedious work, so I decided to share my helpers scripts that will make our life easier. You can find them on my GitHub account, and below there are the instructions to use them.
Create and setup a new virtual machine
First, you need to create a new VM in Virtualbox, for this example we call it
Then, add a port forwarding rule to the network adapter. Right click on the virtual machine name, then select Settings -> Network -> Adapter 1 -> Advanced -> Port Forwarding -> Plus icon and use the following settings:
- Name: ssh
- Protocol: TCP
- Host IP: 127.0.0.1
- Host Port: 2222
- Guest IP: leave this field blank
- Guest Port: 22
You can now start the operating system installation, also you need to
make a user called
vagrant as administrator.
When OS installation is completed, add
vagrant user to sudoers to
enable password-less sudo and disable
requiretty. For that, you need to login to the virtual machine, then add the following lines to
vagrant ALL=(ALL) NOPASSWD: ALL Defaults:vagrant !requiretty
Now, install Virtualbox Guest Additions and its dependencies, e.g. the
kernel-devel package in Fedora.
You also need to enable and start
$ sudo systemctl enable sshd $ sudo systemctl start sshd
Logout from the virtual machine and generate a new ssh key for
vagrant user on your local computer:
$ cd $HOME/.ssh $ ssh-keygen -t rsa -C vagrant@localhost -f vagrant.id_rsa
scripts/copy-ssh-key.sh to add the
vagrant ssh public key
to your VM. You can test the ssh key with:
$ ssh -i vagrant.id_rsa -p 2222 email@example.com
Finally, power off the virtual machine as it is ready for creating Vagrant boxes.
Create new Vagrant box
Generate a new Vagrantfile file:
$ scripts/generate-vagrantfile.sh fedora24 1.0
Build a new vagrant box:
$ scripts/build-box.sh fedora24 1.0
Generate a new json file:
$ scripts/generate-json.sh fedora24 1.0 "Fedora 24 base image."
Now, you can add the new box to your Vagrant:
$ scripts/add-vagrant-box.sh fedora24 1.0
Ok, it's time to test the new box:
$ cd tests $ vagrant init fedora24 $ vagrant up
Project Repository and License
You can get the source code of this project on GitHub
This project is licensed under a MIT license. Please read the LICENSE file.
Ref: Creating a Base Box