Backups automatisch über die API in der CMDB dokumentieren

background
blog-icon-white

Administratoren arbeiten im Tagesgeschäft zahlreiche Tasks ab. Die Auslastung ist überall überdurchschnittlich hoch. Die Zeit für die Dokumentation ist oft nicht vorhanden. Für die zahlreichen im Einsatz befindlichen IT-Systeme werden automatische Backups eingerichtet, um die lästige manuelle Sicherung zu minimieren. Diese Backups sind zu dokumentieren, um einen Nachweis für die Erstellung in der Dokumentation wiederzufinden. 

Hierbei kann das i-doit API zum gewünschten Ergebnis führen. Ein Backup, das beispielsweise über einen Cronjob ausgelöst und erstellt wird, kann diese Informationen automatisch an i-doit übergeben. Wie das funktioniert, zeigen wir Ihnen in diesem Artikel.

 

Erstellung einer benutzerdefinierten Kategorie: Backupverlauf

 

Jedes erstellte Backup soll in einer eigenen Kategorie aufgelistet werden. Anhand der Einträge kann exakt ermittelt werden, welche Backups wann erstellt und in welchem Pfad sie gesichert wurden.

Erstellen Sie im ersten Schritt eine benutzerdefinierte Kategorie mit dem Titel "Backupverlauf". Wechseln Sie dazu in die "Verwaltung" -> "Datenstruktur" -> "Benutzerdefinierte Kategorien". Da die neue Kategorie mehrere Backup-Einträge aufnehmen soll, benötigen Sie hier eine Multi-Value-Kategorie.

 

Anlegen einer benutzerdefinierten Kategorie in i-doit pro

Je nach Belieben können verschiedene Felder angelegt werden. Wir haben uns in diesem Beispiel für ein Datum, eine Bezeichnung, den Pfad zum Backup und den Dateinamen entschieden.

 

Im nächsten Schritt legen Sie auf dem Server, dessen Daten zu sichern sind, ein entsprechendes Backup-Script an. Existiert ein Script? Dann muss dieses angepasst werden.

 

Backup anlegen

 

Ein wichtiger Hinweis, bevor Sie beginnen:
Legen Sie bitte vor der Konfiguration eine Sicherung an. Der Einsatz der hier gezeigten Konfigurationen geschieht auf eigene Verantwortung. 

Das Backup-Script soll täglich am frühen Morgen über einen Cronjob ausgeführt werden und ein Backup einer Datenbank erstellen. Legen Sie dazu ein neues Shellscript auf dem Server an:

sudo nano backup.sh

Legen Sie zunächst die Anmeldeinformationen für die Verbindung zur Datenbank fest.

!/bin/bash
## Database backup configuration
backup_database=1  #Database
db_user="mydbuser"  #MySQL username
db_pass="mysavepassword"  #MySQL password

Bestimmen Sie den Pfad und den Namen der Backup-Datei.

backup_path="/var/backups/"
backup_filename="backup-01.sql"

Nun fehlt noch eine Bezeichnung für den Cronjob, der später in der oben erstellten Kategorie "Backupverlauf" unter "Bezeichnung" angezeigt wird.

backup_title="Cronjob-Backup"

Geben Sie die Objekt-ID des Servers in i-doit pro an. So ist das API später in der Lage, den Backup-Eintrag dem entsprechenden Objekt in i-doit pro zuzuordnen.

objectid="170033"

Das Backup-Script soll darüber hinaus weitere Informationen liefern. Beispielsweise das Datum, wann der Cronjob gelaufen ist und welchen FQDN unser Server hat. Dies können Sie über die folgenden Befehle erreichen:

######################## no editing ################################
FQDN="$(hostname -f)"
echo $FQDN
date="$(date +'%Y-%m-%d %H:%M:%S')"
echo $date
####################################################################

Damit sind die Grundelemente Ihres Scripts definiert. Nun geht es daran das eigentliche Backup durchzuführen. Dazu stoppen Sie den Apache Webserver und führen einen MySQL-Dump durch. Nutzen Sie die oben definierten Variablen für die Ausführung. Zu Testzwecken werden hier noch (optionale) echo-Befehle wie “Apache stopped” genutzt, um den aktuellen Teilabschnitt im Script nachvollziehen zu können.

sudo service apache2 stop
echo "Apache stopped"
mysqldump -hlocalhost --user=${db_user} --password=${db_pass} --all-databases > $backup_path/$backup_filename
echo "Backup created in" $backup_path$backup_filename

Nachdem das Backup erstellt wurde, wird der Apache Dienst wieder gestartet.

sudo service apache2 start
echo "Apache started"

Ihr Script sollte nun ungefähr so aussehen:

#!/bin/bash
## Database backup configuration
backup_database=1  #Database backup enabled?
db_user="root"  #MySQL username
db_pass="psw"  #MySQL password
backup_path="/var/backups/"
backup_filename="backup-01.sql"
backup_title="Cronjob-Backup"
objectid="170033"
######################## no editing ################################
FQDN="$(hostname -f)"
echo $FQDN
date="$(date +'%Y-%m-%d %H:%M:%S')"
echo $date
####################################################################
sudo service apache2 stop
echo "Apache stopped"
mysqldump -hlocalhost --user=${db_user} --password=${db_pass} --all-databases > $backup_path/$backup_filename
echo "Backup created in" $backup_path$backup_filename
sudo service apache2 start
echo "Apache started"

Jetzt ist Ihr Backup erstellt. Nun werden diese Daten noch an die CMDB übergeben. Hier kommt das i-doit pro API ins Spiel. Um dieses zu verwenden, benötigen Sie das kostenfreie i-doit pro Add-on API. Wechseln Sie dann in die "Verwaltung" und wählen SIe den Menüpunkt "Add-ons" aus. Dort finden Sie nach der Installation des API-Add-on den Punkt "JSON-RPC API".

Hier finden Sie den API-Key. Diesen API-Key benötigen Sie später, um eine Verbindung aufzubauen. 

Sollten Sie keine Benutzerauthentifizierung einsetzen, klicken Sie im folgenden Bildschirm auf "Editieren" und ändern Sie den Eintrag für "Erzwinge Authentifizierung" auf "Nein". In diesem Beispiel authentifizieren wir uns nur über den API-Key. Wenn Sie eine Benutzerauthentifizierung nutzen, muss das Script entsprechend erweitert werden.

 

Der API-Key in i-doit pro

 

Fügen Sie am Ende des Scripts folgende Befehle ein, um das curlen über die API zu intialisieren. Da Sie einen neuen Kategorieeintrag anlegen, nutzen Sie hier die Methode “cmdb.category.save”. Eine Übersicht aller API-Methoden finden Sie in unserer Knowledgebase.

curl \
--data '{
 "method": "cmdb.category.save",
  "params": {
   "language": "de",
   "apikey": "Cmxxx34iq38vpTf",
   "category": "C__CATG__CUSTOM_FIELDS_BACKUPVERLAUF",
   "object": '"$objectid"',
   "data": {
    "f_popup_c_???": "'"$date"'",
    "f_text_c_???": "'"$backup_title"'",
    "f_link_c_???": "'"$FQDN${backup_path}"'",
    "f_text_c_???": "'"$backup_filename"'"
  } },
   "id": 1,
   "version": "2.0"
}

Beachten Sie in dem hier gezeigten Code bitte die Zeilen mit "???".
In jeder i-doit-Instanz werden die einzelnen Datenfelder anders benannt. Wechseln Sie nun in die zuvor erstellte benutzerdefinierte Kategorie “Backupverlauf” unter "Verwaltung -> "Datenstruktur" -> "Benutzerdefinierte Kategorien". Klicken Sie auf den Eintrag in der Liste. Hier finden Sie einen Button für die “Technische Konfiguration”.

 

Button zum Aufruf der technischen Konfiguration in i-doit pro

Nach einem Klick auf diesen Button finden Sie im unteren Teil des Bildschirms eine vollständige Übersicht Ihrer Kategoriefelder.

 

Technische Konfiguration einer benutzerdefinierten Kategorie in i-doit pro

 

In diesem Beispiel ersetzen wir bei den Datenfeldern die eben erwähnten "???" mit den Werten aus dem Konfigurationsbeispiel:

curl \
--data '{
 "method": "cmdb.category.save",
  "params": {
   "language": "de",
   "apikey": "Cmxxx34iq38vpTf",
   "category": "C__CATG__CUSTOM_FIELDS_BACKUPVERLAUF",
   "object": '"$objectid"',
   "data": {
    "f_popup_c_16959802347603160": "'"$date"'",
    "f_text_c_16959802441883960": "'"$backup_title"'",
    "f_link_c_16959802562579260": "'"$FQDN${backup_path}"'",
    "f_text_c_16959802677021400": "'"$backup_filename"'"
  } },
   "id": 1,
   "version": "2.0"
}

Schließen Sie nun am Ende noch den data-string ab, indem Sie an die letzte geschweifte Klammer ein "'\" hängen. 

"id": 1,
"version": "2.0"
}' \

Zum Schluss wird nun noch angegeben, dass dieser String als json übermittelt wird. Weiterhin muss die URL zur jsonrpc.php angegeben werden. Fügen Sie dazu einfach "src/jsonrpc.php" zu Ihrer Basis-URL hinzu:

--header "Content-Type: application/json" \
https://meineidoitinstanz.de/src/jsonrpc.php
echo "Category Backup entry created"

 

Testen des Backup-Scripts

 

Das Backup-Script ist komplett und es wird Zeit, es einmal zu testen:

sudo bash backup.sh

Überprüfen Sie nun, ob der Eintrag erfolgreich in der Kategorie "Backverlauf" des entsprechenden Servers angelegt wurde.

 

Eintrag in der benutzerdefinierten Kategorie "Backupverlauf"

 

Zum Schluss wird noch der Cronjob angelegt. In unserem Beispiel soll das Backup einmal am Tag

crontab -e
* 5 * * * bash /var/www/html/admin/backup.sh >/dev/null 2>&1

 

Zusammenfassung

 

In diesem Beispiel haben wir Ihnen eine von vielen Möglichkeiten gezeigt, um Informationen mit Hilfe des i-doit pro API automatisiert an die CMDB zu übergeben. Wenn Sie bereits vorhandene Scripte anpassen müssen, ist das Vorgehen dennoch das gleiche. Fügen Sie die technische Konfiguration ein und ergänzen Sie die Variablen mit den echten Werten, damit diese an i-doit übergeben werden.

Eine vollständige Dokumentation des API finden Sie in unserer Knowledgebase. Hier finden Sie zudem ein deutlich umfangreicheres Backup Script. Und sollten Sie weitere Fragen zu diesem Thema haben, hilft Ihnen unser Team gerne weiter.

10. Oktober 2024

i-doit 33: Neues Add-on & Subscription Center und i-doit Add-on Flows


Wir freuen uns, i-doit Version 33 vorzustellen, ein Release, das leistungsstarke neue Funktionen bietet, um Ihre IT-Dokumentations- und...

Read More

06. Oktober 2024

Einführung der neuen i-doit.com: Frisches Design und verbesserte User Experience


Haben Sie unsere neue i-doit.com Website schon GESEHEN? Entdecken Sie verbesserte Funktionen und Ressourcen.

Das Redesign dieser neuen Seite markiert...

Read More

03. September 2024

Server-Dokumentation mit i-doit


Die Server-Dokumentation umfasst die Erfassung und Speicherung wichtiger Informationen über die Server-Infrastruktur eines Unternehmens. Dazu gehören...

Read More