Demonstration of our QA tools (Gitlab, Sonarqube) running inside a Vagrant Virtual machine.
-
install Ansible version 2.2.0 or better. On Ubuntu you can use the script ./common/scripts/bootstrap.sh
-
install VirtualBox version 5.0 or better
-
install Vagrant version 1.8.5 or better
-
install vagrant plugin install vagrant-hostmanager
vagrant plugin install vagrant-hostmanager
-
start the virtual machine with Vagrant
vagrant up
After upgrading the Linux kernel in your system you may encounter this message when running a Vagrant command:
The provider 'virtualbox' that was requested to back the machine
'airflow' is reporting that it isn't usable on this system. The
reason is shown below:
VirtualBox is complaining that the installation is incomplete. Please
run `VBoxManage --version` to see the error message which should contain
instructions on how to fix this error.
To fix it, you need to rebuild a module for Virtualbox using this command:
sudo apt-get install --reinstall virtualbox-dkms linux-headers-generic
The virtual machine should start and install the QA-Tools (Jenkins, SonarQube, Artifactory, OpenLDAP, ...).
Gitlab can be accessed on localhost:10080
Jenkins can be accessed on localhost:10081
Artifactory can be accessed on localhost:10082
SonarQube can be accessed on localhost:10083
Marathon can be accessed on localhost:15080
Ansible inventory controls what software is installed and how it is configured.
It is organised by hosts (servers) and groups.
Here, we have the following organisation:
- demo: the target host, running inside a Vagrant Virtual machine
- managed: a group containing demo, indicating that the server is managed by Ansible and should be applied a default configuration and a set of base sofware packages
- control: a group containing demo, indicating that this server is used to perform operations affecting the whole cluster (here we have a 'cluster' of one machine)
- zookeeper, mesos-mixed: groups that are used to define where and how the Mesos stack is deployed
- gitlab, sonarqube: groups that are used to define which applications should be deployed by Marathon