You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
@@ -24,15 +25,13 @@ All diese „Artefakte“ können mit der Bakery-API in einer einheitlichen Synt
24
25
Ein Anwendungsfall ist zum Beispiel der folgende:
25
26
Sie haben die Einführung in die xref:devel_intro#[Entwicklung von Erweiterungen für {CMK}] gelesen und davon inspiriert Ihr eigenes xref:devel_check_plugins#[agentenbasiertes Check-Plugin] mit zugehörigem Agentenplugin geschrieben.
26
27
Beide haben Sie dann zu einem xref:mkps#[{CMK}-Erweiterungspaket (MKP)] zusammengefasst.
27
-
// In der {CMK} Exchange haben wir für dieses Beispiel das MKP link:https://exchange.checkmk.com/p/hello-world[Hello world!^] als ein einfaches Template hinterlegt.
28
28
29
29
Nun wollen Sie das Agentenplugin konfigurierbar machen (z.B. nur von bestimmten Benutzern oder auf bestimmten Hosts ausführen lassen) und zusätzlich Aktionen bei der Installation oder Deinstallation des Agentenpakets durchführen.
30
30
Dazu können Sie die Bakery-API nutzen -- als Paketierungs- und Verteilungshilfe, wie wir in diesem Artikel an einem Beispielszenario zeigen werden.
31
31
Dabei werden zwei neue Dateien erstellt, die dann zusammen mit den vorhandenen Plugin-Dateien zu einem neuen MKP geschnürt werden können.
32
-
// MFS: Nur noch ein MKP, das dafür besser dokumentiert:
33
32
Dafür finden Sie in der {CMK} Exchange ein ausführlich kommentiertes Beispiel: das link:https://exchange.checkmk.com/p/hello-world[_Hello world!_ MKP^] (link:https://github.com/Checkmk/checkmk-docs/tree/{gitbranch}/examples/bakery_api[ausgepackt auf GitHub^]), welches eng an das in diesem Artikel vorgestellte Beispielszenario angelehnt ist.
34
33
35
-
*Hinweis:* Die Bakery-API stellt keine Funktionen zur Verfügung für die Konfiguration des Bakery Plugins, d.h. für die Erstellung des zugehörigen Regelsatzes, und auch nicht für die _Inhalte_ der mit dem Plugin bereitgestellten Dateien, also z.B. die Agentenplugins.
34
+
Beachten Sie, dass die Bakery-API keine Funktionen zur Verfügung stellt für die Konfiguration des Bakery Plugins, d.h. für die Erstellung des zugehörigen Regelsatzes, und auch nicht für die _Inhalte_ der mit dem Plugin bereitgestellten Dateien, also z.B. die Agentenplugins.
36
35
37
36
[TIP]
38
37
====
@@ -45,39 +44,36 @@ Falls mit der Bakery-API erstellte Pakete auf {RE} installiert werden, wird die
45
44
[#api_doc]
46
45
== Die API-Dokumentation
47
46
48
-
Die API-Dokumentation ist nicht Teil des Benutzerhandbuches, sondern Teil des Quellcodes von {CMK}.
49
-
50
-
[#versioning]
51
-
=== Versionierung
52
-
53
47
Software und Dokumentation der Bakery-API stammen aus der gleichen Quelle.
54
48
Daher passt die API-Dokumentation stets zur Software und beschreibt genau das, was die API kann --
55
49
und deshalb ist es auch nicht nötig, den Referenzteil der verfügbaren Funktionen, Klassen, Parameter etc. im {CMK}-Handbuch zu beschreiben.
56
50
Stattdessen finden Sie die API-Dokumentation außerhalb dieses Handbuchs, direkt in Ihrer {CMK}-Instanz.
57
51
52
+
53
+
[#versioning]
54
+
=== Versionierung
55
+
58
56
Die API mit ihrer Dokumentation ist versioniert und nutzt dabei eine zweistufige Nummerierung nach dem link:https://semver.org/lang/de/[Semantic Versioning 2.x^] Standard im Format `X.Y`, wobei `X` für eine _Major Version_ steht und `Y` für eine _Minor Version_.
59
57
Eine neue Minor Version enthält neue, rückwärtskompatible Funktionen.
60
58
Eine neue Major Version kann dagegen Änderungen enthalten, die die API inkompatibel mit der vorherigen Major Version machen.
61
59
60
+
62
61
[#history]
63
62
=== Versionsgeschichte und -ausblick
64
63
65
64
Jedes Plugin deklariert beim xref:access_api[Zugriff auf die API] explizit die API-Version, auf der es basiert.
66
-
Version `1` ist die seit {CMK}{v20} aktuelle Version der Bakery-API, die in diesem Artikel beschrieben wird.
67
-
68
-
{CMK}{v25} wird Version `2` der Bakery-API einführen, allerdings können die beiden Versionen `1` und `2` auch in {v25} noch parallel benutzt werden.
69
-
Das heißt, diesem Artikel folgend erstellte Plugins werden wenigstens in {CMK}{v25} noch funktionieren, sehr wahrscheinlich auch mit {v26}.
70
-
Darüber hinaus gehende Aussagen können zum Zeitpunkt der letzten Bearbeitung dieses Abschnittes nicht getroffen werden.
65
+
Version 1 ist die seit {CMK}{v20} aktuelle Version der Bakery-API, die in diesem Artikel beschrieben wird.
71
66
72
-
// Die API folgt einer anderen Versionierung als die {CMK}-Software.
73
-
// Trotzdem ist die Zuordnung der Versionen von API-Dokumentation und {CMK}-Software sehr einfach, wie Sie im nächsten Kapitel erfahren.
67
+
{CMK}{v25} führt Version 2 der Bakery-API ein, allerdings können die beiden Versionen 1 und 2 auch in {v25} noch parallel benutzt werden.
68
+
Das heißt, diesem Artikel folgend erstellte Plugins werden wenigstens in{CMK}{v25} noch funktionieren, sehr wahrscheinlich auch darüber hinaus.
74
69
75
70
[TIP]
76
71
====
77
-
Die zur xref:ruleset[Konfiguration] von Bakery-Plugins in der {CMK}-GUI verwendete Rulesets-API folgt einer eigenen Versionsgeschichte.
72
+
Die zur xref:ruleset[Konfiguration] von BakeryPlugins in der {CMK}-GUI verwendete Rulesets-API folgt einer eigenen Versionsgeschichte.
78
73
Bitte beachten Sie für diesen Teil Ihrer Erweiterungspakete unseren Artikel zur xref:devel_check_plugins#[Entwicklung von Check-Plugins].
79
74
====
80
75
76
+
81
77
[#access_doc]
82
78
=== Zugriff auf die API-Dokumentation
83
79
@@ -86,9 +82,12 @@ Sie ist in jeder {CMK}-Site enthalten und kann über die {CMK}-GUI geöffnet wer
86
82
87
83
image::bakeryapi_help_menu.png[alt="Help-Menü in der Navigationsleiste.",width=65%]
88
84
89
-
Wenn Sie Plugins außerhalb eines Instanzkontextes entwickeln und testen wollen, was ab {CMK}{v24} möglich ist, können Sie auf eine link:https://docs.checkmk.com/plugin-api/{current-major}/cmk.base.plugins.bakery.bakery_api/[auf diesem Server gehostete Kopie^] zugreifen.
90
-
In der mit link:https://www.sphinx-doc.org/[Sphinx^] generierten Dokumentation wird die gesamte für die Entwicklung von {CMK}-Plugins relevante API-Dokumentation angezeigt,
91
-
d.h. Sie finden hier neben der Dokumentation zur Bakery-API auch die zur Check-API.
85
+
[TIP]
86
+
====
87
+
Wenn Sie Plugins unabhängig von einer {CMK}-Instanz entwickeln und testen wollen, können Sie auf eine Kopie zugreifen, die auf link:https://docs.checkmk.com/plugin-api/{gitbranch}/cmk.base.plugins.bakery.bakery_api/[docs.checkmk.com/plugin-api^] bereitgestellt ist.
88
+
In der mit link:https://www.sphinx-doc.org/[Sphinx^] generierten Dokumentation wird die gesamte für die Entwicklung von {CMK}-Plugins relevante API-Dokumentation angezeigt,
89
+
d.h. Sie finden hier neben der Dokumentation zur Bakery-API zum Beispiel auch die zur Check-API.
90
+
====
92
91
93
92
94
93
[#using]
@@ -116,12 +115,13 @@ Das Windows-Plugin liest die Einträge `hello_world.user` und `hello_world.conte
116
115
Der Zugriff auf diese Ressourcen muss jeweils im Agentenplugin umgesetzt werden und ist nicht Gegenstand der Bakery-API.
117
116
118
117
* Für Linux und Solaris gibt es zusätzlich ein Programm `some_binary`, das mit ausgeliefert werden soll.
119
-
Das ist z.B. ein kleines Shell-Skript, um das Plugin auch per Kommando unabhängig vom {CMK}-Agenten starten zu können.
118
+
Das ist z.B. ein kleines Shell-Skript, um das Plugin auch per Befehl unabhängig vom {CMK}-Agenten starten zu können.
120
119
121
120
* Unter Linux und Solaris soll nach der Installation des Agenten per Paketmanager-Routine in das Syslog geschrieben werden, dass `hello_world` installiert wurde.
122
121
Nach der Deinstallation des Agenten soll analog in Syslog geschrieben werden, dass `hello_world` deinstalliert wurde. +
123
122
Üblich sind unter Linux `postinst`- und `prerm`-Skripte: im `postinst`-Skript erstellt man beispielsweise einen Cache und startet einen Daemon, im `prerm`-Skript kann man dann den Daemon wieder stoppen und den Cache löschen. Weitere Informationen zur Verwendung von „Maintainer Scripts“ finden Sie in der link:https://www.debian.org/doc/debian-policy/ch-maintainerscripts.html[Debian-Dokumentation^].
124
123
124
+
125
125
[#ruleset]
126
126
=== Regelsatz erstellen
127
127
@@ -133,7 +133,7 @@ Auch die Pfadkonventionen für das Ablegen von Regelsätzen sind dort beschriebe
133
133
134
134
[TIP]
135
135
====
136
-
Falls Sie Regelsätze, die noch bis {CMK} {v23} unterstützt wurden, auf die aktuellen Programmierschnittstellen portieren wollen, öffnen Sie link:https://docs.checkmk.com/2.2.0/de/bakery_api.html#ruleset[die Version dieses Artikels im Handbuch von {v22}^] in einem neuen Tab oder Fenster.
136
+
Falls Sie Regelsätze, die noch bis {CMK} {v23} unterstützt wurden, auf die aktuellen Programmierschnittstellen portieren wollen, öffnen Sie link:https://docs.checkmk.com/2.2.0/de/bakery_api.html#ruleset[diesen Artikel im Handbuch der Version {v22}^] in einem neuen Tab oder Fenster.
137
137
Vergleichen Sie diesen Seite an Seite mit dem entsprechenden xref:extended_ruleset[Abschnitt in diesem Artikel].
138
138
Die vorgenommene Konfiguration ist so ähnlich, dass die Gegenüberstellung leicht als Portierungshilfe dienen kann.
139
139
====
@@ -238,14 +238,10 @@ Die aus diesem Regelsatz resultierende GUI zeigt der folgende Screenshot:
238
238
239
239
image::bakeryapi_settings.png[alt="GUI des Regelsatzes zur Konfiguration des Plugins."]
240
240
241
-
// Die Konfiguration findet über den Namen, unter dem der Regelsatz registriert wird, und dem Präfix `agent_config:` zum Bakery Plugin.
242
-
// Dabei muss der Regelsatz unter dem gleichen Namen wie das Bakery Plugin registriert werden, jedoch mit dem zusätzlichen Präfix `agent_config:`.
243
-
244
241
245
242
[#create_plugin]
246
243
=== Plugin-Datei erstellen
247
244
248
-
// MFS: umformuliert
249
245
Die Plugin-Datei `hello_world.py` wird im lokalen Teil der Instanzverzeichnisstruktur unter `~/local/lib/check_mk/base/cee/plugins/bakery/` abgelegt.
250
246
251
247
Ein Bakery Plugin wird in Form einer Datei angelegt, die als Python 3-Modul importiert wird.
@@ -258,7 +254,6 @@ Nach {CMK}-Konvention beginnen daher auch Plugin-Dateien mit den folgenden Zeile
258
254
# -*- coding: utf-8 -*-
259
255
----
260
256
261
-
// MFS: umformuliert
262
257
Da es sich um ein Modul handelt, müssen alle benötigten Klassen und Funktionen zu Beginn importiert werden.
263
258
264
259
@@ -350,7 +345,6 @@ der Plugin-Name (`name`) und die Funktionen (`files_function`, `scriptlets_funct
350
345
351
346
Namen für Typ-Annotationen (`FileGenerator`, `ScriptletGenerator`, `WindowsConfigGenerator`, `WindowsConfigContent`) können optional zur Typisierung der spezifizierten Funktionen verwendet werden, z.B. so:
352
347
353
-
// MFS: Fix indentation
354
348
[{python}]
355
349
----
356
350
def get_files(conf: dict) -> FileGenerator:
@@ -381,7 +375,6 @@ Die folgenden Hilfsfunktionen können verwendet werden:
381
375
382
376
Die Registrierung des Plugins bei {CMK} mit Plugin-Namen und Funktionen erfolgt über die Funktion `register.bakery_plugin`:
@@ -457,10 +446,8 @@ Schließen Sie daher Ihren Befehlssatz nicht mit einem `exit 0` ab, damit auch a
457
446
=== Agentenplugin für Linux
458
447
459
448
Die Konfiguration für das Linux-Agentenplugin sieht wie folgt aus.
460
-
// MFS: Casting
461
449
Achten Sie darauf, das übergebene Intervall nach `Integer` zu konvertieren, da Regelsatz und Bakery für Zeitspannen unterschiedliche Datentypen nutzen.
@@ -505,7 +492,6 @@ Schließlich soll das zusätzlich auszuliefernde Shell-Skript `some_binary` als
505
492
506
493
Setzt man die bisher vorgestellten Teile zusammen -- und komplettiert sie, dann sieht ein mögliches, vollständiges Plugin für das xref:example[Beispielszenario] so aus:
@@ -638,12 +624,12 @@ Wie immer sind alle Angaben hier relativ zum Instanzverzeichnis (z.B. `/omd/site
638
624
[cols="50,~",options="header"]
639
625
|===
640
626
|Pfad |Bedeutung
641
-
|`local/lib/check_mk/base/cee/plugins/bakery/` |Verzeichnis für das Bakery-Plugin (im Beispiel `hello_world.py`).
642
-
|`local/share/check_mk/agents/plugins/` |Verzeichnis zur Ablage der Unix-artigen Agentenplugins.
643
-
|`local/share/check_mk/agents/windows/plugins` |Verzeichnis zur Ablage der Windows Agentenplugins.
644
-
|`local/share/check_mk/agents/` |Verzeichnis für mitgelieferte Programme oder Shell-Skripte für Unix-artige Betriebssysteme (im Beispiel `some_binary`).
645
-
|`local/share/check_mk/agents/windows/` |Verzeichnis für mitgelieferte Programme oder Shell-Skripte für Windows.
646
-
//|`local/share/check_mk/web/plugins/wato` |Verzeichnis für die Regelsatzdateien zur Konfiguration des Agentenplugins (im Beispiel `hellobakery_bakery.py`) und auch des zugehörigen Check-Plugins (z.B. für die Festlegung von Schwellwerten). Wählen Sie daher aussagekräftige Namen, um die Dateien auseinanderhalten zu können.
647
-
// MFS: Hint for prefix needed added:
648
-
|`local/lib/python3/cmk_addons/plugins/<family_name>/rulesets` |Verzeichnis für die Regelsatzdateien zur Konfiguration des Agentenplugins (im Beispiel `ruleset_hello_world_bakery.py`) und auch des zugehörigen Check-Plugins (z.B. für die Festlegung von Schwellwerten). Wählen Sie daher aussagekräftige Namen, um die Dateien auseinanderhalten zu können. Namen hier abgelegter Dateien müssen mit `ruleset_` beginnen, andernfalls ignoriert {CMK} diese.
627
+
|`~/local/lib/check_mk/base/cee/plugins/bakery/` |Verzeichnis für das BakeryPlugin (im Beispiel `hello_world.py`).
628
+
|`~/local/share/check_mk/agents/plugins/` |Verzeichnis zur Ablage der Unix-artigen Agentenplugins.
629
+
|`~/local/share/check_mk/agents/windows/plugins/` |Verzeichnis zur Ablage der Windows Agentenplugins.
630
+
|`~/local/share/check_mk/agents/` |Verzeichnis für mitgelieferte Programme oder Shell-Skripte für Unix-artige Betriebssysteme (im Beispiel `some_binary`).
631
+
|`~/local/share/check_mk/agents/windows/` |Verzeichnis für mitgelieferte Programme oder Shell-Skripte für Windows.
632
+
|`~/local/lib/python3/cmk_addons/plugins/<family_name>/rulesets/` |Verzeichnis für die Regelsatzdateien zur Konfiguration des Agentenplugins (im Beispiel `ruleset_hello_world_bakery.py`) und auch des zugehörigen Check-Plugins (z.B. für die Festlegung von Schwellwerten).
633
+
Wählen Sie daher aussagekräftige Namen, um die Dateien auseinanderhalten zu können.
634
+
Namen hier abgelegter Dateien müssen mit `ruleset_` beginnen, andernfalls ignoriert {CMK} diese.
0 commit comments