Download - Augeas - A Configuration API
-
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