Vagrant is one of the most popular tools in the world of DevOps. Allows you to instantly create and manage virtual machines or containers that come from a pre-set pattern (box). This approach does not require a long and wearisome installation of the system. In addition, using the box, we start with exactly the same machine status each time. This provides additional stability and can help to introduce a concept of infrastructure as the code or of immutable infrastructure, although it is rather associated with the containers.
The next step after the machine or container is started is provisioning (preparation of the system, its services and settings). Vagrant supports provisioning using all popular tools. Examples include: Ansible, Salt, Chef, Puppet or old good shell scripts.
It is also worth mentioning that all this is usually contained in a single file – the Vagrantfile. If you know Docker, you will immediately understand this identical concept (Dockerfile), which is to keep the machine, system, or container configuration in a file. This file is literally called Vagrantfile and, in addition to basic settings or provisioning, may also have specialized machine configurations such as additional network interfaces, available memory, and CPU. For dessert it is worth mentioning the creation of a folder synchronized with the local directory in which the machine was launched.
The most basic Vagrantfile must contain the box information (pattern/template) to be used. For example:
Vagrant.configure("2") do |config| config.vm.box = "eurolinux-vagrant/eurolinux-7" end
This is the same procedure as the "FROM:" command in the Dockerfile.
In most cases, boxes are downloaded from Vagrant Cloud. When the box is downloaded for the first time, a local copy is created and then used as a template for the following machines. This allows you to create new systems faster and saves the connection. If a newer version exists, it is automatically downloaded only when a new virtual machine/container is created. You can of course lock version by adding
config.vm.box_version to the Vagrantfile.
Vagrant.configure("2") do |config| config.vm.box = "eurolinux-vagrant/eurolinux-6" config.vm.box_version = "6.10.1" end
EuroLinux images in Vagrant Cloud
At EuroLinux we have been using Vagrant from almost the very beginning of our existence. What is more, some of our customers use specially prepared images in their environments. This month, EuroLinux decided to release images of EuroLinux and other Enterprise Linux systems to the public. They are provided by eurolinux-vagrant user https://app.vagrantup.com/eurolinux-vagrant on in Vagrant Cloud.
Direct links to images:
Unlike the rest, EuroLinux images do not have any repositories enabled because they are designed for users with unlimited licenses or/and local EuroMan.
One of the main benefits of using the pre-made images provided by commercial Open Source manufacturers is their regular updates. For the images discussed above updates are made on a monthly basis. Such a period is a compromise between too frequent updates and increased security.
Some technical details
The password for the user of root is vagrant.
The password for the user of vagrant is vagrant.
SSHD allows you to log in using a password, including to the root user.
The images have a swap space.
The images have kdump mechanism enabled by default.
The images have SELinux operating in the enforcing mode.
Images generated by EuroLinux are created in the so-called "pipeline". To ensure the highest quality, there are steps responsible for testing the boxes. However, some people may have comments or suggestions about the posted images. Therefore, a public repository https://github.com/EuroLinux/vagrant-boxes-rfc has been established, where suggestions and possible bugs can be reported. Its openness helps create a public and, last but not least, an open process for making changes to images.