A Modular Approach to Configuration Storage Markus Raab Markus Raab xmpp:

Slides:



Advertisements
Ähnliche Präsentationen
Modellgetriebene Softwareentwicklung
Advertisements

DVG Dateien Dateien. DVG Dateien 2 Die Klasse File Die Klasse File stellt die Verbindung zwischen dem Filesystem des Rechners und dem.
© 2003 Guido Badertscher Spontane Vernetzung - UPnP 9. Jänner 2004 Spontane Vernetzung Guido Badertscher.
Objektorientierte Programmierung
On a Buzzword: Hierachical Structure David Parnas.
1 Named Pipes alias FIFO Haben einen Eintrag im Dateisystem und sind somit durch Zugriffsrechte identifizierbar Ermöglichen die Kommunikation zwischen.
1 NetWork File System © April 2002, G. Hellberg Network File System Konfiguration und Einsatz.
Oracle WebServer - Einführung. © Prof. T. Kudraß, HTWK Leipzig Oracle Web Application Server HTML WebServer ® File system Static HTML PL/SQL Packages.
Werkzeuge und Softwareumgebung von Christian Michele.
Uwe Habermann WPF Avalon Formulare aus VFP verwenden Venelina Jordanova
SOMA Service-Oriented Mobile learning Architecture.
Open Services Gateway Initiative
Don`t make me think! A Common Sense Approach to Web Usability
Willkommen Admin! Use Case 1: Forum-Administration -> Task 2 User erstellen -> Task 1 Anzeige User Liste -> Task 3 User löschen -> Task 5 User sperren.
Systemaufbau / Komponenten
HORIZONT 1 XINFO ® Das IT - Informationssystem Java Scanner HORIZONT Software für Rechenzentren Garmischer Str. 8 D München Tel ++49(0)89 / 540.
XML-Query. Übersicht Was ist XML-Query? Vergleich RDB XML-Dokument Syntaktisches und Use-Cases Kritik und Diskussion.
Ein Projekt des Technischen Jugendfreizeit- und Bildungsvereins (tjfbv) e.V. kommunizieren.de Blended Learning for people with disabilities.
Clean Code Software-Entwicklung als Handwerkskunst Thomas Nagel, November 2011.
Torque in Turbine Team 4 Josef Bohninger Thomas Lindenhofer
Linux Primary Domain Controller mit
Alois Schütte Advanced System Programming 2 Interprozeßkommunikation  2.1 JVM Ablaufumgebung  2.2 Java Native Interface (JNI)  Verwendung von.
Potentiale für den Channel Server-Software aktualisieren Server-Hardware erneuern Migration von Anwendungen Diese Produkte stehen vor dem Ende des Support.
1 Bauhaus-Universität Weimar ArchitekturProgrammierung Generative Entwurfsmethoden Processing Grundlagen Professur Informatik in der Architektur.
Schutzvermerk nach DIN 34 beachten TCP / IP. Schutzvermerk nach DIN 34 beachten TCP / IP und das OSI-Referenzmodell Process / Application Host-to-Host.
ROS – Robot Operating System
Ralf M. Schnell Technical Evangelist Microsoft Deutschland GmbH
Ralf M. Schnell Technical Evangelist Microsoft Deutschland GmbH.
Literary Machines, zusammengestellt für ::COLLABOR:: von H. Mittendorfer Literary MACHINES 1980 bis 1987, by Theodor Holm NELSON ISBN
FTS usage at GridKa Forschungszentrum Karlsruhe GmbH
Physik multimedial Lehr- und Lernmodule für das Studium der Physik als Nebenfach Julika Mimkes: Links to e-learning content for.
TemplaVoilá. Allgemeines Dient nicht der Erweiterung der Funktionalität bestehender TYPO3-Sites, sondern der Erhöhung der Produktivität und der Vereinfachung.
1 Konica Minolta IT Solutions Prinzip Partnerschaft MANAGED MONITORING ÜBERWACHJUNG DER SERVERINFRASTRUKTUR UND ANWENDUNGEN DIREKT AUS DER CLOUD.
Gregor Graf Oracle Portal (Part of the Oracle Application Server 9i) Gregor Graf (2001,2002)
EUROPÄISCHE GEMEINSCHAFT Europäischer Sozialfonds EUROPÄISCHE GEMEINSCHAFT Europäischer Fonds für Regionale Entwicklung Workpackage 5 – guidelines Tasks.
Berliner Elektronenspeicherring-Gesellschaft für Synchrotronstrahlung m.b.H., Albert-Einstein-Straße 15, Berlin frontend control at BESSY R. Fleischhauer.
D. Sturzebecher, Institut für Betriebssysteme und Rechnerverbund, TU-Braunschweig Tele-Teaching with MACS n Tele-Teaching Requirements and Scenarios n.
Für was, wen, wann und überhaupt? DEVOP PART IV: DSC – DESIRED STATE CONFIGURATION.
Key-Value Paare (KVP) - Metadaten für Kanäle speichern und nach MDF4 exportieren PM (V1.0)
1Crypto AG / P_M_HC-2650-Course-Notes-d_0833_rd.PPT Training and Education HC-2650 Kursunterlagen.
Technische Universität München Alexander Neidhardt Forschungseinrichtung Satellitengeodäsie 1 Concepts for remote control of VLBI-telescopes: on the way.
WebServices Vortrag zur Diplomarbeit WebServices Analyse und Einsatz von Thomas Graf FH Regensburg
LINUX II Unit 7 LAMP Server. LAMP ● Linux – Apache - MySQL – PHP ● Leistungsfähiges und kostenloses System zur Genrierung von dynamischen Webseiten und.
The Elektra Initiative Markus Raab Markus Raab Linux in ein wirklich voll integriertes System verwandeln.
Elektra Project Markus Raab Markus Raab Turning Linux into a Trully Integrated Operating Environment.
A Modular Approach to Configuration Storage Markus Raab Markus Raab Xmpp:
LINUX II Samba Verbindung mit Windows. Samba Übersicht ● Samba dient zur Verbindung von Linux-Clients mit Windows Rechnern ( samba-client ) sowie von.
DTrace Mathias Velten Sun Campus Ambassador
LINUX II Unit 9 Network File Server NFS. NFS Überblick ● Zugriff von lokalen Rechner über Netzwerk auf Dateien oder Ordnern auf entfernten Servern ● Entwickelt.
Kanton Basel-Stadt Howto crash a sequencer …and a path to get a difficult package to work APP-V Swissgroup / Daniel Müller.
1 Grundstruktur von Linux Manuel Blechschmidt & Volker Grabsch CdE Sommerakademie 2006 Kirchheim.
The Elektra Initiative Markus Raab Markus Raab 24C3, Berlin, 30 Dezember 2007.
Interrogatives and Verbs
Netzwerk - Programmierung
Workshop 1 Getting Started 2016 Boris Wylutzki
Apache Camel Christian Schneider
The IT–Information System
Konfiguration unter Linux mit Elektra
OAuth 2.0 Ralf Hoffmann 03 / 2017
Das IT - Informationssystem
Camil Bartkowiak Serhat Cinar Leonardo Di Lella Jan Finsel
Netzwerk - Programmierung
Aspect-Oriented Programming: Fad or the Future
Virtualisierung von Web-Applikationen mit Docker
Du kommst hier nicht rein!
eSciDoc als Plattform für die Wissenschaft Anwendungen und Szenarien
Official Statistics Web Cartography in Germany − Regional Statistics, Federal and European Elections, Future Activities − Joint Working Party meeting.
Tutorstunde 10.
OFFICE 365 FOCUS SESSION SHAREPOINT ONLINE 101:LERNE DIE BASICS 19. März 2018 Höhr-Grenzhausen.
- moodle – a internet based learning platform
 Präsentation transkript:

A Modular Approach to Configuration Storage Markus Raab Markus Raab xmpp: Linuxwochen / LGM 2012 Wien 1

What is configuration? Section "InputDevice" Identifier "Mouse0" Driver "mouse" Option "Protocol" "IMPS/2" Option "Device" "/dev/input/mice" Option "ZAxisMapping" "4 5" Option "Emulate3Buttons" "no" EndSection ✔ Readable by humans ✔ Editable by humans ✗ Not easily read and writeable by programs ✔ Settings and options of applications ✔ In a simple hierarchical structure 2

Configuration for every platform? Read and Write access No Access 3

What is Elektra? sh$ ldd /lib/libelektra.so libc.so.6 => /lib/tls/libc.so.6 /lib/ld-linux.so.2 => /lib/ld-linux.so.2 ✔ Access to configuration storage ✔ Portable (ANSI C) ✔ For embedded Systems (small, static) ✔ Security by OS ✔ Supports configuration files ✔ Abstracts configuration 4

What is the Goal? Portable and non-portable software Java, Apache, Samba, KDE, /sbin/init,... FileSystem ConfigFile SingleFile ConfigFile WinReg FileSystem ConfigFile SingleFile FileSystem ConfigFile SingleFile OpenDir FileSystem ConfigFile SingleFile Backends Elektra API :: Abstraction Layer Bindings 5

Key Database Semantik Markus Raab Markus Raab 6

Key Hierachie key/value pairs for system key/value pairs for current user Avi's private keys Luciana's private keys Valeria's private keys system/* hierarchy is stored below /etc/config/ user:$USER/* hierarchy is stored below ~$USER/.config/ user/* hierarchy is for the current user 7

Key Hierachie :: system/... key/value pairs für System Gleichwertig zu /etc/fstab Gleichwertig zu /etc/group Statische gefundene Hardware Gleichwertig zu /etc/inittab Netzwerk Konfiguration Applikationsspezifisches Applikation 1 Applikation 2 Gleichwertig zu /etc/passwd 8

Mounting backends system/ apache / kde/ sw/ apache ini fstab/ fstab ➔ We want whole configuration in one hierarchy, but need support for: Application specific Admin tasks Legacy config files 9 user/ iniC system/sw/apache/site1.com/DocRoot sw/ dump

Bootstrapping sh$ kdb mount.. load default backend.. buildup other backends ✔ Self-Contained Configuration System ✔ eingebautes Default Backend zuerst ✔ Damit eigene Konfiguration einlesen ✔ Backends in globalen Konfigurationsbaum mounten 10

KDB Semantik 1.Wurzel: User und System 2.Keys sind mit Namen eindeutig definiert 3.Löcher werden akzeptiert 4.Keine Ordnungsrelation (Set) 5.Keys sind unabhängig 6.Keine Links, Verstecke Keys o.ä. FS-Semantiken 7.Aber Plugins und Metadaten können 3-6 abändern 11

Elektrifizierung Markus Raab Markus Raab 12

Elektrifizierung Konfig- uration Konfig- uration App A ✗ Konfiguration ist stark abhängig von der Applikation ✗ Konfiguration wird nicht mit anderer Software geteilt Globale Konfiguration Globale Konfiguration ✔ Konfiguration repräsentiert durch Standards ✔ Verschiedene Programme können Konfigurationen teilen App AApp BApp C Elektrifizierung Konfig- uration Konfig- uration App B Konfig- uration Konfig- uration App C 13

Technische Umsetzung Application /lib/libelektra.s o libelektra-{plugin}.so Pure dynamic (in)dependencyPure dynamic (in)dependency ✔ ✔ Plugin = Shared Library (Linux) ✔ ✔ Nicht sichbar mit ldd ✔ ✔ Je nach Pfad variabel (self- contained durch mounting) Dynamic single dependencyDynamic single dependency ✔ ✔ Sichtbar mit ldd ✔ ✔ libelektra.so versteckt Backends Application process space ✔ Different storages 14

Die API Was ist vorhanden um auf Elektra key/value pairs zuzugreifen? 15

Nur 3 Klassen KDB KeyKeySet Classes 16

Key Eigenschaften ➢ Name ➢ Value system/users/root/shadowPassword = $1$yM93nU user:valeria/env/env2/PATH = $PATH:/usr/sbin 17 ➢ Metaname ➢ Metavalue ➢ Metaname ➢ Metavalue

C API Methods ksNew() ksDel() ksAppendKey() ksAppend() ksNext() ksRewind() ksLookup() ksLookupByName() keyNew() keyDup() keyCopy() keyClear() keyDel() keyIncRef() keyDecRef() keyGetRef() keyRewindMeta() keyNextMeta() keyCurrentMeta() keyGetMeta() keySetMeta() keyGetString() keyGetBinary() keySetBinary() keyValue() kdbOpen() kdbClose() kdbGet() kdbSet() 18

The kdb Command: Perfekt für Skripte $ kdb get system/filesystems/boot/mpoint # kdb set system/sw/xorg/Screen/Display/Modes 1280x1024 $ kdb ls system/sw/myapp $ kdb rm user/env/alias/vnc 19

Modular Approach Markus Raab Markus Raab 20

Desired situation per backend ApplicationApplication LibelektraLibelektra Filter Plugin Storage Plugin n Plugins = 1 Backend ➢ Separation of Concerns ➢ Unix philosophy ➢ Can be changed at runtime ➢ Dependencies only to single plugins 21

Resolver Plugin ➢ Erledigt Betriebsystemabhängiges ➢ Ermittelt Dateinamen ➢ Erkennt Konflikte ➢ Erkennt ob Update notwendig 22 ResolverResolver /home/markus/.config/file.ini/home/markus/.config/file.ini /etc/file.ini/etc/file.ini file.inifile.ini Konflikt? Update?

Storage Plugins ksNew( 17, keyNew ("user/fstab/rootfs", KEY_TYPE, KEY_TYPE_STRING, KEY_END), keyNew ("user/fstab/rootfs/device", KEY_VALUE, "LABEL=/", KEY_TYPE, KEY_TYPE_STRING, KEY_END), keyNew ("user/fstab/rootfs/type", KEY_VALUE, "ext3", KEY_TYPE, KEY_TYPE_STRING, KEY_END), KS_END); kdbOpen 1 ksNew 3 keyNew 10 8 user/dumprootkey keyEnd keyNew 15 7 user/dump/key1value1 keyEnd keyNew 15 7 user/dump/key2value2 keyEnd ksEnd ➢ Dump 23 <keyset xmlns="" xsi:schemaLocation="" parent="user/env/alias"> <key basename="ls" type="string" value="ls -Fh" <key basename="vnc" type="string"> vncserver -geometry 900x650 ➢ XML

Reihenfolge von Plugins Get Configuration ResolverResolver Storage Plugin Set Configuration ResolverResolver Storage Plugin Resolver (Commit)

Fehlerbehandlung ErrorError Resolver (Rollback) Set Configuration ResolverResolver Storage Plugin Resolver (Commit)

signal sender=:1.9 -> path=/org/libelektra/configuration; interface=org.libelektra; member=changed Aug 31 10:25:05 markusbyte elektra[4149]: committed configuration user/syslog with 1 keys Aug 31 10:25:14 markusbyte elektra[4150]: committed configuration user/syslog with 2 keys Cross-Cutting-Concerns ✔ Notification (D-Bus) ✔ Logging (Syslog) 26

keyNew ("system/elektra/modules/hosts/config/needs/glob/#1", KEY_VALUE, "/*", KEY_META, "check/ipaddr", "", KEY_META, "validation/regex", "^[0-9.:]+$", KEY_END), Metadaten ✔ Daten über Konfiguration ✔ Globbing 27

# kdb set system/sw/xorg/Screen/Display/Modes 12y80x1024 Could not validate “12y80x1024”, needed [0-9]+x[0-9]+ $ kdb set user/hosts/hostname x Value of key is not a valid IP Address Name or service not known Basic Checker ✔ Validation ✔ Network 28 $ kdb set user/fstab/rootfs/device /dev/none Warning: No such file or directory from key: user/fstab/rootfs/device with path: /dev/none ✔ Filename

LABEL=stable /jfsdefaults,errors=remount-ro 0 1 proc /proc procdefaults 0 0 LABEL=swap none swapsw 0 0 LABEL=home/homejfsrw,suid,dev,exec,auto,nouser 0 2 Struct Checker 29 ÄnderungenÄnderungen Struct list list Struct FStab struct FStab { string device; string mpoint; FSType type; string options; unsigned_short dumpfreq; unsigned_short passno; }; ✗ Bestimmte Einträge müssen /dürfen nicht vorhanden sein

FSType enum FSType {fat,ntfs,ext2,jfs,proc,swap}; string unsigned_short [5..20] LABEL=stable /jfsdefaults,errors=remount-ro 0 1 proc /proc procdefaults 0 0 LABEL=swap none swapsw 0 0 LABEL=home/homejfsrw,suid,dev,exec,auto,nouser 0 2 ✗ /etc/fstab akzeptiert nicht beliebiges Type Checker 30 ➢ Checks value of an key ➢ Basic CORBA Typesystem ➢ Min/Max

More Storage ➢ TCL ➢ Nickel 31 { {system/hosts="" {file=/etc/hosts} {mode=644} {ctime= } } multi="line inside quotes" ; with comments after escapes=\\\a\r\n\x11\b\056\t\\t\ xj \==\; not a comment \[not a section\]=yeah loooooooog=truncated Ni_node current = NULL; while ((current = Ni_GetNextChild(root, current)) != NULL) { Key *k = keyNew(0); keySetName (k, Ni_GetName(current, NULL)); keySetString (k, Ni_GetValue (current, NULL)); ksAppendKey (returned, k); } query = '{' >> pair >> *(pair) > '}'; pair = '{' >> key > '=' >> val >> *('{' >> metakey > '=' >> metaval > '}') > '}';

Limited Storage ➢ Hosts ➢ Simpleini 32 #/etc/hosts file # a new comment first_entry second_entry alias2 alias3 alias4 alias third_entry # Markus follows markus ✔ Kommentare erhalten ✔ Reihenfolge erhalten user/simpleini/example1 user/simpleini/example_empty_string user/simpleini/example_null_value user/simpleini/example_text = user/simpleini/equal = %3Dequal%3D ➢ Null Values? ➢ Special Characters?

Filter Plugins 33 kdb set set user/ccode/key "'val x'" in storage: \'val\tx\' kdb set user/hexcode/key value=abc xyz in storage: value%3Dabc%20xyz ✔ Character Reduction ✔ Application Specific Concerns HiddenKeysHiddenKeys ✔ Iconv

Plugins Übersicht 34

Kontrakte Plugin 0 Plugin 1 Plugin n ➢ Wer garantiert das? ➢ Richtigen Plugins? ➢ Richtige Reihenfolge? Quelle: haldimandcountyhydro.ca 35 Plugin 2 Benötigt:ProviderBenötigt:Provider Reihenfolge: Vor Provider Reihenfolge: Bietet an: Provider Provider

Demo 36

Who uses Elektra? ✔ Cross Plattform Software 37 ✔ Embedded Systems Oyranos ✔ Administrators

Ende Vielen Dank für Deine Aufmerksamkeit! 38 Markus Raab Markus Raab

Errors and Warnings 39 ✔ Volle Unterstützung von Fehlermeldungen ✔ Mittels Metadaten beliebige Texte ✔ Zentrale Datenbank ✔ (“Don't repeat yourself”) ✔ Unterstützung von Exceptions usw.

Import, Export and Convert (TODO) $ kdb export user/env/alias > file.xml $ kdb import file.xml $ kdb convert file.xml file.ini <keyset xmlns=" xsi:schemaLocation=" elektra.xsd" parent="user/env/alias"> <key basename="ls" type="string" uid="aviram" gid="aviram" mode="0664" value="ls -Fh --color=auto" Make 'ls' command more cleaver <key basename="vnc" type="string" uid="aviram" gid="aviram" mode="0664"> vncserver -geometry 900x650 Instant creation of a VNC server 40

kdbedit: The Elektra GUI Edit (TODO) auch für Beginner auch für Beginner Hierachische Struktur Hierachische Struktur Alle Funktionen Alle Funktionen Exportieren und Importieren Exportieren und Importieren Wenn alles versagt hast du hoffentlich das richtige Backend gewählt. 41

Resources ➢ Homepage: ➢ Bugs: ➢ Svn: ➢ API: ➢ ➢ Mailing Liste: 42

Einsatz von Elektra ✔ Cross Plattform Software 43 ✔ Embedded Systems Oyranos ✔ In Debian

Key Hierachie :: system/... key/value pairs für System Gleichwertig zu /etc/fstab Gleichwertig zu /etc/group Statische gefundene Hardware Gleichwertig zu /etc/inittab Netzwerk Konfiguration Applikationsspezifisches Applikation 1 Applikation 2 Gleichwertig zu /etc/passwd 44

Administration mit Elektra Markus Raab Markus Raab 45

Qualität ➢ Genaue Doku! ➢ Testfälle ➢ API: ➢ Testing Framework ➢ ➢ 2769 Zusicherungen ➢ Bug Database ➢ Stable Policy 46

The API is Fully Documented! ✔ API doc in Doxygen ✔ API man pages ✔ Viele Code Beispiele ✔ Programing Tutorial 47

GConf ist fett und dependent... bash$ ldd /usr/lib/libgconf-2.so.4 libgobject-2.0.so.0 => /usr/lib/libgobject-2.0.so.0 libORBit-2.so.0 => /usr/lib/libORBit-2.so.0 libm.so.6 => /lib/tls/libm.so.6 libgmodule-2.0.so.0 => /usr/lib/libgmodule-2.0.so.0 libdl.so.2 => /lib/libdl.so.2 libgthread-2.0.so.0 => /usr/lib/libgthread-2.0.so.0 libglib-2.0.so.0 => /usr/lib/libglib-2.0.so.0 libpthread.so.0 => /lib/tls/libpthread.so.0 libc.so.6 => /lib/tls/libc.so.6 libpopt.so.0 => /usr/lib/libpopt.so.0 /lib/ld-linux.so.2 48

Elektra ist leicht... bash$ ldd /lib/libelektra.so libc.so.6 => /lib/tls/libc.so.6 /lib/ld-linux.so.2 => /lib/ld-linux.so.2 ✔ Verwendbar bei Restriktionen (kein Netzwerk, kein /usr), sogar bei /sbin/init ✔ Auch ohne Dämon verwendbar No single point of failure Kein Kommunikationsprotokol notwendig Keine Sicherheitslöcher möglich Sicherheit über OS Einfach und sauber 49

Ecosystem 50

Elektra als Bibliothek ➢ Bücher: Key (Titel/Inhalt) ➢ Regale: KeySet ➢ Bibliothekar: Backend 51

fstype enum fstype {fat,ntfs,ext2,jfs,proc,swap}; fstabEntry struct fstabEntry { string device; path mpoint; fstype type; string options; unsigned short dumpfreq; unsigned short passno; }; LABEL=stable /jfsdefaults,errors=remount-ro 0 1 proc /proc procdefaults 0 0 LABEL=swap none swapsw 0 0 LABEL=home/homejfsrw,suid,dev,exec,auto,nouser 0 2 ✗ z.b. /etc/fstab akzeptiert nicht beliebiges Offene Fragen (2) ✗ Bestimmte Einträge müssen vorhanden sein ➢ Wie kann man obigen Typ beschreiben? ➢ Können Plugins dadurch beschreiben was sie akzeptieren? 52

Related Work ➢ Elektra with Mounting ➢ Uniconf (with Daemon) ➢ Debconf (supports stacking) ➢ Augeas (Linux Configuration Files only) ➢ Pam (Error Conditions) ➢ Puppet 53

Warum Mounting? service saft { socket_type = stream protocol = tcp wait = no user = root server = /usr/sbin/sendfiled port = 487 disable = no } ✔ Unterschiedliche Bedürfnisse ✔ Identität von Software 54 #inetd.conf Identstreamtcpwaitidentd/usr/sbin/identdidentd saftstreamtcpnowaitroot/usr/sbin/tcpd/usr/sbin/sendfiled fingerstreamtcpnowaitnobody/usr/sbin/tcpdin.fingerd 54

State-of-the-Art ➢ M. Lackner, A. Krall, and F. Puntigam. Supporting design by contract in Java. Journal of Object Technology, 1(3):57–76, ➢ C. Andreae, J. Noble, S. Markstrum, and T. Millstein. A framework for implementing pluggable type systems. ACM SIGPLAN Notices, 41(10):74, ➢ Markus Raab and Patrick Sabin. Implementation of Multiple Key Databases for Shared Configuration. ftp:// March

Dämon Architektur Application /lib/libelektra.s o libelektra-daemon.so Server Protokol über unix domain sockets ➔ Client-Server Architecture Kommunikation zum Server über libelektra-daemon.so Der Server selber verwendet auch libelektra.so um key/value zu speichern. single point of failure Application's space Server's 56

Editieren von key/value pairs (0.7) Beliebiger Editor um XML Datei zu editieren Beliebiger Editor um XML Datei zu editieren Neu hinzugefügte werden, kommen hinzu. Neu hinzugefügte werden, kommen hinzu. Veränderte werden übertragen. Veränderte werden übertragen. Auch löschen funktioniert. Auch löschen funktioniert. 57

Key Data Base ➢ Abstrahiert Zugriff auf permanente Keys ➢ Liest oder schreibt Keysets auf die Festplatte 58

Keyset Eigenschaften ➢ Container für Keys ➢ Menge ➢ Effiziente übergabe vieler Keys ➢ Schnelles Suchen nach Namen 59

Fertig um jetzt benutzt zu werden. ➢ Vorhanden ✔ ✔ C ✔ ✔ C++ ✔ ✔ Shell ✔ ✔ XML ➢ War mal da... ✔ ✔ Python ✔ ✔ Scheme ✔ ✔ Ruby ✔ ✔ Java 60

The Elektra Initiative needs YOU ! ➢ Avi Alkalay ➢ Avi Alkalay ➢ Markus Raab ➢ Markus Raab ➢ Yannick Lecaillez ➢ Yannick Lecaillez ➢ Jens Andersen ➢ Jens Andersen ➢ Patrick Sabin ➢ Patrick Sabin ➢ Pier Luigi Fiorini ➢ Pier Luigi Fiorini ➢ Rèmi ➢ Rèmi ➢ Studio-HB ➢ Studio-HB 61

Related Work ➢ Elektra with Mounting ➢ Uniconf (with Daemon) ➢ Debconf (supports stacking) ➢ Augeas (Linux Configuration Files only) ➢ Pam (Error Conditions) 62

Modulare Backends für Elektra Markus Raab Markus Raab 63

ApplicationApplication Vorige Situation LibelektraLibelektra ➢ Duplizierter Code ➢ Fehlende Flexibilität ➢ Reimplementierung von Features ➢ Capabilites Modularität in Backends? BackendBackend 64

Key Namen Dieser kleiner Punkt macht die ganze Hierachie inaktiv? 65

Key Hierachie :: system/... key/value pairs für System Gleichwertig zu /etc/fstab Gleichwertig zu /etc/group Statische gefundene Hardware Gleichwertig zu /etc/inittab Netzwerk Konfiguration Applikationsspezifisches Applikation 1 Applikation 2 Gleichwertig zu /etc/passwd 66

Key Hierachie :: user/... key/value pairs für aktuellen User User's environment (statt ~/.bashrc) User's aliases Erste env var Zweite env var $PATH setzen Drittes environment key/value pairs für Applikationen Temporäre key/value pairs 67

Kaskading Durch diesen Slash wird der richtige Schlüssel automatisch gesucht 68