pixel
Select Page

NETWAYS Blog

Automate Icinga for Windows with Ansible

This article will cover how to automate the monitoring of your windows infrastructure with Ansible and Icinga for Windows. For that, I developed a new Ansible role which you can find here: https://github.com/DanOPT/ansible-role-ifw

The role will allow you to manage your infrastructure dynamically with an Inventory and group_vars file. It’s also possible to define PKI Tickets in the inventory and the support of the Self-Service API is coming soon. The parent as well as the zone of each host will be defined with the group name and their associated group variables.

The following topics will be covered:

  • How to organize your Windows infrastructure with an Inventory and group_vars file dynamically
  • Setup with On-Demand CSR Signing on the master
  • Setup with PKI Tickets for the client (agent or satellite) generated on the master
  • Coming soon

Prerequisites

This guide will not cover how to configure your Ansible host for WinRM connections. For that, there are already enough Blog Posts about that topic and the Ansible Documentation also covers it in detail (https://docs.ansible.com/ansible/latest/user_guide/windows.html).

What we will need:

  • Icinga2 master instance
    You will need an Icinga2 master instance. I will use Ubuntu 20.04 and the Icinga Installer (https://github.com/NETWAYS/icinga-installer) to deploy the instance.
  • Windows host
    For that, I will use a Windows Server 2012.
  • Ansible host
    Ansible host with remote access to the Windows hosts.

How to deploy your Icinga2 master instance

Configure the Netways extra repository:

wget -O – https://packages.netways.de/netways-repo.asc | sudo apt-key add –
echo “deb https://packages.netways.de/extras/ubuntu focal main” | sudo tee /etc/apt/sources.list.d/netways-extras-release.list

Icinga Installer requires the Puppet repository. So we will also need to configure the repository with the following commands:

wget -O – https://apt.puppetlabs.com/DEB-GPG-KEY-puppet-20250406 | sudo apt-key add –
echo “deb http://apt.puppetlabs.com focal puppet7” | sudo tee /etc/apt/sources.list.d/puppet7.list

Install Icinga2 master instance (including IcingaWeb2 and Director):

sudo apt update
sudo apt install icinga-installer
sudo icinga-installer -S server-ido-mysql

Do not forget to write down your Password and Username.

How to organize the Windows hosts of your infrastructure with an Inventory and group_vars file dynamically

For the organization of your Windows hosts, you will need an Inventory file and a group_vars/<zone-name> file. In the group variables file, we will define the parent node name(s) as well as the parent address(es). In the Inventory it is possible to define a PKI ticket as a host variable.

So if we have a simple setup like this:

The Inventory file would look like this:

[master]
windows-2012 ansible_host=10.77.14.229

[satellite]
windows-2012-2 ansible_host=10.77.14.230

The group name will be used to define the zone name of the parent. The parent node name and address will be defined in group_vars/master and group_vars/satellite. Here is an example of the master file:

ifw_parent_nodes:
  - 'i2-master'
  #- 'i2-master-2'
ifw_parent_address:
  - '10.77.14.171'
  #- '10.77.14.172'

The variables always have to be a list, even if only one master needs to be specified.

Setup with On-Demand CSR Signing on the master

For simplification I will only use one host in my Inventory and the group_vars/masters file I already described:

[master]
windows-2012 ansible_host=10.77.14.229

The most simple way to connect agents is to sign the certificates on the master. To achieve this the agent has to be connected and after that, we can sign them. The role has already all variables required, so we just need to run the Playbook:

---
- hosts: all
  roles:
    - ansible-role-ifw

Run the playbook with the following command:

$ ansible-playbook playbook.yml -i hosts
PLAY [all] ****************************************************************************************************************************************************************************************************************************************************************

TASK [Gathering Facts] ****************************************************************************************************************************************************************************************************************************************************
ok: [windows-2012]

TASK [ansible-role-ifw : Create icinga-install.ps1 using Jinja2] **********************************************************************************************************************************************************************************************************
ok: [windows-2012]

TASK [ansible-role-ifw : Execute icinga-install.ps1] **********************************************************************************************************************************************************************************************************************
skipping: [windows-2012]

PLAY RECAP ****************************************************************************************************************************************************************************************************************************************************************
windows-2012 : ok=2 changed=0 unreachable=0 failed=0 skipped=1 rescued=0 ignored=0

After that, we can verify if a request has been made on the master with this command:

$ icinga2 ca list
Fingerprint | Timestamp | Signed | Subject
—————————————————————–|————————–|——–|——–
*****************************************************************| Nov 2 04:57:32 2022 GMT | | CN = windows-2012

Setup with PKI Tickets for the client (agent or satellite) generated on the master

It’s also possible to define a PKI ticket as a hosts variable in the Inventory (replace <pki-ticket>):

[master]
windows-2012 ansible_host=10.77.14.229 pki_ticket=<pki-ticket>

After that we need to set the variable ‘ifw_certificate_creation’ to 1 in the Playbook:

---
- hosts: all
  vars:
    ifw_certificate_creation: 1
  roles:
    - ansible-role-ifw

Just run the Playbook and the agent should be connected to your master.

 

Coming soon

  • Self-Service API for Director
  • JEA Profile
  • Local ca.crt
  • Custom repository
Daniel Patrick
Daniel Patrick
Senior Systems Engineer

Daniel interessiert sich schon sein Leben lang für Linux-Distributionen, Programmieren und Technik. Im Bereich Linux konnte er bereits zwischen vier und fünf Jahre Berufserfahrung sammeln. Seit August 2022 arbeitet er für NETWAYS. Bei seinem letzten Arbeitgeber war er mitverantwortlich für das Leiten und Organisieren eines sechsköpfigen Teams, galt als Wissensträger und einer der ersten Ansprechpartner des Kunden, wenn es um technische Probleme ging. Nach der Arbeit hört er meistens auch nicht mit dem Arbeiten auf, sondern schraubt unentwegt an seinen Maschinen herum. In seiner Freizeit schaut er sich gerne gute Filme an und kümmert sich um seine zwei geliebten Katzen.

NEU: Icinga Developer Subscription

Icinga bietet seit einiger Zeit eine Subscription für den Zugang zu den Icinga Paketen für Linux Enterprise Umgebungen und neuerdings auch für die Icinga Director Branches an.

In diesem Zuge haben Icinga immer wieder Anfragen erreicht, ob nicht auch eine kleinere Subscription-Variante angeboten werden kann – vor allem für kleine Umgebungen, welche sich gerade im Aufbau befinden. Daher hat Icinga die Icinga Developer Subscription ins Leben gerufen.

Für wen ist die Icinga Developer Subscription gedacht?

Diese Subscription ist für kleine Umgebungen mit nicht mehr als 20 überwachten Systemen vorgesehen. Genauere Angaben dazu findet ihr unter icinga.com.

Was bekomme ich kostenfrei?

Mit der Icinga Developer Subscription bekommt ihr den kompletten Zugang zu allen aktuell in den Icinga Respositories verfügbaren Paketen folgender Distributionen:

  • Red Hat Enterprise Linux
  • Amazon Linux 2
  • Suse Linux Enterprise Server

Alle RHEL Pakete können auch mit Distributionen genutzt werden, welche 100% binärkompatibel zu Red Hat Enterprise Linux sind (z.B. Oracle Linux, Rocky Linux, AlmaLinux).

Wo bekomme ich weitere Informationen?

Weitere Infos bekommt ihr direkt auf icinga.com. Das Icinga Team hat dort noch viele weitere Punkte erklärt und freut sich auf eure Anfrage, wenn ihr die oben genannten Kriterien erfüllt.

Ansonsten könnt ihr euch natürlich auch immer vertrauensvoll an uns wenden. Wir freuen uns auf eure Anfrage!

Martin Krodel
Martin Krodel
Head of Sales

Der studierte Volljurist leitet bei NETWAYS die Sales Abteilung und berät unsere Kunden bei ihren Monitoring- und Hosting-Projekten. Privat reist er gerne durch die Weltgeschichte und widmet sich seinem ständig wachsenden Fuhrpark an Apple Hardware.

NETWAYS Webinare – Die nächsten Themen

Wie viele vielleicht wissen führen wir auf unserem YouTube-Kanal eine Vielzahl von Webinaren durch. Diese handeln nicht nur von Icinga, sondern beispielsweise auch Elastic und Graylog. Im Laufe der Zeit sind wir von den einzelnen, getrennten Webinaren zu Serien gewechselt, in welchen wir nicht nur Icinga von Anfang bis Ende installiert und konfiguriert haben, sondern auch Elastic.

Graylog Webinar-Serie

Um diesen Kreis zu vervollständigen, planen wir aktuell eine Webinar-Serie zu Graylog. Hierzu haben wir bereits mit dem groben Überblick zu Graylog begonnen und werden in den nächsten Monaten diese Themen weiter ausbauen und ähnlich wie bei Elastic, eine Schritt für Schritt Reihe durchführen, um einzelne Themenbereiche zielgerichtet zu erläutern und zu erklären. Beinhaltet davon wird sein:

  • Installation und Konfiguration
  • Inputs und Pipelines
  • Graylog Marketplace
  • Dashboards und Visualisierung
  • Graylog Operations
  • Graylog Security

Natürlich sind wir für Vorschläge und Themeninhalte offen und können diese sowohl vorab als auch während der Webinare – sofern möglich – aufzeigen.

Elastic Webinare

Unsere Elastic Webinar-Reihe ist bereits mit einigen Themen versorgt worden. Dennoch gibt es hier noch einige Punkte, welche wir gezielt in weiteren Webinaren ansprechen wollen. Das beinhaltet unter anderem:

  • Elastic Enterprise
  • Pipelines
  • Elastic Security
  • Elastic Agent

Damit wären die ersten, wichtigsten Themen rund um Elastic abgeschlossen und können in künftigen Webinaren auf die Neuheiten in den jeweiligen Versionen eingehen.

Icinga Webinare

Mit den Webinaren zur Open Source Monitoring Lösung Icinga haben wir vor vielen Jahren angefangen und führen diese stetig weiter. Auch wenn wir bereits die größten Themenbereiche abgedeckt haben, ist unser Ziel weiterhin allgemeine Icinga Webinare durchzuführen, haben aber auch bereits einige weitere Themen in der Pipeline:

  • Icinga DB Installation
  • Migration von IDO zu Icinga DB
  • Icinga for Windows

Der wichtigste Bereich wird hier zunächst die Icinga DB sowie die Migration von der IDO sein. Darüber hinaus bietet Icinga for Windows noch eine Reihe an Möglichkeiten, das Windows Monitoring noch besser vorzustellen und einzelne Punkte detaillierter zu beleuchten.

Prometheus Webinare

Seit neuestem haben wir auch Prometheus als Produkt im Portfolio und möchten hier natürlich nicht die Gelegenheit auslassen, dieses Open Source Tool ebenfalls in verschiedenen Webinaren vorzustellen. Der erste Termin musste aus organisatorischen Gründen zwar abgesagt werden, sind aktuell aber bereits an der Terminfindung für neue Slots.

Wo finde ich die Termine

Wir werden auf unserem YouTube-Kanal Termine zu den Webinaren einplanen, sobald wir fixe Slots verfügbar haben. Hierfür am besten den Kanal abonnieren und die Glocke aktvieren, um über Neuheiten informiert zu werden. Alternativ kann man auch unseren Webinar-Kalender abonnieren und verpasst somit keine Termine mehr!

 

Wir freuen uns wie immer über einen regen Austausch und werden im Laufe der nächsten Wochen und in 2023 die Themen und Termine weiter ausbauen. Bei Feedback, Fragen oder Themenanregungen freuen wir uns natürlich über eine Kontaktaufnahme!

Christian Stein
Christian Stein
Lead Account Manager

Christian kommt ursprünglich aus der Personalberatungsbranche, wo er aber schon immer auf den IT Bereich spezialisiert war. Bei NETWAYS arbeitet er als Senior Sales Engineer und berät unsere Kunden in der vertrieblichen Phase rund um das Thema Monitoring. Gemeinsam mit Georg hat er sich Mitte 2012 auch an unserem Hardware-Shop "vergangen".

Icinga: Installer, Diagnostics, Support Collector

Beim letzten Mal habe ich über Troubleshooting, Debugging und Performance innerhalb von Icinga for Windows geredet und heute wird das Ganze mal etwas Allgemeiner für Icinga und zwar ein paar Projekte, die dem ein oder anderen gar nicht bekannt sind, beziehungsweise deren Nützlichkeit in Hinsicht auf Informationsbeschaffung und Testen, was fürs Troubleshooting und Debugging auch nicht gerade unwichtig ist.

Icinga Installer

Zum einen wäre da der Icinga Installer, welcher eine exzellente Möglichkeit darstellt, schnell und einfach eine Icinga-Instanz zum Laufen zu bringen. Entsprechend einfach ist es auch, sich schnell mit ein oder zwei virtuellen Maschinen eine Icinga-Testumgebung zu zaubern, ohne viel Zeit in Konfigurationsdateien zu verbringen.

Hierbei bietet der Icinga-Installer unterschiedliche Installations-Szenarien an. Respektive ‘server-ido-mysql’ & ‘server-ido-pgsql’ für Icinga-Master; ‘worker’ für Icinga-Satelliten; und ‘agent’ für Icinga-Agenten.

Die Installation des Icinga-Installers ist ebenso denkbar simpel, da dieser im NETWAYS Packages Repository enthalten ist. Einfach das entsprechende Repository hinzufügen und daraufhin mit dem Paketmanager der Wahl installieren. Mehr dazu ist auch hier zu finden: https://github.com/NETWAYS/icinga-installer

Darüber hinaus kann der Installer auch im produktiven Betrieb zum Konfigurationsmanagement eingesetzt werden.

Icinga 2 diagnostics

Bei Icinga 2 diagnostics handelt es sich, um ein Bash-Script, das Daten der Umgebung sammelt und gegebenenfalls Anomalien entdeckt. Eigentlich ist das Skript zwar dafür gedacht, dass Daten gesammelt werden können, um diese mit entsprechenden Kanälen zu teilen, aber im Zweifelsfall kann es durchaus auch aufschlussreich sein, um einen simplen Fehler zu finden. Und das Skript findet ihr hier: https://github.com/Icinga/icinga2-diagnostics

Aber Vorsicht beim Teilen der Umgebungsinformationen in der Community. Immerhin enthält dieser mitunter auch Passwörter.

Support Collector

Wenn man schon Icinga 2 diagnostics erwähnt, dann kann man da genauso gut auch noch den Support Collector, welcher im eigenen NETWAYS Supports Anwendung findet, erwähnen. Dieses Projekt ist hier Zuhause: https://github.com/NETWAYS/support-collector

Genauso wie Icinga2 diagnostics ist auch der Support Collector eine gute Wahl um Konfiguration zu prüfen und erinnert vor allem den Laien daran, welche Datei dieser noch vergessen hat. Auch hier ist wieder Vorsicht geboten, die gesammelten Daten zu teilen, immerhin sind auch hier Passwörter enthalten.

Was noch?

An der Stelle ist final noch anzumerken, wie hilfreich es ist, sich Backups von Konfigurationen der Umgebung zu machen. Hierzu sollte man natürlich manuell und kontrolliert Backups anfertigen und weder Icinga2 diagnostics noch den Support Collector als Alternative betrachten, aber gelegentlich einen Abzug der Umgebung zu haben durch eines der beiden Tools ist schon praktisch. Auch der Installer kann zur Sicherung der Konfiguration und deren Wiederherstellung genutzt werden.

Es ist nicht selten der Fall, dass man glaubt, man hätte gar nichts geändert und ein diff zwischen der aktuellen zones.conf und der aus dem Support-Collector vor drei Wochen behauptet das Gegenteil.

Und eine entsprechende Testumgebung, die mit dem Icinga-Installer binnen 10 Minuten stehen könnte, gibt einen die Möglichkeit neue Konfiguration vorher an anderer Stelle als der Produktivumgebung zu testen, beziehungsweise die Möglichkeit Fehler nachzustellen und somit fehlerhafte Konfiguration zu identifizieren. Oder um es anders auszudrücken, ein Fehler ist einfacher zu beheben, wenn man klar weiß, wie er entstanden ist.

Und wenn dann der Fehler noch immer nicht gefunden ist, dann bleibt einem noch die Community oder NETWAYS Support, um dem Problem auf die Spur zu kommen.

 

Alexander Stoll
Alexander Stoll
Consultant

Alex hat seine Ausbildung zum Fachinformatiker für Systemintegration bei NETWAYS Professional Services abgeschlossen und ist nun im Consulting tätig. Vereinzelt kommt es auch vor das er an Programmierprojekten mitarbeitet. Auch privat setzt er sich sehr viel mit Informationstechnologie auseinander, aber jenseits davon ist auch viel Zeit für Fußballabende, Handwerkerprojekte und das ein oder andere Buch.

Icinga Director Branches veröffentlicht

Der Icinga Director kommt mit einer Vielzahl an Features um Icinga Konfigurationen im Web Interface zu erstellen und zu bearbeiten und wird genau aus diesem Grund von vielen Nutzer:Innen so gerne genutzt. Um dieses Featureset noch weiter auszubauen, hat Icinga das Director Branches Modul veröffentlicht – eine neue Erweiterung für den Icinga Director.

Dieses Modul stellt eine sichere, virtuelle Arbeitsumgebung im Director zur Verfügung. Nach der Umstellung auf einen Custom Configuration Branch werden alle Änderungen nur dann Teil der Icinga Konfiguration, wenn ihr euch zu einem Merge entscheidet. In diesen Branches können sowohl einzelne Nutzer als auch ganze Teams arbeiten und die jeweiligen Konfigurationen verwalten.

Arbeiten mit Configuration Branches

Mit den Configuration Branches könnt ihr eure Icinga Konfiguration in einem parallelen Branch erstellen und bearbeiten. Damit lassen sich in aller Ruhe Änderungen vorbereiten, ohne dass ihr die Deployments von anderen Nutzer:Innen blockiert. Wenn die Arbeiten in dem Branch abgeschlossen sind, können ihr einen Merge Request erstellen. So fließen eure Anpassungen zurück in den Hauptbranch des Directors und das Deployment erfolgt dann über den Hauptbranch.

Dieser Workflow ermöglicht es eurem Team bestimmte Tasks auf verschiedene Teams zu verteilen, wobei ihr euch eine saubere und überprüfbare Konfiguration bewahrt. Jeder Merge Request beinhaltet einen Kommentar, welcher die Änderungen im Detail beschreibt. Weiterhin könnt ihr jederzeit in die einzelnen User Branches springen, um euch alle Anpassungen genau anzusehen.

Erweitertes Activity Log

Bei der Nutzung der Director Branches wird das Activity Log des Directors in zwei Teile aufgesplittet. Oben seht ihr jetzt nur noch die Änderungen innerhalb eines Branches. Im unteren Teil der Anzeige finden sich alle Einträge des Hauptbranches, welcher für das Deployment der Konfiguration genutzt wird. Außerdem ist jeder Eintrag im Activity Log mit einem Kommentar versehen.

Erzwungene Configuration Branches

Die Director Branches kommen mit unterschiedlichen Berechtigungen für Benutzer und Teams. Somit können die Nutzer:Innen genau die Services und Hosts bearbeiten, für die sie zuständig sind, ohne sich Sorgen machen zu müssen, ob dies ggf. Auswirkungen auf das komplette Deployment hat.

Verfügbarkeit des Moduls

Die Icinga Director Branches stehen in der Version 1.1 allen Icinga Supportvertrags- und Icinga Subscriptionkunden zur Verfügung. Falls ihr euch für einen Test für 60 Tage, einen Supportvertrag oder eine Icinga Subscription interessiert, fragt uns einfach! Weitere Informationen zu den Director Branches findet ihr in der Dokumentation.

Martin Krodel
Martin Krodel
Head of Sales

Der studierte Volljurist leitet bei NETWAYS die Sales Abteilung und berät unsere Kunden bei ihren Monitoring- und Hosting-Projekten. Privat reist er gerne durch die Weltgeschichte und widmet sich seinem ständig wachsenden Fuhrpark an Apple Hardware.