Icinga Vagrant boxes used for development, tests and demo cases.
- Icinga 2 Standalone
- Icinga 2 Cluster
- Icinga 2 HA Cluster
- Icinga 2 InfluxDB
- Icinga 2 and Elastic
- Icinga 2 and Graylog
Each Vagrant box setup requires at least 2 Cores and 1 GB RAM.
The required resources are automatically configured during the
vagrant up
run.
- Vagrant >= 1.6.5
Note: There's a bug in 1.8.5-1.9.1 preventing host only network interfaces being configured properly. A workaround is in place but you're encouraged to use the latest 1.9.2+ release.
One of these virtualization providers:
- Virtualbox >= 4.2.16 from http://www.virtualbox.org
- Parallels Desktop Pro/Business >= 11 from http://www.parallels.com/products/desktop/
Example on Fedora:
dnf install vagrant
dnf install virtualbox
Example on Ubuntu:
apt-get install vagrant
apt-get install virtualbox
In addition the listed requirements you'll need:
- SSH provided by the Git package from http://msysgit.github.io
- Ruby for Windows from http://rubyinstaller.org (add Ruby executables to PATH)
Install the Git package and set autocrlf
to false
(either in the setup
dialog or using the cmd shell):
git config --global core.autocrlf false
Then clone this repository:
git clone https://github.com/Icinga/icinga-vagrant
If Virtualbox is installed, this will be enabled by default.
You'll need to install the vagrant-parallels plugin first:
$ vagrant plugin install vagrant-parallels
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.
Please note that these boxes are built for development and tests only. Productive setups are not supported.
In case you've found a problem or want to submit a patch, please open an issue on GitHub and/or create a PR.
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.
$ pwd
/home/michi/coding/icinga/icinga-vagrant/icinga2x
$ ls -la Vagrantfile
-rw-------. 1 michi michi 1,4K 28. Aug 12:11 Vagrantfile
vagrant up
starts all vms for this box setupvagrant halt
stops all vms for this box setupvagrant provision
updates packages/resets configuration for all vmsvagrant ssh
puts you into an ssh shell with loginvagrant
(Tip: Usesudo -i
to becomeroot
)
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.
If your box is broken, you can destroy it using vagrant destroy
. Next vagrant up
run will use the already imported base box, re-running the provisioner to install
the packages and configuration.
Documentation for software used inside these boxes.
Project | URL |
---|---|
Icinga 2 | https://docs.icinga.com |
Icinga Web 2 | https://github.com/Icinga/icingaweb2/tree/master/doc |
PNP | https://docs.pnp4nagios.org |
NagVis | https://www.nagvis.org/doc |
Graphite | https://graphite.readthedocs.io |
InfluxDB | https://docs.influxdata.com/influxdb/ |
Grafana | http://docs.grafana.org |
Elastic | https://www.elastic.co/guide/ |
Graylog | http://docs.graylog.org |
On local config change (git pull for this repository).
$ pwd
$ git pull
$ git log
$ vagrant provision
- 1 VM
- Icinga 2 Core
- Icinga 2 API
- Icinga Web 2
- Icinga Director
- PNP module
- Graphite module
- Business Process module
- Generic TTS module
- NagVis module
- PNP4Nagios
- NagVis
- Graphite
- Grafana
- Dashing
Run Vagrant:
$ cd icinga2x && vagrant up
GUI | Url | Credentials |
---|---|---|
Icinga Web 2 | http://192.168.33.5/icingaweb2 | icingaadmin/icinga |
PNP4Nagios | http://192.168.33.5/pnp4nagios | - |
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 /usr/local/bin/restart-dashing"
Access https://192.168.33.5:5665/v1/objects/hosts
using the credentials root/icinga
. More details in the documentation.
- 2 VMs as Icinga 2 Master/Checker Cluster
- Icinga 2 Core, DB IDO MySQL, Icinga Web 2
Run Vagrant:
$ cd icinga2x-cluster && vagrant up
GUI | Url | Credentials |
---|---|---|
Icinga Web 2 | http://192.168.33.10/icingaweb2 | icingaadmin/icinga |
Icinga Web 2 | http://192.168.33.20/icingaweb2 | icingaadmin/icinga |
Access https://192.168.33.10:5665/v1/objects/hosts
and https://192.168.33.20:5665/v1/objects/hosts
using the credentials root/icinga
.
- 2 Master VMs, 1 Satellite VM
- Icinga 2 Core, DB IDO MYSQL, Icinga Web 2
Run Vagrant:
$ cd icinga2x-ha-cluster && vagrant up
Note: DB IDO HA is disabled.
GUI | 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 |
- 1 VM
- Icinga 2 Core
- Icinga 2 API
- Icinga Web 2
- InfluxDB
- Grafana
Run Vagrant:
$ cd icinga2x-influxdb && vagrant up
GUI | Url | Credentials |
---|---|---|
Icinga Web 2 | http://192.168.33.8/icingaweb2 | icingaadmin/icinga |
Grafana | http://192.168.33.8:8004 | admin/admin |
Access https://192.168.33.8:5665/v1/objects/hosts
using the credentials root/icinga
. More details in the documentation.
- Elastic Stack: Elasticsearch, Logstash, Kibana, Beats
- Icinga 2, Icinga Web 2
Run Vagrant:
$ cd icinga2x-elastic && vagrant up
Note: This is a TODO and work in progress.
GUI | Url | Credentials |
---|---|---|
Icinga Web 2 | http://192.168.33.7/icingaweb2 | icingaadmin/icinga |
Kibana | http://192.168.33.7:5601 | - |
- Graylog Server and Web with Elasticsearch, MongoDB
- Icinga 2, Icinga Web 2
Run Vagrant:
$ cd icinga2x-graylog && vagrant up
GUI | Url | Credentials |
---|---|---|
Icinga Web 2 | http://192.168.33.6/icingaweb2 | icingaadmin/icinga |
Graylog | http://192.168.33.6:9000 | admin/admin |
These boxes use these imported puppet modules for provisioning:
General:
Specific projects:
Name | Path | Url |
---|---|---|
graylog2-puppet | modules/graylog2 | https://github.com/Graylog2/graylog2-puppet.git |
puppet-elasticsearch | modules/elasticsearch | https://github.com/elasticsearch/puppet-elasticsearch.git |
puppet-logstash | modules/logstash | https://github.com/elastic/puppet-logstash.git - 5.x branch |
puppet-kibana4 | modules/kibana4 | https://github.com/lesaux/puppet-kibana4.git |
puppet-kibana5 | modules/kibana5 | https://github.com/Nextdoor/puppet-kibana5 |
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 |
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