Skip to content

Commit 26a5532

Browse files
thomaskoslowskiMattias Schlenker
authored andcommitted
content-sync - KNW-1968 done, pick-24
1 parent bc4d272 commit 26a5532

File tree

2 files changed

+62
-85
lines changed

2 files changed

+62
-85
lines changed

src/onprem/de/bakery_api.asciidoc

Lines changed: 31 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
// -*- coding: utf-8 -*-
2-
// IGNORE Paketierungs Scriptlet Instanzkontextes ausblick Portierungshilfe
2+
// IGNORE Paketierungs ausblick Portierungshilfe
3+
// NONASCII
34
include::global_attr.adoc[]
45
= Die Bakery-API
56
:title: Die Bakery-API
@@ -24,15 +25,13 @@ All diese „Artefakte“ können mit der Bakery-API in einer einheitlichen Synt
2425
Ein Anwendungsfall ist zum Beispiel der folgende:
2526
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.
2627
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.
2828

2929
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.
3030
Dazu können Sie die Bakery-API nutzen -- als Paketierungs- und Verteilungshilfe, wie wir in diesem Artikel an einem Beispielszenario zeigen werden.
3131
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:
3332
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.
3433

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.
3635

3736
[TIP]
3837
====
@@ -45,39 +44,36 @@ Falls mit der Bakery-API erstellte Pakete auf {RE} installiert werden, wird die
4544
[#api_doc]
4645
== Die API-Dokumentation
4746

48-
Die API-Dokumentation ist nicht Teil des Benutzerhandbuches, sondern Teil des Quellcodes von {CMK}.
49-
50-
[#versioning]
51-
=== Versionierung
52-
5347
Software und Dokumentation der Bakery-API stammen aus der gleichen Quelle.
5448
Daher passt die API-Dokumentation stets zur Software und beschreibt genau das, was die API kann --
5549
und deshalb ist es auch nicht nötig, den Referenzteil der verfügbaren Funktionen, Klassen, Parameter etc. im {CMK}-Handbuch zu beschreiben.
5650
Stattdessen finden Sie die API-Dokumentation außerhalb dieses Handbuchs, direkt in Ihrer {CMK}-Instanz.
5751

52+
53+
[#versioning]
54+
=== Versionierung
55+
5856
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_.
5957
Eine neue Minor Version enthält neue, rückwärtskompatible Funktionen.
6058
Eine neue Major Version kann dagegen Änderungen enthalten, die die API inkompatibel mit der vorherigen Major Version machen.
6159

60+
6261
[#history]
6362
=== Versionsgeschichte und -ausblick
6463

6564
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.
7166

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.
7469

7570
[TIP]
7671
====
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 Bakery Plugins in der {CMK}-GUI verwendete Rulesets-API folgt einer eigenen Versionsgeschichte.
7873
Bitte beachten Sie für diesen Teil Ihrer Erweiterungspakete unseren Artikel zur xref:devel_check_plugins#[Entwicklung von Check-Plugins].
7974
====
8075

76+
8177
[#access_doc]
8278
=== Zugriff auf die API-Dokumentation
8379

@@ -86,9 +82,12 @@ Sie ist in jeder {CMK}-Site enthalten und kann über die {CMK}-GUI geöffnet wer
8682

8783
image::bakeryapi_help_menu.png[alt="Help-Menü in der Navigationsleiste.",width=65%]
8884

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+
====
9291

9392

9493
[#using]
@@ -116,12 +115,13 @@ Das Windows-Plugin liest die Einträge `hello_world.user` und `hello_world.conte
116115
Der Zugriff auf diese Ressourcen muss jeweils im Agentenplugin umgesetzt werden und ist nicht Gegenstand der Bakery-API.
117116
118117
* 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.
120119
121120
* Unter Linux und Solaris soll nach der Installation des Agenten per Paketmanager-Routine in das Syslog geschrieben werden, dass `hello_world` installiert wurde.
122121
Nach der Deinstallation des Agenten soll analog in Syslog geschrieben werden, dass `hello_world` deinstalliert wurde. +
123122
Ü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^].
124123
124+
125125
[#ruleset]
126126
=== Regelsatz erstellen
127127

@@ -133,7 +133,7 @@ Auch die Pfadkonventionen für das Ablegen von Regelsätzen sind dort beschriebe
133133

134134
[TIP]
135135
====
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.
137137
Vergleichen Sie diesen Seite an Seite mit dem entsprechenden xref:extended_ruleset[Abschnitt in diesem Artikel].
138138
Die vorgenommene Konfiguration ist so ähnlich, dass die Gegenüberstellung leicht als Portierungshilfe dienen kann.
139139
====
@@ -238,14 +238,10 @@ Die aus diesem Regelsatz resultierende GUI zeigt der folgende Screenshot:
238238
239239
image::bakeryapi_settings.png[alt="GUI des Regelsatzes zur Konfiguration des Plugins."]
240240
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-
244241
245242
[#create_plugin]
246243
=== Plugin-Datei erstellen
247244
248-
// MFS: umformuliert
249245
Die Plugin-Datei `hello_world.py` wird im lokalen Teil der Instanzverzeichnisstruktur unter `~/local/lib/check_mk/base/cee/plugins/bakery/` abgelegt.
250246
251247
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
258254
# -*- coding: utf-8 -*-
259255
----
260256
261-
// MFS: umformuliert
262257
Da es sich um ein Modul handelt, müssen alle benötigten Klassen und Funktionen zu Beginn importiert werden.
263258
264259
@@ -350,7 +345,6 @@ der Plugin-Name (`name`) und die Funktionen (`files_function`, `scriptlets_funct
350345

351346
Namen für Typ-Annotationen (`FileGenerator`, `ScriptletGenerator`, `WindowsConfigGenerator`, `WindowsConfigContent`) können optional zur Typisierung der spezifizierten Funktionen verwendet werden, z.B. so:
352347

353-
// MFS: Fix indentation
354348
[{python}]
355349
----
356350
def get_files(conf: dict) -> FileGenerator:
@@ -381,7 +375,6 @@ Die folgenden Hilfsfunktionen können verwendet werden:
381375

382376
Die Registrierung des Plugins bei {CMK} mit Plugin-Namen und Funktionen erfolgt über die Funktion `register.bakery_plugin`:
383377

384-
// MFS: Fix indentation
385378
.~/local/lib/check_mk/base/cee/plugins/bakery/hello_world.py
386379
[{python}]
387380
----
@@ -400,10 +393,8 @@ Die hier festgelegten Funktionen `get_hello_world_windows_config`, `get_hello_wo
400393
=== Konfiguration für den Windows-Agenten
401394

402395
Im Beispiel soll das Intervall zur Ausführung festgelegt werden und die Konfiguration des Plugins über zwei Variablen erfolgen können.
403-
// MFS: hinzugefügt:
404-
Achten Sie darauf, Schlüssel und Datentypen wie im oben festgelegten Regelsatz zu definieren.
396+
Achten Sie darauf, Schlüssel und Datentypen wie im xref:ruleset[oben erstellten Regelsatz] zu definieren.
405397

406-
// MFS: Fix indentation, change to float
407398
.~/local/lib/check_mk/base/cee/plugins/bakery/hello_world.py
408399
[{python}]
409400
----
@@ -429,9 +420,7 @@ Anschließend werden mit `WindowsConfigEntry` die Einträge in der YAML-xref:age
429420

430421
Unter Linux und Solaris soll bei der Installation und Deinstallation des Agenten Syslog-Meldungen geschrieben werden.
431422
Wir zeigen hier nur die Implementierung für die Linux-Distribution Debian:
432-
// Oder: Wir zeigen hier nun die Implementierung für DEB- und RPM-Pakete und Solaris:
433423

434-
// MFS: Fix indentation, fix function name, remove priority
435424
.~/local/lib/check_mk/base/cee/plugins/bakery/hello_world.py
436425
[{python}]
437426
----
@@ -457,10 +446,8 @@ Schließen Sie daher Ihren Befehlssatz nicht mit einem `exit 0` ab, damit auch a
457446
=== Agentenplugin für Linux
458447
459448
Die Konfiguration für das Linux-Agentenplugin sieht wie folgt aus.
460-
// MFS: Casting
461449
Achten Sie darauf, das übergebene Intervall nach `Integer` zu konvertieren, da Regelsatz und Bakery für Zeitspannen unterschiedliche Datentypen nutzen.
462450
463-
// MFS: Fix indentation
464451
.~/local/lib/check_mk/base/cee/plugins/bakery/hello_world.py
465452
[{python}]
466453
----
@@ -505,7 +492,6 @@ Schließlich soll das zusätzlich auszuliefernde Shell-Skript `some_binary` als
505492
506493
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:
507494
508-
// MFS: Fix indentation
509495
.~/local/lib/check_mk/base/cee/plugins/bakery/hello_world.py
510496
[{python}]
511497
----
@@ -638,12 +624,12 @@ Wie immer sind alle Angaben hier relativ zum Instanzverzeichnis (z.B. `/omd/site
638624
[cols="50,~",options="header"]
639625
|===
640626
|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 Bakery Plugin (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.
649635
|===

0 commit comments

Comments
 (0)