fabaccess-docs/source/configuration/configfile_ger.md
2023-01-23 14:09:37 +01:00

6.8 KiB
Raw Permalink Blame History

Konfigurationsdatei

Um einen FabAccess Server zu starten, muss eine Konfigurationsdatei eingeladen werden.

Diese Datei enthält die Konfigurationen für den Space, Maschienen, Rollen, Aktoren und Initatoren. Für den Start stellen wir eine vereinfachte Konfigurationsdatei bereit. Diese findet ihr hier.

Für die Konfigurationdatei verwenden wir DHALL, damit können auch in der Datei schon komplexe und sich wiederholende Strukturen abgebildet werden. Der Standardname der Konfigurationsdatei ist bffh.dhall.

Die Konfigurationsdatei muss bei jedem Start des Server übergeben werden und stellt die persistenten Daten des Spaces bereit. Gestartet wird der Server daher beispielsweise mit cargo run -- -c bffh.dhall

Die Konfigurationsdatei strukturiert sich in 4 Abschnitte:

  • Allgemeine Einstellungen
  • Maschinen
  • Aktoren
  • Initiatoren

Allgemeine Einstellungen

In den Allgemeinen Einstellungen kann der Domain und der Name des Servers festgelegt werden. Die diese diehnen dazu, dass Nutzer sich mit euerem Server verbinden könenn. Und spätere Föderation möglich ist. Um eine sichere Kommunikation zwischen Client und Server aufzubauen, sollte auch ein TLS-Zertifikat eingebunden werden. Wie ihr ein Zertifikat einbinden könnt, findet ihr hier.

Auch können hier die Speicherorte für die interne Datenbank und das Audit-Log festgelegt werden. BFFH erstellt aus der Konfigurationsdatei und den eingeladenen Nutzer eine Dateibasierte Datenbank. Diese wird mit jedem Start und somit einladen der Konfigurationsdatei abgeglichen. Für eine BackUp-Stategie sollte diese Datei miteinbezogen werden.

Maschinen

Maschinen ist der verwendetet Überbegriff der Geräte, Maschinen oder andere Gegenstände bezeichnet. Teilweise wird die Maschine auch als Resource bezeichnet.

Eine Maschine besitzt einen Namen und eine optionale Beschreibung. Diese Informationen werden dem Nutzer im Client angezeigt. Auch kann zusätzlich ein externer Link zu einem Wiki eingebunden werden. In dem weitere Informationen hinerlegt sein könnne.

Auch lassen sich Maschinen kategorisieren, um sie im Client zusammenfassen zu können. Hierbei handelt es sich nur um eine optische Konfiguration, die nicht als Datenquelle verwendet werden sollte.

Das Maschinenmodel, dass wir verwenden besitzt 6 Zustände.

  • Free: Eine Maschine ist nicht in Verwendung und kann von berechtigten Nutzern ausgeliehen werden.
  • In Use: Eine Maschine wird von einem Nutzer verwendet. Manager von Maschinen können hierbei sehen, welcher Nutzer die Maschine gerade verwendet hat. Sollte der Nutzer die Maschine zurückgeben, dann wird der Nutzer als letzter Nutzer hinterlegt. Dieser Nutzer ist durch die Verwendung verpflichtet die Sauberkeit der Maschine wieder herzustellen, welche in der Dokumentation hinterlegt ist.
  • Reserved: Eine Maschine wurde von einem Nutzer für einen bestimmten Zeitraum reserviert und kann nur von diesem Nutzer ausgeliehen werden. Wir möchten nicht, dass Maschinen permanet oder ohne Nutzungsabsicht reserviert werden können, daher können Maschinen nur für einen definierten Zeitraum auf dem Zeitpunkt der Reservierung reserviert werden. Somit können Maschinen für die Anfahrt zum Space reserviert werden und der Nutzer kann dann die Maschine verwenden.
  • Blocked: Eine Maschine kann von einem Manager blockiert werden. Das ermöglicht eine Blockierung abseits von der Reservierung. Der Zustand sollte verwendet werden, wenn für eine Lehreinheit kurzfristig die Maschine zur Verfügung stehen soll oder für ein Projekt mehrere Tage in Verwendung ist.
  • Disabled: Eine Maschine kann auch außerbetrieb genommen werden, sollte diese nicht vorhanden oder defekt sein.

Um auch andere Zustände als Free, In Use und Reserved zu erreichen, muss der Nutzer die ´Manage´ Berechtigung besitzten. Die Berechtigungen für Maschinen sind in 4 Teile aufgeteilt.

  • Disclose: Diese Berechtigung ermöglicht es dem Nutzer die Maschine zu entdecken, also beispielsweise in der Maschinenliste im Client angezeit zu bekommen.
  • Read: Mit dieser Berechtigung kann ein Nutzer Informationen zu der Maschine abrufen, wie zu Beispiel die Beschreibung oder den Zustand. Sollte ein Nutzer eine Read Berechtigung aber keine Disclose Berechtigung haben, dann kann der Nutzer auch Informationen zu dieser Maschine abrufen. Um die Maschine auswählen zu können muss diese dann aber mit einem QR-Code oder einem NTAG markiert sein.
  • Write: Wenn ein Nutzer diese Berechtigung besitzt, dann kann er die Maschine verwenden, als über den Ausleihprozess nutzten. Oder auch die Maschine reservieren.
  • Manage: Sollte ein Nutzer die Maschine nicht zurückgegeben haben, aber nicht mehr vor Ort sein. Dann kann ein Manager mit der Berechtigung den neuen Status der Maschine festsetzten. Mit der Berechtigung können auch Zustände wie Blocked oder Disabled erreicht werden.

Um Maschinen eindeutig zu ordnen zu können, muss der Maschine eine ID zugeordnet werden. Mit dieser ID kann in der weiteren Konfiguration dann auch ein Aktor oder Initiator an die Maschine gebunden werden. Der Name der Maschine ist dabei unabhängig und frei wählbar. Auch kann der Name im Gegensatz zur ID mehrmals verwendet werden.

Rollen

Um auf Maschinen zugreifen zu können, müssen Rollen erstellt werden, die dann Nutzern zu geordnet werden können. Eine Rolle enthält hierbei eine oder mehrere Berechtigungen. Auch können Rollen andere Rollen enthalten, wodruch diese dann die Berechtigungen der anderen Rollen erhalten.

Ein Nutzer dem eine Rolle zugewiesen wird, erhält dadruch alle Berechtigungen, welche der Rolle zugewiesen sind.

Durch die granuelle Aufteilung der Berechtigungen der Maschinen und der Kombination mit Rollen lassen sich komplexe Struturen in einem Space umsetzten.

Eine Rolle kann auch Wildcard Berechtigung enthalten. Dabei wird mit einem * oder einem + die Berechtigungen für einen Unterbereich der Rolle diefiniert.

Berechtigungen werden hierbei mit einen . unterteilt. Das ist für die Verwendung von Wildcards wichtig, um diese entsprechend nutzten zu können.

Aktoren

Aktoren sind Scripte oder Module, welche bei einer Statusänderung der Maschine ausgeführt werden. Die Informationen wie man einen eigenen Actor baut, findest du hier.

Aktoren werden zuerst mit den Parametern definiert und können denn mit der festgelegten ID an eine Maschine gebunden werden. Die Aktoren können auch an mehrere Maschinen gebunden werden und auch eine Maschine kann mit mehreren Aktoren verbunden werden.

Initiatoren

Initiatoren sind Scripte oder Module, welche den Status einer Maschine ändern können. Die Informationen wie man einen eigenen Initiatoren baut, findest du hier.

Initiatoren werden zuerst mit den Parametern definiert und können denn mit der festgelegten ID an eine Maschine gebunden werden. Die Initiatoren können auch an mehrere Maschinen gebunden werden und auch eine Maschine kann mit mehreren Initiatoren verbunden werden.