Vagrant test environment for the Icinga build system
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.

Icinga Buildsystem Vagrant

This environment helps you to bring up a local test environment for the Icinga build system.

It is not intended for demo, but for developing the build system.

Based on lazyfrosch/vagrant-puppet-boilerplate.


Checkout this repository

git clone

# if you are a project member
git clone

Install required ruby tools:

bundle install
bundle install --path vendor/bundle

And checkout the Puppet modules: (via r10k)

rake deploy

Recommended plugin

You might need the Vagrant plugin vagrant-vbguest to install / update the Virtualbox tools on the VMs.

This will help you install tools before first provisioning, and updating them after a Kernel update.

vagrant plugin install vagrant-vbguest

Bring up machines

You can bring up the Vagrant boxes like this:

vagrant up jenkins

# or all
vagrant up

Apply changes in the Puppet or hiera data:

vagrant provision
vagrant provision <host>

Known Problems

Admin Password

You can find the initial admin password of Jenkins at


Creating Jobs

By default Jenkins enables integrated security for the server.

So Puppet will fail creating any resources inside Jenkins.

  • Login to Jenkins with the admin password (/var/lib/jenkins/secrets/initialAdminPassword)
  • Go to Users and change the admin user
  • Add the SSH key of Jenkins' Home to the user (/var/lib/jenkins/.ssh/

If this is done you can configure the security to whatever you like. Just make sure admin is still allowed to manage things.

Publishing Packages

Aptly will fail to publish packages if there is no GPG key present. You need to generate one as user root and import the public key with apt-key.

  • gpg2 --gen-key
  • gpg2 --export --armor > aptly.key
  • apt-key add aptly.key


Service VM Local
Jenkins http://localhost:8080
Jenkins Agent SSH Port 2222
Aptly API  http://localhost:8090
Aptly API (auth)
Repositories  http://localhost:9090/aptly/public

Adding the slave

In order to connect Jenkins to the slave two things need to be configured: The node and a set of credentials. They are currently not in puppet because we do not have a template for credentials yet. You will need to create a new ssh-credential with the username 'jenkins' and ~/.ssh as location for the key.

When adding a node, set the following options:

Remote root directory: /home/jenkins
Launch method: Launch via ssh
Port: 2222
Credentials: /the credentials you created/


Copyright (C) 2017 Icinga Development Team <>
              2017 Markus Frosch <>

This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
GNU General Public License for more details.

You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.