Icinga Vagrant Boxes
Table of Contents
About
The Icinga Vagrant boxes allow you to run Icinga 2, Icinga Web 2 and integrations (Graphite, InfluxDB, Grafana, Elastic Stack, Graylog) in various scenarios.
A simple vagrant up
fully installs these VMs and you are ready to explore
the Icinga ecosystem. You can use these boxes for your own local demos, or
to learn how to install and configure Icinga.
- Icinga 2 Standalone, Icinga 2 Cluster, Icinga 2 HA Cluster
- Icinga 2 and InfluxDB
- Icinga 2 and Elastic
- Icinga 2 and Graylog
Icinga Web 2
Dashing
Elastic & Icingabeat
Grafana
Support
Please note that these boxes are built for demos and development tests only. Several boxes will run snapshot builds and unstable code to test the latest and the greatest.
You can also use them to test Icinga packages prior to the next release.
In case you've found a problem or want to submit a patch, please open an issue on GitHub and/or create a PR.
Requirements
- Vagrant >= 1.8.x
Note: If you are on Windows, 1.9.4 is broken.
One of these virtualization providers:
- Virtualbox >= 5.x
- Parallels Desktop Pro/Business >= 11
- libvirt
Each Vagrant box setup requires at least 2 Cores and 2 GB RAM.
The required resources are automatically configured during the
vagrant up
run.
Linux
VirtualBox
Example on Fedora (needs RPMFusion repository for VirtualBox):
sudo dnf install vagrant
sudo dnf install virtualbox
vagrant plugin install virtualbox
Fedora uses libvirt by default. More details on VirtualBox can be found here.
Example on Ubuntu:
$ sudo apt-get install vagrant
$ sudo apt-get install virtualbox
Windows
Windows requires VirtualBox as provider. You'll also need the Git package which includes SSH.
Install the Git package and set autocrlf
to false
.
You can also set the options on the command line afterwards:
C:\Users\michi> git.exe config --global core.autocrlf false
Set the Windows command line as default:
Then clone this repository:
C:\Users\michi\Documents> git.exe clone https://github.com/Icinga/icinga-vagrant
Note
If
vagrant up
hangs with Vagrant 2.0.0 on Windows 7, you might need to upgrade your Powershell version. See this note for details.
Providers
Choose one of the providers below. VirtualBox can be used nearly everwhere. If you have a Parallels Pro license on macOS, or prefer to use libvirt, that's possible too.
Virtualbox Provider
If Virtualbox is installed, this will be enabled by default.
Parallels Provider
You'll need to install the vagrant-parallels plugin first:
$ vagrant plugin install vagrant-parallels
The Parallels provider uses the Parallels CentOS base box.
Libvirt Provider
You should have qemu
and libvirt installed if you plan to run Vagrant on your local system. Then install the
vagrant-libvirt` plugin:
$ vagrant plugin install vagrant-libvirt
The libvirt provider uses the official CentOS base boxes.
Note: Full libvirt support is pending. Please help test and send in patches for #52.
Additional Plugins
Behind a proxy
If you are working behind a proxy, you can use the proxyconf plugin.
Install the plugin:
$ vagrant plugin install vagrant-proxyconf
Export the proxy variables into your environment:
$ export VAGRANT_HTTP_PROXY=http://proxy:8080
$ export VAGRANT_HTTPS_PROXY=http://proxy:8080
Vagrant exports the proxy settings into the VM and provisioning will then work.
Run
Change the directory to the box you want to start.
Example icinga2x:
$ cd icinga2x
You can only do vagrant up
in a box directory. Verify that
by checking for the existance of the Vagrantfile
file in the current
directory.
Vagrant Commands
Start
Start all VMs:
Linux:
$ vagrant up
Windows:
Depending on the provider you have chosen above, you might want to set it explicitely:
$ vagrant up --provider=virtualbox
SSH
SSH into the box as local vagrant
user (Tip: Use sudo -i
to become root
):
$ vagrant ssh
Note
Multi-VM boxes require the hostname for
vagrant ssh
like so:vagrant ssh icinga2b
. That works in a similar fashion for other sub commands.
Stop
Stop all VMs:
$ vagrant halt
Update/Soft Reset
Update packages/reset configuration for all VMs:
$ vagrant provision
Destroy
Destroy the VM (add -f
to avoid the safety question)
$ vagrant destroy
More Usability Hints
Documentation for software used inside these boxes.
Project | URL |
---|---|
Icinga 2 | https://www.icinga.com/docs/icinga2/latest/doc/01-about/ |
Icinga Web 2 | https://www.icinga.com/docs/icingaweb2/latest/doc/01-About/ |
Director | https://www.icinga.com/docs/director/latest/doc/01-Introduction/ |
NagVis | https://www.nagvis.org/doc |
Graphite | https://graphite.readthedocs.io |
InfluxDB | https://docs.influxdata.com/influxdb/ |
Grafana | https://docs.grafana.org |
Elastic | https://www.elastic.co/guide/ |
Graylog | http://docs.graylog.org |
Vagrant update
On local config change (git pull for this repository).
$ pwd
$ git pull
$ git log
$ vagrant provision
Boxes
Icinga 2 Standalone
- 1 VM
- Icinga 2
- Icinga Web 2
- Icinga Director, Grafana, Business Process, Generic TTS, NagVis, Map modules
- NagVis
- Graphite
- Grafana
- Dashing
Run Vagrant:
$ cd icinga2x && vagrant up
Application Interfaces
Application | Url | Credentials |
---|---|---|
Icinga Web 2 | http://192.168.33.5/icingaweb2 | icingaadmin/icinga |
Icinga 2 API | https://192.168.33.5:5665/v1 | root/icinga |
Graphite Web | http://192.168.33.5:8003 | - |
Grafana | http://192.168.33.5:8004 | admin/admin |
Dashing | http://192.168.33.5:8005 | - |
Note: In case Dashing is not running, restart it manually:
$ vagrant ssh -c "sudo systemctl start dashing-icinga2"
Icinga 2 Cluster
- 2 VMs as Icinga 2 Master/Checker Cluster
- Icinga 2
- Icinga Web 2
Run Vagrant:
$ cd icinga2x-cluster && vagrant up
Application Interfaces
Application | Url | Credentials |
---|---|---|
Icinga Web 2 | http://192.168.33.10/icingaweb2 | icingaadmin/icinga |
Icinga Web 2 | http://192.168.33.20/icingaweb2 | icingaadmin/icinga |
Icinga 2 API | https://192.168.33.10:5665/v1 | root/icinga |
Icinga 2 API | https://192.168.33.20:5665/v1 | root/icinga |
Icinga 2 HA Cluster
- 2 Master VMs, 1 Satellite VM
- Icinga 2
- Icinga Web 2
Run Vagrant:
$ cd icinga2x-ha-cluster && vagrant up
Application Interfaces
Application | Url | Credentials |
---|---|---|
Icinga Web 2 | http://192.168.33.101/icingaweb2 | icingaadmin/icinga |
Icinga Web 2 | http://192.168.33.102/icingaweb2 | icingaadmin/icinga |
Icinga Web 2 | http://192.168.33.103/icingaweb2 | icingaadmin/icinga |
Icinga 2 API | https://192.168.33.101:5665/v1 | root/icinga |
Icinga 2 API | https://192.168.33.102:5665/v1 | root/icinga |
Icinga 2 API | https://192.168.33.103:5665/v1 | root/icinga |
Icinga 2 InfluxDB
- 1 VM
- Icinga 2
- Icinga Web 2
- Grafana module
- InfluxDB
- Grafana
Run Vagrant:
$ cd icinga2x-influxdb && vagrant up
Application Interfaces
Application | Url | Credentials |
---|---|---|
Icinga Web 2 | http://192.168.33.8/icingaweb2 | icingaadmin/icinga |
Icinga 2 API | https://192.168.33.8:5665/v1 | root/icinga |
Grafana | http://192.168.33.8:8004 | admin/admin |
Icinga 2 and Elastic Stack
Run Vagrant:
$ cd icinga2x-elastic && vagrant up
Note: Logstash integration is missing in #31.
Application Interfaces
Application | Url | Credentials |
---|---|---|
Icinga Web 2 | http://192.168.33.7/icingaweb2 | icingaadmin/icinga |
Icinga 2 API | https://192.168.33.7:5665/v1 | root/icinga |
Kibana | https://192.168.33.7:5601 | icinga/icinga |
Elasticsearch/Nginx | https://192.168.33.7:9200 | icinga/icinga |
Icinga 2 and Graylog
Run Vagrant:
$ cd icinga2x-graylog && vagrant up
Application Interfaces
Application | Url | Credentials |
---|---|---|
Icinga Web 2 | http://192.168.33.6/icingaweb2 | icingaadmin/icinga |
Icinga 2 API | https://192.168.33.6:5665/v1 | root/icinga |
Graylog | http://192.168.33.6:9000 | admin/admin |
Development
Base Boxes
Provider | Base Box |
---|---|
VirtualBox | Bento. |
Parallels | Parallels |
libvirt | libvirt |
Pull updates.
vagrant box update
Tools
InfluxDB
Current version via HTTP API:
curl -sl -I 192.168.33.8:8086/ping
Puppet Module Overview
The Vagrant boxes use these imported puppet modules for provisioning. The modules are pulled into this repository as git subtree.
General:
Specific projects:
Name | Path | Url |
---|---|---|
puppet-graylog | modules/graylog | https://github.com/Graylog2/puppet-graylog.git |
puppet-elasticsearch | modules/elasticsearch | https://github.com/elasticsearch/puppet-elasticsearch.git |
puppet-nginx | modules/nginx | https://github.com/voxpupuli/puppet-nginx.git (branch puppet3 ) |
puppet-logstash | modules/logstash | https://github.com/elastic/puppet-logstash.git |
puppet-kibana | modules/kibana | https://github.com/elastic/puppet-kibana.git |
puppet-filebeat | modules/filebeat | https://github.com/pcfens/puppet-filebeat.git |
puppetlabs-mongodb | modules/mongodb | https://github.com/puppetlabs/puppetlabs-mongodb.git |
golja-influxdb | modules/influxdb | https://github.com/n1tr0g/golja-influxdb.git including a PR for 1.0.0 support |
puppet-graphite | modules/graphite | Patched for systemd usage from https://github.com/echocat/puppet-graphite.git |
puppet-grafana | modules/grafana | https://github.com/bfraser/puppet-grafana.git |
graylog2-puppet | modules/graylog2 | https://github.com/Graylog2/graylog2-puppet.git |
Puppet Module Git Subtree
Notes for developers only.
Add subtree:
$ git subtree add --prefix modules/vim https://github.com/saz/puppet-vim master --squash
Update subtree:
$ git subtree pull --prefix modules/postgresql https://github.com/puppetlabs/puppetlabs-postgresql.git master --squash