augeas - a configuration api

Upload: augeas

Post on 03-Jun-2018

243 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/12/2019 Augeas - A Configuration API

    1/58

    Augeas a configuration APIDavid Lutterkort

    Red Hat, Inc.

  • 8/12/2019 Augeas - A Configuration API

    2/58

    Configuration Management

    Sitewide configuration

    Local configuration

  • 8/12/2019 Augeas - A Configuration API

    3/58

    Editing of Configuration Data

    (1) Keyhole a roache!

    (") #reenfield a roache!

    ($) %e& lating

  • 8/12/2019 Augeas - A Configuration API

    4/58

    Missing pieces

    Handle configuration data unifor&ly

    'olicy delegation

    Re&ota le *'I

    *ugea! lay! the foundation for addre!!ing the!e

  • 8/12/2019 Augeas - A Configuration API

    5/58

    Design Goals

    (1) Deal with configuration data in it! current lace

  • 8/12/2019 Augeas - A Configuration API

    6/58

    Design Goals

    (") + o!e a !tract tree view of configuration data

  • 8/12/2019 Augeas - A Configuration API

    7/58

    Design Goals

    ($) 're!erve -uni& ortant detail

  • 8/12/2019 Augeas - A Configuration API

    8/58

    Design Goals

    (/) De!cri e new file for&at! ea!ily and !afely

  • 8/12/2019 Augeas - A Configuration API

    9/58

    Design Goals

    (0) Language neutral i& le&entation

  • 8/12/2019 Augeas - A Configuration API

    10/58

    Design Goals

    ( ) 2ocu! on configuration editing

  • 8/12/2019 Augeas - A Configuration API

    11/58

  • 8/12/2019 Augeas - A Configuration API

    12/58

    The Augeas Tree

  • 8/12/2019 Augeas - A Configuration API

    13/58

    The Augeas Tree

  • 8/12/2019 Augeas - A Configuration API

    14/58

    The public Augeas APIS&all nu& er of call! to &odify tree

    init/close get/set value a!!ociated with a node match node! with ath e re!!ion insert efore after e i!ting node

    rm !u tree save tree ack to file

  • 8/12/2019 Augeas - A Configuration API

    15/58

    The public Augeas API

    3 *'I ( libaugeas.so )

    3o&&and line tool augtool

    Language inding! for 'ython, Ru y, 4ca&l, ...

  • 8/12/2019 Augeas - A Configuration API

    16/58

    E ample! /etc/hosts2or&at5# ipaddr canonical ( alias)* \n

    127.0.0.1 localhost localhost.localdomain host.domain

    Sche&a5/files/etc/hosts 1 / ipaddr 127.0.0.1 canonical localhost alias localhost.localdomain alias host.domain

  • 8/12/2019 Augeas - A Configuration API

    17/58

    E ample! /etc/hostsaugtool! set /files/etc/hosts/1/alias"2 m$host.domain

    Sche&a5/files/etc/hosts 1/

    ipaddr 127.0.0.1 canonical localhost alias localhost.localdomain alias m$host.domain

  • 8/12/2019 Augeas - A Configuration API

    18/58

    E ample! /etc/hostsaugtool! ins alias after /files/etc/hosts/1/alias"1

    Sche&a5/files/etc/hosts 1/

    ipaddr 127.0.0.1 canonical localhost alias localhost.localdomain alias

    alias m$host.domain

  • 8/12/2019 Augeas - A Configuration API

    19/58

    E ample! /etc/hostsaugtool! set /files/etc/hosts/1/alias"2 m$host

    Sche&a5/files/etc/hosts 1/ ipaddr 127.0.0.1 canonical localhost alias localhost.localdomain alias m$host alias m$host.domain

  • 8/12/2019 Augeas - A Configuration API

    20/58

    E ample! /etc/hostsaugtool! sa%e

    6ew /etc/hosts 5# ipaddr canonical ( alias)* \n

    127.0.0.1 localhost localhost.localdomain m$host m$host.domain

  • 8/12/2019 Augeas - A Configuration API

    21/58

    E ample! yu& configuration%ree! underneath /files/etc/$um.conf /files/etc/$um.repos.d/some.repo&chema /section/'e$ %alue

    Switch 2edora re o to internal &irror5 /files/etc/$um.repos.d/fedora.repoaugtool! rm /fedora/mirrorlist

    augtool! set /fedora/baseurl mirror1augtool! ins baseurl after /fedora/baseurlaugtool! set /fedora/baseurl"last() mirror2

  • 8/12/2019 Augeas - A Configuration API

    22/58

    Overall architecture

  • 8/12/2019 Augeas - A Configuration API

    23/58

    "chema descriptionmodule um autoload +fm

    let lns ...

    let filter (incl ,/etc/$um.conf,) . (incl ,/etc/$um.repos.d/*,) . -til.stde+cl

    let +fm transform lns filter

  • 8/12/2019 Augeas - A Configuration API

    24/58

  • 8/12/2019 Augeas - A Configuration API

    25/58

    "chema descriptionmodule um autoload +fm

    let lns ...

    let filter (incl ,/etc/$um.conf,) . (incl ,/etc/$um.repos.d/*,) . -til.stde+cl

    let +fm transform lns filter

  • 8/12/2019 Augeas - A Configuration API

    26/58

    "chema descriptionmodule um autoload +fm

    let lns ...

    let filter (incl ,/etc/$um.conf,) . (incl ,/etc/$um.repos.d/*,) . -til.stde+cl

    let +fm transform lns filter

  • 8/12/2019 Augeas - A Configuration API

    27/58

    "chema descriptionmodule um autoload +fm

    let lns ...

    let filter (incl ,/etc/$um.conf,) . (incl ,/etc/$um.repos.d/*,) . -til.stde+cl

    let +fm transform lns filter

  • 8/12/2019 Augeas - A Configuration API

    28/58

  • 8/12/2019 Augeas - A Configuration API

    29/58

    #enses

    3oncrete 7iew * !tract 7iew

    8idirectional rogra&&ing

    3oncrete 9 * !tract : * !tract 9 3oncrete

    Har&ony (; 'enn) doe! it for tree!8oo&erang (; 'enn) doe! it for !tring!%heoretical groundwork y 8. 'ierce, 6. 2o!ter et.al.

  • 8/12/2019 Augeas - A Configuration API

    30/58

    #enses for Augeas

    String %ree

    get 5 String 9 %ree

    put 5 %ree String 9 String

  • 8/12/2019 Augeas - A Configuration API

    31/58

    #ens #a$s

    %he get and put of every len! &u!t fulfill5

    put (get c) c c

    get (put a c) a

    3a ture intuitive notion! of -&ini&al edit! 3on!traint! enforced y ty echecker

  • 8/12/2019 Augeas - A Configuration API

    32/58

    #ens primitives%ree la el!

    'e$ re label str se str

    %ree value! store re

    4&it fro& tree del re str

  • 8/12/2019 Augeas - A Configuration API

    33/58

    #ens combinatorsl1 . l2 5 Len! concatenation

    l1 l2 5 Len! union

    l* l 5 Len! iteration

    " l 5 Su tree co& inator

  • 8/12/2019 Augeas - A Configuration API

    34/58

    #ens development8uild u len!e! fro& !&all art!Reu!e co&&on con!truct!

    3o&&ent goe! fro& < to end of line;nit te!t facility in *ugea! language

    Run get direction Run get direction, &odify tree, run ut direction 3o& are to fi ed value *!!ert e ce tion 'rint re!ult

  • 8/12/2019 Augeas - A Configuration API

    35/58

    #ens development

    'roce!! 'e$ %alue3

  • 8/12/2019 Augeas - A Configuration API

    36/58

    #ens development

    'roce!! 'e$ %alue3

    let e del 3 3

  • 8/12/2019 Augeas - A Configuration API

    37/58

    #ens development

    'roce!! 'e$ %alue3

    let e del 3 3let lns " 'e$ /"a45 / . e . store /. /

  • 8/12/2019 Augeas - A Configuration API

    38/58

    #ens development

    'roce!! 'e$ %alue3

    let e del 3 3let lns " 'e$ /"a45 / . e . store /. /

    d l

  • 8/12/2019 Augeas - A Configuration API

    39/58

    #ens development

    'roce!! 'e$ %alue3

    let e del 3 3let lns " 'e$ /"a45 / . e . store /. /

  • 8/12/2019 Augeas - A Configuration API

    40/58

    # d l t

  • 8/12/2019 Augeas - A Configuration API

    41/58

    #ens development

    'roce!! 'e$ %alue3

    let e del 3 3let lns " 'e$ /"a45 / . e . store /. /

    test lns get foo bar3 foo3 bar3 8

    # d l t

  • 8/12/2019 Augeas - A Configuration API

    42/58

    #ens development

    'roce!! 'e$ %alue3

    let e del 3 3let lns " 'e$ /"a45 / . e . store /. /

    test lns get foo2 bar13 *

    #ens development

  • 8/12/2019 Augeas - A Configuration API

    43/58

    #ens development

    'roce!! 'e$ %alue3

    let e del 3 3let lns "'e$ /"a45 / . e . store /. /

    test lns put foo bar3after set foo3 ba53

    6

    #ens development

  • 8/12/2019 Augeas - A Configuration API

    44/58

    #ens development

    'roce!! 'e$ %alue3

    let e del 3 3let lns "'e$ /"a45 / . e . store /. /

    test lns put foo bar3after set foo3 ba53

    6

    #ens development

  • 8/12/2019 Augeas - A Configuration API

    45/58

    #ens development

    'roce!! 'e$ %alue3

    let e del 3 3let lns "'e$ /"a45 / . e . store /. /

    test lns put foo bar3after set foo3 ba53

    foo ba53

    #ens development

  • 8/12/2019 Augeas - A Configuration API

    46/58

    #ens development

    'roce!! 'e$ %alue3

    let e del /" \t " \t / 3let lns " 'e$ /"a45 / . e . store /. /

    #ens development

  • 8/12/2019 Augeas - A Configuration API

    47/58

    #ens development

    'roce!! 'e$ %alue3

    let e del /" \t " \t / 3let lns " 'e$ /"a45 / . e . store /. /

    #ens development

  • 8/12/2019 Augeas - A Configuration API

    48/58

    #ens development

    'roce!! 'e$ %alue3

    let e del /" \t " \t / 3let lns " 'e$ /"a45 / . e . store /"a45 /

    test lns put foo \t bar3 after set foo3 ba53 foo \t ba53

    Arra%s using seq

  • 8/12/2019 Augeas - A Configuration API

    49/58

    Arra%s using seqhosts/ 1 / ipaddr canonical alias alias 2 / ipaddr canonical alias

    Arra%s using identical labels

  • 8/12/2019 Augeas - A Configuration API

    50/58

    Arra%s using identical labelshosts/ 1/ ipaddr canonical alias alias 2/ ipaddr canonical alias

  • 8/12/2019 Augeas - A Configuration API

    51/58

    &andling comments

  • 8/12/2019 Augeas - A Configuration API

    52/58

    g

    let comment " del /#.*\n/ #\n3

    let lns (record comment)*

    The lens t%pechec'er

  • 8/12/2019 Augeas - A Configuration API

    53/58

    p+ach len! ha! a!!ociated ctype and atype

    Regular language!

    3heck! during len! con!truction del re str 5 str &u!t &atch re l1 . l2 5 una& iguou!ly ! litta le l1 | l2 5 di!=oint regular language!

    libfa for finite auto&ata co& utation!

    Re!trict! *ugea! to regular file for&at!

    "upported file formats

  • 8/12/2019 Augeas - A Configuration API

    54/58

    pp

    etc ho!t! etc initta yu& config etc f!ta

    etc alia!e! etc !!h !!hd>config

    !hell var! in etc !y!config ifcfg?@

    gru .conf inetd.d

    a&.d v!ft d.conf your contri ution here

    (hat about httpd.conf )

  • 8/12/2019 Augeas - A Configuration API

    55/58

    Ao!tly tediou! oiler late+ ce t5

    ... 9:f;odule mod

  • 8/12/2019 Augeas - A Configuration API

    56/58

    D u! !ervice acked y *ugea!

    :'olicyKit &echani!& for authentication

    B

    Local configuration !ervice;I inde endent

    2ile for&at inde endent2ine grained er&i!!ioning

    Harald Hoyer ha! rototy e for s$stem4config4boot

    "upported platforms

  • 8/12/2019 Augeas - A Configuration API

    57/58

    Red Hat Linu flavor! 2edora, RH+L, 3ent4S, ...

    4ther Linu flavor! De ian

    2ree8SD4S C ort on the way

    Aini&al de endencie!*nything with a #6; li c (or e uivalent gnuli !u ort)

    More information

  • 8/12/2019 Augeas - A Configuration API

    58/58

    'ro=ect we !ite htt 5 augea!.net Read the -Euick %our fir!t

    Aailing li!t augea!?develFredhat.co&IR3