Augeas, swiss knife resources for your puppet tree

Post on 02-Jul-2015

958 views 1 download

description

This talk gives you an introduction to augeas with some usecases and demo of its Puppet integration. It also gives an introduction about how to manage files with puppet.

Transcript of Augeas, swiss knife resources for your puppet tree

...

AugeasAugeasAugeasAugeasAugeasAugeasAugeasAugeasAugeasAugeasAugeasAugeasAugeasAugeasAugeasAugeasAugeasSwiss-knife resources for your puppet treeSwiss-knife resources for your puppet treeSwiss-knife resources for your puppet treeSwiss-knife resources for your puppet treeSwiss-knife resources for your puppet treeSwiss-knife resources for your puppet treeSwiss-knife resources for your puppet treeSwiss-knife resources for your puppet treeSwiss-knife resources for your puppet treeSwiss-knife resources for your puppet treeSwiss-knife resources for your puppet treeSwiss-knife resources for your puppet treeSwiss-knife resources for your puppet treeSwiss-knife resources for your puppet treeSwiss-knife resources for your puppet treeSwiss-knife resources for your puppet treeSwiss-knife resources for your puppet tree

Julien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien Pivotto

November 17th, 2014November 17th, 2014November 17th, 2014November 17th, 2014November 17th, 2014November 17th, 2014November 17th, 2014November 17th, 2014November 17th, 2014November 17th, 2014November 17th, 2014November 17th, 2014November 17th, 2014November 17th, 2014November 17th, 2014November 17th, 2014November 17th, 2014

..

$::user$::user$::user$::user$::user$::user$::user$::user$::user$::user$::user$::user$::user$::user$::user$::user$::userJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien Pivotto

• Open-Source consultant at inuits.euOpen-Source consultant at inuits.euOpen-Source consultant at inuits.euOpen-Source consultant at inuits.euOpen-Source consultant at inuits.euOpen-Source consultant at inuits.euOpen-Source consultant at inuits.euOpen-Source consultant at inuits.euOpen-Source consultant at inuits.euOpen-Source consultant at inuits.euOpen-Source consultant at inuits.euOpen-Source consultant at inuits.euOpen-Source consultant at inuits.euOpen-Source consultant at inuits.euOpen-Source consultant at inuits.euOpen-Source consultant at inuits.euOpen-Source consultant at inuits.eu

• FOSS defender since 2004FOSS defender since 2004FOSS defender since 2004FOSS defender since 2004FOSS defender since 2004FOSS defender since 2004FOSS defender since 2004FOSS defender since 2004FOSS defender since 2004FOSS defender since 2004FOSS defender since 2004FOSS defender since 2004FOSS defender since 2004FOSS defender since 2004FOSS defender since 2004FOSS defender since 2004FOSS defender since 2004• DevOps believer and evangelistDevOps believer and evangelistDevOps believer and evangelistDevOps believer and evangelistDevOps believer and evangelistDevOps believer and evangelistDevOps believer and evangelistDevOps believer and evangelistDevOps believer and evangelistDevOps believer and evangelistDevOps believer and evangelistDevOps believer and evangelistDevOps believer and evangelistDevOps believer and evangelistDevOps believer and evangelistDevOps believer and evangelistDevOps believer and evangelist• Puppet User since 2011Puppet User since 2011Puppet User since 2011Puppet User since 2011Puppet User since 2011Puppet User since 2011Puppet User since 2011Puppet User since 2011Puppet User since 2011Puppet User since 2011Puppet User since 2011Puppet User since 2011Puppet User since 2011Puppet User since 2011Puppet User since 2011Puppet User since 2011Puppet User since 2011• @roidelapluie@roidelapluie@roidelapluie@roidelapluie@roidelapluie@roidelapluie@roidelapluie@roidelapluie@roidelapluie@roidelapluie@roidelapluie@roidelapluie@roidelapluie@roidelapluie@roidelapluie@roidelapluie@roidelapluie on irc/twitter/githubon irc/twitter/githubon irc/twitter/githubon irc/twitter/githubon irc/twitter/githubon irc/twitter/githubon irc/twitter/githubon irc/twitter/githubon irc/twitter/githubon irc/twitter/githubon irc/twitter/githubon irc/twitter/githubon irc/twitter/githubon irc/twitter/githubon irc/twitter/githubon irc/twitter/githubon irc/twitter/github

..

..

inuits.eu

..

..

Sysadmin 101Sysadmin 101Sysadmin 101Sysadmin 101Sysadmin 101Sysadmin 101Sysadmin 101Sysadmin 101Sysadmin 101Sysadmin 101Sysadmin 101Sysadmin 101Sysadmin 101Sysadmin 101Sysadmin 101Sysadmin 101Sysadmin 101CC BY-SA 2.0 https://www.flickr.com/photos/arthur-caranta/2926332140

..

Setting up a serviceSetting up a serviceSetting up a serviceSetting up a serviceSetting up a serviceSetting up a serviceSetting up a serviceSetting up a serviceSetting up a serviceSetting up a serviceSetting up a serviceSetting up a serviceSetting up a serviceSetting up a serviceSetting up a serviceSetting up a serviceSetting up a service

• Install the packageInstall the packageInstall the packageInstall the packageInstall the packageInstall the packageInstall the packageInstall the packageInstall the packageInstall the packageInstall the packageInstall the packageInstall the packageInstall the packageInstall the packageInstall the packageInstall the package• Change the configurationChange the configurationChange the configurationChange the configurationChange the configurationChange the configurationChange the configurationChange the configurationChange the configurationChange the configurationChange the configurationChange the configurationChange the configurationChange the configurationChange the configurationChange the configurationChange the configuration• Start the daemonStart the daemonStart the daemonStart the daemonStart the daemonStart the daemonStart the daemonStart the daemonStart the daemonStart the daemonStart the daemonStart the daemonStart the daemonStart the daemonStart the daemonStart the daemonStart the daemon

..

PackagePackagePackagePackagePackagePackagePackagePackagePackagePackagePackagePackagePackagePackagePackagePackagePackageConfigConfigConfigConfigConfigConfigConfigConfigConfigConfigConfigConfigConfigConfigConfigConfigConfigServiceServiceServiceServiceServiceServiceServiceServiceServiceServiceServiceServiceServiceServiceServiceServiceService

Ken Barber - modern module developmentKen Barber - modern module developmentKen Barber - modern module developmentKen Barber - modern module developmentKen Barber - modern module developmentKen Barber - modern module developmentKen Barber - modern module developmentKen Barber - modern module developmentKen Barber - modern module developmentKen Barber - modern module developmentKen Barber - modern module developmentKen Barber - modern module developmentKen Barber - modern module developmentKen Barber - modern module developmentKen Barber - modern module developmentKen Barber - modern module developmentKen Barber - modern module developmentPuppetCamp Edinburgh 2012PuppetCamp Edinburgh 2012PuppetCamp Edinburgh 2012PuppetCamp Edinburgh 2012PuppetCamp Edinburgh 2012PuppetCamp Edinburgh 2012PuppetCamp Edinburgh 2012PuppetCamp Edinburgh 2012PuppetCamp Edinburgh 2012PuppetCamp Edinburgh 2012PuppetCamp Edinburgh 2012PuppetCamp Edinburgh 2012PuppetCamp Edinburgh 2012PuppetCamp Edinburgh 2012PuppetCamp Edinburgh 2012PuppetCamp Edinburgh 2012PuppetCamp Edinburgh 2012

..

3 steps.3 steps.3 steps.3 steps.3 steps.3 steps.3 steps.3 steps.3 steps.3 steps.3 steps.3 steps.3 steps.3 steps.3 steps.3 steps.3 steps.What can go wrong?What can go wrong?What can go wrong?What can go wrong?What can go wrong?What can go wrong?What can go wrong?What can go wrong?What can go wrong?What can go wrong?What can go wrong?What can go wrong?What can go wrong?What can go wrong?What can go wrong?What can go wrong?What can go wrong?

..

PackagingPackagingPackagingPackagingPackagingPackagingPackagingPackagingPackagingPackagingPackagingPackagingPackagingPackagingPackagingPackagingPackaging

• Where is the package?Where is the package?Where is the package?Where is the package?Where is the package?Where is the package?Where is the package?Where is the package?Where is the package?Where is the package?Where is the package?Where is the package?Where is the package?Where is the package?Where is the package?Where is the package?Where is the package?• Which version do we need?Which version do we need?Which version do we need?Which version do we need?Which version do we need?Which version do we need?Which version do we need?Which version do we need?Which version do we need?Which version do we need?Which version do we need?Which version do we need?Which version do we need?Which version do we need?Which version do we need?Which version do we need?Which version do we need?• Does it conflict with something else?Does it conflict with something else?Does it conflict with something else?Does it conflict with something else?Does it conflict with something else?Does it conflict with something else?Does it conflict with something else?Does it conflict with something else?Does it conflict with something else?Does it conflict with something else?Does it conflict with something else?Does it conflict with something else?Does it conflict with something else?Does it conflict with something else?Does it conflict with something else?Does it conflict with something else?Does it conflict with something else?

..

..

Dependencies HellDependencies HellDependencies HellDependencies HellDependencies HellDependencies HellDependencies HellDependencies HellDependencies HellDependencies HellDependencies HellDependencies HellDependencies HellDependencies HellDependencies HellDependencies HellDependencies Hell

#packagingsucks#packagingsucks#packagingsucks#packagingsucks#packagingsucks#packagingsucks#packagingsucks#packagingsucks#packagingsucks#packagingsucks#packagingsucks#packagingsucks#packagingsucks#packagingsucks#packagingsucks#packagingsucks#packagingsucks#packagingsucks#packagingsucks#packagingsucks#packagingsucks#packagingsucks#packagingsucks#packagingsucks#packagingsucks#packagingsucks#packagingsucks#packagingsucks#packagingsucks#packagingsucks#packagingsucks#packagingsucks#packagingsucks#packagingsucks#packagingsucks#packagingsucks#packagingsucks#packagingsucks#packagingsucks#packagingsucks#packagingsucks#packagingsucks#packagingsucks#packagingsucks#packagingsucks#packagingsucks#packagingsucks#packagingsucks#packagingsucks#packagingsucks#packagingsucks#packagingsucks#packagingsucks#packagingsucks#packagingsucks#packagingsucks#packagingsucks#packagingsucks#packagingsucks#packagingsucks#packagingsucks#packagingsucks#packagingsucks#packagingsucks#packagingsucks#packagingsucks#packagingsucks#packagingsucks#packagingsucks#packagingsucks#packagingsucks#packagingsucks#packagingsucks#packagingsucks#packagingsucks#packagingsucks#packagingsucks#packagingsucks#packagingsucks#packagingsucks#packagingsucks#packagingsucks#packagingsucks

CC BY-SA 2.0 https://www.flickr.com/photos/coconinonationalforest/4587053982

..

ConfigurationConfigurationConfigurationConfigurationConfigurationConfigurationConfigurationConfigurationConfigurationConfigurationConfigurationConfigurationConfigurationConfigurationConfigurationConfigurationConfiguration

• Where is the file?Where is the file?Where is the file?Where is the file?Where is the file?Where is the file?Where is the file?Where is the file?Where is the file?Where is the file?Where is the file?Where is the file?Where is the file?Where is the file?Where is the file?Where is the file?Where is the file?• How many files?How many files?How many files?How many files?How many files?How many files?How many files?How many files?How many files?How many files?How many files?How many files?How many files?How many files?How many files?How many files?How many files?• Configuration is in the database?Configuration is in the database?Configuration is in the database?Configuration is in the database?Configuration is in the database?Configuration is in the database?Configuration is in the database?Configuration is in the database?Configuration is in the database?Configuration is in the database?Configuration is in the database?Configuration is in the database?Configuration is in the database?Configuration is in the database?Configuration is in the database?Configuration is in the database?Configuration is in the database?• The file is *huge*The file is *huge*The file is *huge*The file is *huge*The file is *huge*The file is *huge*The file is *huge*The file is *huge*The file is *huge*The file is *huge*The file is *huge*The file is *huge*The file is *huge*The file is *huge*The file is *huge*The file is *huge*The file is *huge*

..

Starting the serviceStarting the serviceStarting the serviceStarting the serviceStarting the serviceStarting the serviceStarting the serviceStarting the serviceStarting the serviceStarting the serviceStarting the serviceStarting the serviceStarting the serviceStarting the serviceStarting the serviceStarting the serviceStarting the service

• Does not startDoes not startDoes not startDoes not startDoes not startDoes not startDoes not startDoes not startDoes not startDoes not startDoes not startDoes not startDoes not startDoes not startDoes not startDoes not startDoes not start▶ Bad config fileBad config fileBad config fileBad config fileBad config fileBad config fileBad config fileBad config fileBad config fileBad config fileBad config fileBad config fileBad config fileBad config fileBad config fileBad config fileBad config file▶ Stale lock fileStale lock fileStale lock fileStale lock fileStale lock fileStale lock fileStale lock fileStale lock fileStale lock fileStale lock fileStale lock fileStale lock fileStale lock fileStale lock fileStale lock fileStale lock fileStale lock file▶ Data corruptionData corruptionData corruptionData corruptionData corruptionData corruptionData corruptionData corruptionData corruptionData corruptionData corruptionData corruptionData corruptionData corruptionData corruptionData corruptionData corruption

• High AvailabilityHigh AvailabilityHigh AvailabilityHigh AvailabilityHigh AvailabilityHigh AvailabilityHigh AvailabilityHigh AvailabilityHigh AvailabilityHigh AvailabilityHigh AvailabilityHigh AvailabilityHigh AvailabilityHigh AvailabilityHigh AvailabilityHigh AvailabilityHigh Availability• ReplicationReplicationReplicationReplicationReplicationReplicationReplicationReplicationReplicationReplicationReplicationReplicationReplicationReplicationReplicationReplicationReplication

..

Let's talk aboutLet's talk aboutLet's talk aboutLet's talk aboutLet's talk aboutLet's talk aboutLet's talk aboutLet's talk aboutLet's talk aboutLet's talk aboutLet's talk aboutLet's talk aboutLet's talk aboutLet's talk aboutLet's talk aboutLet's talk aboutLet's talk aboutconfigurationconfigurationconfigurationconfigurationconfigurationconfigurationconfigurationconfigurationconfigurationconfigurationconfigurationconfigurationconfigurationconfigurationconfigurationconfigurationconfiguration today.today.today.today.today.today.today.today.today.today.today.today.today.today.today.today.today.

..

Let's talk aboutLet's talk aboutLet's talk aboutLet's talk aboutLet's talk aboutLet's talk aboutLet's talk aboutLet's talk aboutLet's talk aboutLet's talk aboutLet's talk aboutLet's talk aboutLet's talk aboutLet's talk aboutLet's talk aboutLet's talk aboutLet's talk about filesfilesfilesfilesfilesfilesfilesfilesfilesfilesfilesfilesfilesfilesfilesfilesfiles today.today.today.today.today.today.today.today.today.today.today.today.today.today.today.today.today.

..

File manipulationFile manipulationFile manipulationFile manipulationFile manipulationFile manipulationFile manipulationFile manipulationFile manipulationFile manipulationFile manipulationFile manipulationFile manipulationFile manipulationFile manipulationFile manipulationFile manipulation

..

Full configuration changesFull configuration changesFull configuration changesFull configuration changesFull configuration changesFull configuration changesFull configuration changesFull configuration changesFull configuration changesFull configuration changesFull configuration changesFull configuration changesFull configuration changesFull configuration changesFull configuration changesFull configuration changesFull configuration changes

• Classical approach:Classical approach:Classical approach:Classical approach:Classical approach:Classical approach:Classical approach:Classical approach:Classical approach:Classical approach:Classical approach:Classical approach:Classical approach:Classical approach:Classical approach:Classical approach:Classical approach: File[]File[]File[]File[]File[]File[]File[]File[]File[]File[]File[]File[]File[]File[]File[]File[]File[] resourceresourceresourceresourceresourceresourceresourceresourceresourceresourceresourceresourceresourceresourceresourceresourceresource• Advanced approach:Advanced approach:Advanced approach:Advanced approach:Advanced approach:Advanced approach:Advanced approach:Advanced approach:Advanced approach:Advanced approach:Advanced approach:Advanced approach:Advanced approach:Advanced approach:Advanced approach:Advanced approach:Advanced approach: Concat[]Concat[]Concat[]Concat[]Concat[]Concat[]Concat[]Concat[]Concat[]Concat[]Concat[]Concat[]Concat[]Concat[]Concat[]Concat[]Concat[] definedefinedefinedefinedefinedefinedefinedefinedefinedefinedefinedefinedefinedefinedefinedefinedefine• Puppet approach: type/providers +Puppet approach: type/providers +Puppet approach: type/providers +Puppet approach: type/providers +Puppet approach: type/providers +Puppet approach: type/providers +Puppet approach: type/providers +Puppet approach: type/providers +Puppet approach: type/providers +Puppet approach: type/providers +Puppet approach: type/providers +Puppet approach: type/providers +Puppet approach: type/providers +Puppet approach: type/providers +Puppet approach: type/providers +Puppet approach: type/providers +Puppet approach: type/providers + purgepurgepurgepurgepurgepurgepurgepurgepurgepurgepurgepurgepurgepurgepurgepurgepurge• Directory approach: conf.d +Directory approach: conf.d +Directory approach: conf.d +Directory approach: conf.d +Directory approach: conf.d +Directory approach: conf.d +Directory approach: conf.d +Directory approach: conf.d +Directory approach: conf.d +Directory approach: conf.d +Directory approach: conf.d +Directory approach: conf.d +Directory approach: conf.d +Directory approach: conf.d +Directory approach: conf.d +Directory approach: conf.d +Directory approach: conf.d + purgepurgepurgepurgepurgepurgepurgepurgepurgepurgepurgepurgepurgepurgepurgepurgepurge

..

Partial configuration changesPartial configuration changesPartial configuration changesPartial configuration changesPartial configuration changesPartial configuration changesPartial configuration changesPartial configuration changesPartial configuration changesPartial configuration changesPartial configuration changesPartial configuration changesPartial configuration changesPartial configuration changesPartial configuration changesPartial configuration changesPartial configuration changes

• Puppet approach: type/providers w/oPuppet approach: type/providers w/oPuppet approach: type/providers w/oPuppet approach: type/providers w/oPuppet approach: type/providers w/oPuppet approach: type/providers w/oPuppet approach: type/providers w/oPuppet approach: type/providers w/oPuppet approach: type/providers w/oPuppet approach: type/providers w/oPuppet approach: type/providers w/oPuppet approach: type/providers w/oPuppet approach: type/providers w/oPuppet approach: type/providers w/oPuppet approach: type/providers w/oPuppet approach: type/providers w/oPuppet approach: type/providers w/o purgepurgepurgepurgepurgepurgepurgepurgepurgepurgepurgepurgepurgepurgepurgepurgepurge• Directory approach: conf.d w/oDirectory approach: conf.d w/oDirectory approach: conf.d w/oDirectory approach: conf.d w/oDirectory approach: conf.d w/oDirectory approach: conf.d w/oDirectory approach: conf.d w/oDirectory approach: conf.d w/oDirectory approach: conf.d w/oDirectory approach: conf.d w/oDirectory approach: conf.d w/oDirectory approach: conf.d w/oDirectory approach: conf.d w/oDirectory approach: conf.d w/oDirectory approach: conf.d w/oDirectory approach: conf.d w/oDirectory approach: conf.d w/o purgepurgepurgepurgepurgepurgepurgepurgepurgepurgepurgepurgepurgepurgepurgepurgepurge• Broken approach:Broken approach:Broken approach:Broken approach:Broken approach:Broken approach:Broken approach:Broken approach:Broken approach:Broken approach:Broken approach:Broken approach:Broken approach:Broken approach:Broken approach:Broken approach:Broken approach: Exec[sed]Exec[sed]Exec[sed]Exec[sed]Exec[sed]Exec[sed]Exec[sed]Exec[sed]Exec[sed]Exec[sed]Exec[sed]Exec[sed]Exec[sed]Exec[sed]Exec[sed]Exec[sed]Exec[sed] resourceresourceresourceresourceresourceresourceresourceresourceresourceresourceresourceresourceresourceresourceresourceresourceresource• Surgical approach:Surgical approach:Surgical approach:Surgical approach:Surgical approach:Surgical approach:Surgical approach:Surgical approach:Surgical approach:Surgical approach:Surgical approach:Surgical approach:Surgical approach:Surgical approach:Surgical approach:Surgical approach:Surgical approach: Augeas[]Augeas[]Augeas[]Augeas[]Augeas[]Augeas[]Augeas[]Augeas[]Augeas[]Augeas[]Augeas[]Augeas[]Augeas[]Augeas[]Augeas[]Augeas[]Augeas[] resourceresourceresourceresourceresourceresourceresourceresourceresourceresourceresourceresourceresourceresourceresourceresourceresource

..

..

TheTheTheTheTheTheTheTheTheTheTheTheTheTheTheTheThe File[]File[]File[]File[]File[]File[]File[]File[]File[]File[]File[]File[]File[]File[]File[]File[]File[] resourceresourceresourceresourceresourceresourceresourceresourceresourceresourceresourceresourceresourceresourceresourceresourceresourceCC BY 2.0 https://www.flickr.com/photos/80497449@N04/10567875696/

..

FileFileFileFileFileFileFileFileFileFileFileFileFileFileFileFileFile

• Built-in puppet resourceBuilt-in puppet resourceBuilt-in puppet resourceBuilt-in puppet resourceBuilt-in puppet resourceBuilt-in puppet resourceBuilt-in puppet resourceBuilt-in puppet resourceBuilt-in puppet resourceBuilt-in puppet resourceBuilt-in puppet resourceBuilt-in puppet resourceBuilt-in puppet resourceBuilt-in puppet resourceBuilt-in puppet resourceBuilt-in puppet resourceBuilt-in puppet resource• Most usedMost usedMost usedMost usedMost usedMost usedMost usedMost usedMost usedMost usedMost usedMost usedMost usedMost usedMost usedMost usedMost used• Works with a lot of usecasesWorks with a lot of usecasesWorks with a lot of usecasesWorks with a lot of usecasesWorks with a lot of usecasesWorks with a lot of usecasesWorks with a lot of usecasesWorks with a lot of usecasesWorks with a lot of usecasesWorks with a lot of usecasesWorks with a lot of usecasesWorks with a lot of usecasesWorks with a lot of usecasesWorks with a lot of usecasesWorks with a lot of usecasesWorks with a lot of usecasesWorks with a lot of usecases• Text files, binary filesText files, binary filesText files, binary filesText files, binary filesText files, binary filesText files, binary filesText files, binary filesText files, binary filesText files, binary filesText files, binary filesText files, binary filesText files, binary filesText files, binary filesText files, binary filesText files, binary filesText files, binary filesText files, binary files

..

.

.

file{"${::icinga::confdir_server}/cgi.cfg":ensure => present,content => template('icinga/redhat/cgi.cfg.erb'),owner => $::icinga::server_user,group => $::icinga::server_group,require => Class['icinga::config'],notify => [

Service[$::icinga::service_client],Service[$::icinga::service_server],Exec['fix_collected_permissions']

],}

..

Content of a fileContent of a fileContent of a fileContent of a fileContent of a fileContent of a fileContent of a fileContent of a fileContent of a fileContent of a fileContent of a fileContent of a fileContent of a fileContent of a fileContent of a fileContent of a fileContent of a file

• content parametercontent parametercontent parametercontent parametercontent parametercontent parametercontent parametercontent parametercontent parametercontent parametercontent parametercontent parametercontent parametercontent parametercontent parametercontent parametercontent parameter▶ StringStringStringStringStringStringStringStringStringStringStringStringStringStringStringStringString▶ template()template()template()template()template()template()template()template()template()template()template()template()template()template()template()template()template()▶ file()file()file()file()file()file()file()file()file()file()file()file()file()file()file()file()file()▶ Dynamic contentDynamic contentDynamic contentDynamic contentDynamic contentDynamic contentDynamic contentDynamic contentDynamic contentDynamic contentDynamic contentDynamic contentDynamic contentDynamic contentDynamic contentDynamic contentDynamic content

• source parametersource parametersource parametersource parametersource parametersource parametersource parametersource parametersource parametersource parametersource parametersource parametersource parametersource parametersource parametersource parametersource parameter▶ puppet:///puppet:///puppet:///puppet:///puppet:///puppet:///puppet:///puppet:///puppet:///puppet:///puppet:///puppet:///puppet:///puppet:///puppet:///puppet:///puppet:///▶ /local/file/local/file/local/file/local/file/local/file/local/file/local/file/local/file/local/file/local/file/local/file/local/file/local/file/local/file/local/file/local/file/local/file▶ Static contentStatic contentStatic contentStatic contentStatic contentStatic contentStatic contentStatic contentStatic contentStatic contentStatic contentStatic contentStatic contentStatic contentStatic contentStatic contentStatic content

..

File[] behaviourFile[] behaviourFile[] behaviourFile[] behaviourFile[] behaviourFile[] behaviourFile[] behaviourFile[] behaviourFile[] behaviourFile[] behaviourFile[] behaviourFile[] behaviourFile[] behaviourFile[] behaviourFile[] behaviourFile[] behaviourFile[] behaviour

• ArrayArrayArrayArrayArrayArrayArrayArrayArrayArrayArrayArrayArrayArrayArrayArrayArray asasasasasasasasasasasasasasasasas "source":"source":"source":"source":"source":"source":"source":"source":"source":"source":"source":"source":"source":"source":"source":"source":"source": PuppetPuppetPuppetPuppetPuppetPuppetPuppetPuppetPuppetPuppetPuppetPuppetPuppetPuppetPuppetPuppetPuppet willwillwillwillwillwillwillwillwillwillwillwillwillwillwillwillwill pickpickpickpickpickpickpickpickpickpickpickpickpickpickpickpickpick thethethethethethethethethethethethethethethethethe firstfirstfirstfirstfirstfirstfirstfirstfirstfirstfirstfirstfirstfirstfirstfirstfirstavailableavailableavailableavailableavailableavailableavailableavailableavailableavailableavailableavailableavailableavailableavailableavailableavailable

• MultipleMultipleMultipleMultipleMultipleMultipleMultipleMultipleMultipleMultipleMultipleMultipleMultipleMultipleMultipleMultipleMultiple argumentsargumentsargumentsargumentsargumentsargumentsargumentsargumentsargumentsargumentsargumentsargumentsargumentsargumentsargumentsargumentsarguments tototototototototototototototototo template():template():template():template():template():template():template():template():template():template():template():template():template():template():template():template():template(): PuppetPuppetPuppetPuppetPuppetPuppetPuppetPuppetPuppetPuppetPuppetPuppetPuppetPuppetPuppetPuppetPuppetwillwillwillwillwillwillwillwillwillwillwillwillwillwillwillwillwill concatenateconcatenateconcatenateconcatenateconcatenateconcatenateconcatenateconcatenateconcatenateconcatenateconcatenateconcatenateconcatenateconcatenateconcatenateconcatenateconcatenate themthemthemthemthemthemthemthemthemthemthemthemthemthemthemthemthem allallallallallallallallallallallallallallallallall

• File[/foo/bar] will autorequire File[/foo]File[/foo/bar] will autorequire File[/foo]File[/foo/bar] will autorequire File[/foo]File[/foo/bar] will autorequire File[/foo]File[/foo/bar] will autorequire File[/foo]File[/foo/bar] will autorequire File[/foo]File[/foo/bar] will autorequire File[/foo]File[/foo/bar] will autorequire File[/foo]File[/foo/bar] will autorequire File[/foo]File[/foo/bar] will autorequire File[/foo]File[/foo/bar] will autorequire File[/foo]File[/foo/bar] will autorequire File[/foo]File[/foo/bar] will autorequire File[/foo]File[/foo/bar] will autorequire File[/foo]File[/foo/bar] will autorequire File[/foo]File[/foo/bar] will autorequire File[/foo]File[/foo/bar] will autorequire File[/foo]

..

Downside of File[]Downside of File[]Downside of File[]Downside of File[]Downside of File[]Downside of File[]Downside of File[]Downside of File[]Downside of File[]Downside of File[]Downside of File[]Downside of File[]Downside of File[]Downside of File[]Downside of File[]Downside of File[]Downside of File[]

• You can only have at one "content"You can only have at one "content"You can only have at one "content"You can only have at one "content"You can only have at one "content"You can only have at one "content"You can only have at one "content"You can only have at one "content"You can only have at one "content"You can only have at one "content"You can only have at one "content"You can only have at one "content"You can only have at one "content"You can only have at one "content"You can only have at one "content"You can only have at one "content"You can only have at one "content"• That resource describe the whole fileThat resource describe the whole fileThat resource describe the whole fileThat resource describe the whole fileThat resource describe the whole fileThat resource describe the whole fileThat resource describe the whole fileThat resource describe the whole fileThat resource describe the whole fileThat resource describe the whole fileThat resource describe the whole fileThat resource describe the whole fileThat resource describe the whole fileThat resource describe the whole fileThat resource describe the whole fileThat resource describe the whole fileThat resource describe the whole file• Getting more is complexGetting more is complexGetting more is complexGetting more is complexGetting more is complexGetting more is complexGetting more is complexGetting more is complexGetting more is complexGetting more is complexGetting more is complexGetting more is complexGetting more is complexGetting more is complexGetting more is complexGetting more is complexGetting more is complex

▶ content => custom_fuction()content => custom_fuction()content => custom_fuction()content => custom_fuction()content => custom_fuction()content => custom_fuction()content => custom_fuction()content => custom_fuction()content => custom_fuction()content => custom_fuction()content => custom_fuction()content => custom_fuction()content => custom_fuction()content => custom_fuction()content => custom_fuction()content => custom_fuction()content => custom_fuction()▶ Recursive templatesRecursive templatesRecursive templatesRecursive templatesRecursive templatesRecursive templatesRecursive templatesRecursive templatesRecursive templatesRecursive templatesRecursive templatesRecursive templatesRecursive templatesRecursive templatesRecursive templatesRecursive templatesRecursive templates

..

..

concatPublic Domain http://commons.wikimedia.org/wiki/File:Adhesive_tapes_clear.JPG

..

ConcatConcatConcatConcatConcatConcatConcatConcatConcatConcatConcatConcatConcatConcatConcatConcatConcat

• A "reference" puppet module:A "reference" puppet module:A "reference" puppet module:A "reference" puppet module:A "reference" puppet module:A "reference" puppet module:A "reference" puppet module:A "reference" puppet module:A "reference" puppet module:A "reference" puppet module:A "reference" puppet module:A "reference" puppet module:A "reference" puppet module:A "reference" puppet module:A "reference" puppet module:A "reference" puppet module:A "reference" puppet module:puppetlabs/concatpuppetlabs/concatpuppetlabs/concatpuppetlabs/concatpuppetlabs/concatpuppetlabs/concatpuppetlabs/concatpuppetlabs/concatpuppetlabs/concatpuppetlabs/concatpuppetlabs/concatpuppetlabs/concatpuppetlabs/concatpuppetlabs/concatpuppetlabs/concatpuppetlabs/concatpuppetlabs/concat

• https://github.com/puppetlabs/puppetlabs-concathttps://github.com/puppetlabs/puppetlabs-concathttps://github.com/puppetlabs/puppetlabs-concathttps://github.com/puppetlabs/puppetlabs-concathttps://github.com/puppetlabs/puppetlabs-concathttps://github.com/puppetlabs/puppetlabs-concathttps://github.com/puppetlabs/puppetlabs-concathttps://github.com/puppetlabs/puppetlabs-concathttps://github.com/puppetlabs/puppetlabs-concathttps://github.com/puppetlabs/puppetlabs-concathttps://github.com/puppetlabs/puppetlabs-concathttps://github.com/puppetlabs/puppetlabs-concathttps://github.com/puppetlabs/puppetlabs-concathttps://github.com/puppetlabs/puppetlabs-concathttps://github.com/puppetlabs/puppetlabs-concathttps://github.com/puppetlabs/puppetlabs-concathttps://github.com/puppetlabs/puppetlabs-concat

• Provides definitions to manage fileProvides definitions to manage fileProvides definitions to manage fileProvides definitions to manage fileProvides definitions to manage fileProvides definitions to manage fileProvides definitions to manage fileProvides definitions to manage fileProvides definitions to manage fileProvides definitions to manage fileProvides definitions to manage fileProvides definitions to manage fileProvides definitions to manage fileProvides definitions to manage fileProvides definitions to manage fileProvides definitions to manage fileProvides definitions to manage file• Alternative modules:Alternative modules:Alternative modules:Alternative modules:Alternative modules:Alternative modules:Alternative modules:Alternative modules:Alternative modules:Alternative modules:Alternative modules:Alternative modules:Alternative modules:Alternative modules:Alternative modules:Alternative modules:Alternative modules:

▶ onyxpoint/pupmod-concatonyxpoint/pupmod-concatonyxpoint/pupmod-concatonyxpoint/pupmod-concatonyxpoint/pupmod-concatonyxpoint/pupmod-concatonyxpoint/pupmod-concatonyxpoint/pupmod-concatonyxpoint/pupmod-concatonyxpoint/pupmod-concatonyxpoint/pupmod-concatonyxpoint/pupmod-concatonyxpoint/pupmod-concatonyxpoint/pupmod-concatonyxpoint/pupmod-concatonyxpoint/pupmod-concatonyxpoint/pupmod-concat▶ theforeman/puppet-concat (fork of onyxpoint)theforeman/puppet-concat (fork of onyxpoint)theforeman/puppet-concat (fork of onyxpoint)theforeman/puppet-concat (fork of onyxpoint)theforeman/puppet-concat (fork of onyxpoint)theforeman/puppet-concat (fork of onyxpoint)theforeman/puppet-concat (fork of onyxpoint)theforeman/puppet-concat (fork of onyxpoint)theforeman/puppet-concat (fork of onyxpoint)theforeman/puppet-concat (fork of onyxpoint)theforeman/puppet-concat (fork of onyxpoint)theforeman/puppet-concat (fork of onyxpoint)theforeman/puppet-concat (fork of onyxpoint)theforeman/puppet-concat (fork of onyxpoint)theforeman/puppet-concat (fork of onyxpoint)theforeman/puppet-concat (fork of onyxpoint)theforeman/puppet-concat (fork of onyxpoint)

..

Concat?Concat?Concat?Concat?Concat?Concat?Concat?Concat?Concat?Concat?Concat?Concat?Concat?Concat?Concat?Concat?Concat?

• Concat takes a bunch of snippetsConcat takes a bunch of snippetsConcat takes a bunch of snippetsConcat takes a bunch of snippetsConcat takes a bunch of snippetsConcat takes a bunch of snippetsConcat takes a bunch of snippetsConcat takes a bunch of snippetsConcat takes a bunch of snippetsConcat takes a bunch of snippetsConcat takes a bunch of snippetsConcat takes a bunch of snippetsConcat takes a bunch of snippetsConcat takes a bunch of snippetsConcat takes a bunch of snippetsConcat takes a bunch of snippetsConcat takes a bunch of snippets• Assemble them info a fileAssemble them info a fileAssemble them info a fileAssemble them info a fileAssemble them info a fileAssemble them info a fileAssemble them info a fileAssemble them info a fileAssemble them info a fileAssemble them info a fileAssemble them info a fileAssemble them info a fileAssemble them info a fileAssemble them info a fileAssemble them info a fileAssemble them info a fileAssemble them info a file• Each snippet is a defineEach snippet is a defineEach snippet is a defineEach snippet is a defineEach snippet is a defineEach snippet is a defineEach snippet is a defineEach snippet is a defineEach snippet is a defineEach snippet is a defineEach snippet is a defineEach snippet is a defineEach snippet is a defineEach snippet is a defineEach snippet is a defineEach snippet is a defineEach snippet is a define• The final file is a defineThe final file is a defineThe final file is a defineThe final file is a defineThe final file is a defineThe final file is a defineThe final file is a defineThe final file is a defineThe final file is a defineThe final file is a defineThe final file is a defineThe final file is a defineThe final file is a defineThe final file is a defineThe final file is a defineThe final file is a defineThe final file is a define

..

.

.

concat { '/tmp/file':ensure => present,

}

concat::fragment { 'tmpfile':target => '/tmp/file',content => 'test contents',order => '01'

}

..

Base and fragmentsBase and fragmentsBase and fragmentsBase and fragmentsBase and fragmentsBase and fragmentsBase and fragmentsBase and fragmentsBase and fragmentsBase and fragmentsBase and fragmentsBase and fragmentsBase and fragmentsBase and fragmentsBase and fragmentsBase and fragmentsBase and fragments

• Concat[]Concat[]Concat[]Concat[]Concat[]Concat[]Concat[]Concat[]Concat[]Concat[]Concat[]Concat[]Concat[]Concat[]Concat[]Concat[]Concat[] configures the destinationconfigures the destinationconfigures the destinationconfigures the destinationconfigures the destinationconfigures the destinationconfigures the destinationconfigures the destinationconfigures the destinationconfigures the destinationconfigures the destinationconfigures the destinationconfigures the destinationconfigures the destinationconfigures the destinationconfigures the destinationconfigures the destination▶ modemodemodemodemodemodemodemodemodemodemodemodemodemodemodemodemode▶ ownerownerownerownerownerownerownerownerownerownerownerownerownerownerownerownerowner▶ pathpathpathpathpathpathpathpathpathpathpathpathpathpathpathpathpath▶ ……………………………………………

• Concat::Fragment[]Concat::Fragment[]Concat::Fragment[]Concat::Fragment[]Concat::Fragment[]Concat::Fragment[]Concat::Fragment[]Concat::Fragment[]Concat::Fragment[]Concat::Fragment[]Concat::Fragment[]Concat::Fragment[]Concat::Fragment[]Concat::Fragment[]Concat::Fragment[]Concat::Fragment[]Concat::Fragment[] = parts of the file= parts of the file= parts of the file= parts of the file= parts of the file= parts of the file= parts of the file= parts of the file= parts of the file= parts of the file= parts of the file= parts of the file= parts of the file= parts of the file= parts of the file= parts of the file= parts of the file• 11111111111111111 Concat[]Concat[]Concat[]Concat[]Concat[]Concat[]Concat[]Concat[]Concat[]Concat[]Concat[]Concat[]Concat[]Concat[]Concat[]Concat[]Concat[] = X= X= X= X= X= X= X= X= X= X= X= X= X= X= X= X= X Concat::Fragment[]Concat::Fragment[]Concat::Fragment[]Concat::Fragment[]Concat::Fragment[]Concat::Fragment[]Concat::Fragment[]Concat::Fragment[]Concat::Fragment[]Concat::Fragment[]Concat::Fragment[]Concat::Fragment[]Concat::Fragment[]Concat::Fragment[]Concat::Fragment[]Concat::Fragment[]Concat::Fragment[]

..

Advantages of concatAdvantages of concatAdvantages of concatAdvantages of concatAdvantages of concatAdvantages of concatAdvantages of concatAdvantages of concatAdvantages of concatAdvantages of concatAdvantages of concatAdvantages of concatAdvantages of concatAdvantages of concatAdvantages of concatAdvantages of concatAdvantages of concat

• More flexibilityMore flexibilityMore flexibilityMore flexibilityMore flexibilityMore flexibilityMore flexibilityMore flexibilityMore flexibilityMore flexibilityMore flexibilityMore flexibilityMore flexibilityMore flexibilityMore flexibilityMore flexibilityMore flexibility▶ ififififififififififififififififif▶ virtual resourcevirtual resourcevirtual resourcevirtual resourcevirtual resourcevirtual resourcevirtual resourcevirtual resourcevirtual resourcevirtual resourcevirtual resourcevirtual resourcevirtual resourcevirtual resourcevirtual resourcevirtual resourcevirtual resource▶ exported resourcesexported resourcesexported resourcesexported resourcesexported resourcesexported resourcesexported resourcesexported resourcesexported resourcesexported resourcesexported resourcesexported resourcesexported resourcesexported resourcesexported resourcesexported resourcesexported resources▶ create_resourcescreate_resourcescreate_resourcescreate_resourcescreate_resourcescreate_resourcescreate_resourcescreate_resourcescreate_resourcescreate_resourcescreate_resourcescreate_resourcescreate_resourcescreate_resourcescreate_resourcescreate_resourcescreate_resources

• Mix templates and filesMix templates and filesMix templates and filesMix templates and filesMix templates and filesMix templates and filesMix templates and filesMix templates and filesMix templates and filesMix templates and filesMix templates and filesMix templates and filesMix templates and filesMix templates and filesMix templates and filesMix templates and filesMix templates and files

..

Disadvantages of concatDisadvantages of concatDisadvantages of concatDisadvantages of concatDisadvantages of concatDisadvantages of concatDisadvantages of concatDisadvantages of concatDisadvantages of concatDisadvantages of concatDisadvantages of concatDisadvantages of concatDisadvantages of concatDisadvantages of concatDisadvantages of concatDisadvantages of concatDisadvantages of concat

• External Puppet moduleExternal Puppet moduleExternal Puppet moduleExternal Puppet moduleExternal Puppet moduleExternal Puppet moduleExternal Puppet moduleExternal Puppet moduleExternal Puppet moduleExternal Puppet moduleExternal Puppet moduleExternal Puppet moduleExternal Puppet moduleExternal Puppet moduleExternal Puppet moduleExternal Puppet moduleExternal Puppet module• Still defining the whole fileStill defining the whole fileStill defining the whole fileStill defining the whole fileStill defining the whole fileStill defining the whole fileStill defining the whole fileStill defining the whole fileStill defining the whole fileStill defining the whole fileStill defining the whole fileStill defining the whole fileStill defining the whole fileStill defining the whole fileStill defining the whole fileStill defining the whole fileStill defining the whole file• PerformancesPerformancesPerformancesPerformancesPerformancesPerformancesPerformancesPerformancesPerformancesPerformancesPerformancesPerformancesPerformancesPerformancesPerformancesPerformancesPerformances

..

..

Exec{sed: onlyif => grep}

CC BY-SA 3.0 http://commons.wikimedia.org/wiki/File:Ca%C3%AFn_par_Henri_Vidal.jpg

..

..https://github.com/search?o=desc&q=exec+sed+onlyif+grep+language%3APuppet

..

exec[sed] is br0kenexec[sed] is br0kenexec[sed] is br0kenexec[sed] is br0kenexec[sed] is br0kenexec[sed] is br0kenexec[sed] is br0kenexec[sed] is br0kenexec[sed] is br0kenexec[sed] is br0kenexec[sed] is br0kenexec[sed] is br0kenexec[sed] is br0kenexec[sed] is br0kenexec[sed] is br0kenexec[sed] is br0kenexec[sed] is br0ken

• Which options to pass to sed and grep?Which options to pass to sed and grep?Which options to pass to sed and grep?Which options to pass to sed and grep?Which options to pass to sed and grep?Which options to pass to sed and grep?Which options to pass to sed and grep?Which options to pass to sed and grep?Which options to pass to sed and grep?Which options to pass to sed and grep?Which options to pass to sed and grep?Which options to pass to sed and grep?Which options to pass to sed and grep?Which options to pass to sed and grep?Which options to pass to sed and grep?Which options to pass to sed and grep?Which options to pass to sed and grep?• You should use as few Exec[] as possibleYou should use as few Exec[] as possibleYou should use as few Exec[] as possibleYou should use as few Exec[] as possibleYou should use as few Exec[] as possibleYou should use as few Exec[] as possibleYou should use as few Exec[] as possibleYou should use as few Exec[] as possibleYou should use as few Exec[] as possibleYou should use as few Exec[] as possibleYou should use as few Exec[] as possibleYou should use as few Exec[] as possibleYou should use as few Exec[] as possibleYou should use as few Exec[] as possibleYou should use as few Exec[] as possibleYou should use as few Exec[] as possibleYou should use as few Exec[] as possible• grep ....grep ....grep ....grep ....grep ....grep ....grep ....grep ....grep ....grep ....grep ....grep ....grep ....grep ....grep ....grep ....grep ....• Escape, regexes…Escape, regexes…Escape, regexes…Escape, regexes…Escape, regexes…Escape, regexes…Escape, regexes…Escape, regexes…Escape, regexes…Escape, regexes…Escape, regexes…Escape, regexes…Escape, regexes…Escape, regexes…Escape, regexes…Escape, regexes…Escape, regexes…

..

Another alternative: conf.dAnother alternative: conf.dAnother alternative: conf.dAnother alternative: conf.dAnother alternative: conf.dAnother alternative: conf.dAnother alternative: conf.dAnother alternative: conf.dAnother alternative: conf.dAnother alternative: conf.dAnother alternative: conf.dAnother alternative: conf.dAnother alternative: conf.dAnother alternative: conf.dAnother alternative: conf.dAnother alternative: conf.dAnother alternative: conf.d

• Some services support conf.d directoriesSome services support conf.d directoriesSome services support conf.d directoriesSome services support conf.d directoriesSome services support conf.d directoriesSome services support conf.d directoriesSome services support conf.d directoriesSome services support conf.d directoriesSome services support conf.d directoriesSome services support conf.d directoriesSome services support conf.d directoriesSome services support conf.d directoriesSome services support conf.d directoriesSome services support conf.d directoriesSome services support conf.d directoriesSome services support conf.d directoriesSome services support conf.d directories• But it is hard to change existing parametersBut it is hard to change existing parametersBut it is hard to change existing parametersBut it is hard to change existing parametersBut it is hard to change existing parametersBut it is hard to change existing parametersBut it is hard to change existing parametersBut it is hard to change existing parametersBut it is hard to change existing parametersBut it is hard to change existing parametersBut it is hard to change existing parametersBut it is hard to change existing parametersBut it is hard to change existing parametersBut it is hard to change existing parametersBut it is hard to change existing parametersBut it is hard to change existing parametersBut it is hard to change existing parameters• In which order are the files read?In which order are the files read?In which order are the files read?In which order are the files read?In which order are the files read?In which order are the files read?In which order are the files read?In which order are the files read?In which order are the files read?In which order are the files read?In which order are the files read?In which order are the files read?In which order are the files read?In which order are the files read?In which order are the files read?In which order are the files read?In which order are the files read?• Don't forget to purgeDon't forget to purgeDon't forget to purgeDon't forget to purgeDon't forget to purgeDon't forget to purgeDon't forget to purgeDon't forget to purgeDon't forget to purgeDon't forget to purgeDon't forget to purgeDon't forget to purgeDon't forget to purgeDon't forget to purgeDon't forget to purgeDon't forget to purgeDon't forget to purge

..

..

Augeas

CC BY-SA 3.0 http://commons.wikimedia.org/wiki/File:Students_assisting_surgery.JPG

..

• Configuration editing toolConfiguration editing toolConfiguration editing toolConfiguration editing toolConfiguration editing toolConfiguration editing toolConfiguration editing toolConfiguration editing toolConfiguration editing toolConfiguration editing toolConfiguration editing toolConfiguration editing toolConfiguration editing toolConfiguration editing toolConfiguration editing toolConfiguration editing toolConfiguration editing tool• First release in 2007First release in 2007First release in 2007First release in 2007First release in 2007First release in 2007First release in 2007First release in 2007First release in 2007First release in 2007First release in 2007First release in 2007First release in 2007First release in 2007First release in 2007First release in 2007First release in 2007• API coded in CAPI coded in CAPI coded in CAPI coded in CAPI coded in CAPI coded in CAPI coded in CAPI coded in CAPI coded in CAPI coded in CAPI coded in CAPI coded in CAPI coded in CAPI coded in CAPI coded in CAPI coded in CAPI coded in C• Command-line toolsCommand-line toolsCommand-line toolsCommand-line toolsCommand-line toolsCommand-line toolsCommand-line toolsCommand-line toolsCommand-line toolsCommand-line toolsCommand-line toolsCommand-line toolsCommand-line toolsCommand-line toolsCommand-line toolsCommand-line toolsCommand-line tools• Bindings for different languagesBindings for different languagesBindings for different languagesBindings for different languagesBindings for different languagesBindings for different languagesBindings for different languagesBindings for different languagesBindings for different languagesBindings for different languagesBindings for different languagesBindings for different languagesBindings for different languagesBindings for different languagesBindings for different languagesBindings for different languagesBindings for different languages

..

Configuration editing toolConfiguration editing toolConfiguration editing toolConfiguration editing toolConfiguration editing toolConfiguration editing toolConfiguration editing toolConfiguration editing toolConfiguration editing toolConfiguration editing toolConfiguration editing toolConfiguration editing toolConfiguration editing toolConfiguration editing toolConfiguration editing toolConfiguration editing toolConfiguration editing tool

• Parsing the configuration filesParsing the configuration filesParsing the configuration filesParsing the configuration filesParsing the configuration filesParsing the configuration filesParsing the configuration filesParsing the configuration filesParsing the configuration filesParsing the configuration filesParsing the configuration filesParsing the configuration filesParsing the configuration filesParsing the configuration filesParsing the configuration filesParsing the configuration filesParsing the configuration files• Turning them into a treeTurning them into a treeTurning them into a treeTurning them into a treeTurning them into a treeTurning them into a treeTurning them into a treeTurning them into a treeTurning them into a treeTurning them into a treeTurning them into a treeTurning them into a treeTurning them into a treeTurning them into a treeTurning them into a treeTurning them into a treeTurning them into a tree• Edit the tree & save the configurationEdit the tree & save the configurationEdit the tree & save the configurationEdit the tree & save the configurationEdit the tree & save the configurationEdit the tree & save the configurationEdit the tree & save the configurationEdit the tree & save the configurationEdit the tree & save the configurationEdit the tree & save the configurationEdit the tree & save the configurationEdit the tree & save the configurationEdit the tree & save the configurationEdit the tree & save the configurationEdit the tree & save the configurationEdit the tree & save the configurationEdit the tree & save the configuration

..

.

.

$ cat /etc/nsswitch.conf# /etc/nsswitch.conf## Example configuration#

passwd: db filesgroup: db filesinitgroups: db [SUCCESS=continue] filesshadow: db filesgshadow: files

..

.

.

augtool> ls /files/etc/nsswitch.conf/#comment[1] = /etc/nsswitch.conf#comment[2] = Example configurationdatabase[1]/ = passwddatabase[2]/ = groupdatabase[3]/ = initgroupsdatabase[4]/ = shadowdatabase[5]/ = gshadow

..

.

.

augtool> ls /files/etc/nsswitch.conf/database[1]/service[1] = dbservice[2] = files

..

Native format -> treeNative format -> treeNative format -> treeNative format -> treeNative format -> treeNative format -> treeNative format -> treeNative format -> treeNative format -> treeNative format -> treeNative format -> treeNative format -> treeNative format -> treeNative format -> treeNative format -> treeNative format -> treeNative format -> tree

• Augeas turns the file into a treeAugeas turns the file into a treeAugeas turns the file into a treeAugeas turns the file into a treeAugeas turns the file into a treeAugeas turns the file into a treeAugeas turns the file into a treeAugeas turns the file into a treeAugeas turns the file into a treeAugeas turns the file into a treeAugeas turns the file into a treeAugeas turns the file into a treeAugeas turns the file into a treeAugeas turns the file into a treeAugeas turns the file into a treeAugeas turns the file into a treeAugeas turns the file into a tree• The tree matches the meaning of the fileThe tree matches the meaning of the fileThe tree matches the meaning of the fileThe tree matches the meaning of the fileThe tree matches the meaning of the fileThe tree matches the meaning of the fileThe tree matches the meaning of the fileThe tree matches the meaning of the fileThe tree matches the meaning of the fileThe tree matches the meaning of the fileThe tree matches the meaning of the fileThe tree matches the meaning of the fileThe tree matches the meaning of the fileThe tree matches the meaning of the fileThe tree matches the meaning of the fileThe tree matches the meaning of the fileThe tree matches the meaning of the file• Augeas understand commentsAugeas understand commentsAugeas understand commentsAugeas understand commentsAugeas understand commentsAugeas understand commentsAugeas understand commentsAugeas understand commentsAugeas understand commentsAugeas understand commentsAugeas understand commentsAugeas understand commentsAugeas understand commentsAugeas understand commentsAugeas understand commentsAugeas understand commentsAugeas understand comments• Augeas does not care about empty linesAugeas does not care about empty linesAugeas does not care about empty linesAugeas does not care about empty linesAugeas does not care about empty linesAugeas does not care about empty linesAugeas does not care about empty linesAugeas does not care about empty linesAugeas does not care about empty linesAugeas does not care about empty linesAugeas does not care about empty linesAugeas does not care about empty linesAugeas does not care about empty linesAugeas does not care about empty linesAugeas does not care about empty linesAugeas does not care about empty linesAugeas does not care about empty lines• The cli tool (The cli tool (The cli tool (The cli tool (The cli tool (The cli tool (The cli tool (The cli tool (The cli tool (The cli tool (The cli tool (The cli tool (The cli tool (The cli tool (The cli tool (The cli tool (The cli tool (augtoolaugtoolaugtoolaugtoolaugtoolaugtoolaugtoolaugtoolaugtoolaugtoolaugtoolaugtoolaugtoolaugtoolaugtoolaugtoolaugtool) has autocomplete) has autocomplete) has autocomplete) has autocomplete) has autocomplete) has autocomplete) has autocomplete) has autocomplete) has autocomplete) has autocomplete) has autocomplete) has autocomplete) has autocomplete) has autocomplete) has autocomplete) has autocomplete) has autocomplete• It recognize a lot of formatsIt recognize a lot of formatsIt recognize a lot of formatsIt recognize a lot of formatsIt recognize a lot of formatsIt recognize a lot of formatsIt recognize a lot of formatsIt recognize a lot of formatsIt recognize a lot of formatsIt recognize a lot of formatsIt recognize a lot of formatsIt recognize a lot of formatsIt recognize a lot of formatsIt recognize a lot of formatsIt recognize a lot of formatsIt recognize a lot of formatsIt recognize a lot of formats

..

.

.

augtool> set /files/etc/nsswitch.conf/database[1]/service[last()+1] ldapaugtool> saveSaved 1 file(s)

..

.

.

$ cat /etc/nsswitch.conf# /etc/nsswitch.conf## Example configuration#

passwd: db files ldapgroup: db filesinitgroups: db [SUCCESS=continue] filesshadow: db filesgshadow: files

..

.

.

augtool> match /files/etc/nsswitch.conf/*/* ldap/files/etc/nsswitch.conf/database[1]/service[3]augtool> print /files/etc/nsswitch.conf/database[1]/files/etc/nsswitch.conf/database[1] = "passwd"/files/etc/nsswitch.conf/database[1]/service[1] = "db"/files/etc/nsswitch.conf/database[1]/service[2] = "files"/files/etc/nsswitch.conf/database[1]/service[3] = "ldap"

..

.

.

augtool> rm /files/etc/nsswitch.conf/database[1]/service[3]rm : /files/etc/nsswitch.conf/database[1]/service[3] 1augtool> print /files/etc/nsswitch.conf/database[1]/files/etc/nsswitch.conf/database[1] = "passwd"/files/etc/nsswitch.conf/database[1]/service[1] = "db"/files/etc/nsswitch.conf/database[1]/service[2] = "files"augtool> saveSaved 1 file(s)

..

One API to edit them allOne API to edit them allOne API to edit them allOne API to edit them allOne API to edit them allOne API to edit them allOne API to edit them allOne API to edit them allOne API to edit them allOne API to edit them allOne API to edit them allOne API to edit them allOne API to edit them allOne API to edit them allOne API to edit them allOne API to edit them allOne API to edit them all

• Can talk XML, ini, named, nginx, …Can talk XML, ini, named, nginx, …Can talk XML, ini, named, nginx, …Can talk XML, ini, named, nginx, …Can talk XML, ini, named, nginx, …Can talk XML, ini, named, nginx, …Can talk XML, ini, named, nginx, …Can talk XML, ini, named, nginx, …Can talk XML, ini, named, nginx, …Can talk XML, ini, named, nginx, …Can talk XML, ini, named, nginx, …Can talk XML, ini, named, nginx, …Can talk XML, ini, named, nginx, …Can talk XML, ini, named, nginx, …Can talk XML, ini, named, nginx, …Can talk XML, ini, named, nginx, …Can talk XML, ini, named, nginx, …• Only change what is neededOnly change what is neededOnly change what is neededOnly change what is neededOnly change what is neededOnly change what is neededOnly change what is neededOnly change what is neededOnly change what is neededOnly change what is neededOnly change what is neededOnly change what is neededOnly change what is neededOnly change what is neededOnly change what is neededOnly change what is neededOnly change what is needed• Ensure the syntax is rightEnsure the syntax is rightEnsure the syntax is rightEnsure the syntax is rightEnsure the syntax is rightEnsure the syntax is rightEnsure the syntax is rightEnsure the syntax is rightEnsure the syntax is rightEnsure the syntax is rightEnsure the syntax is rightEnsure the syntax is rightEnsure the syntax is rightEnsure the syntax is rightEnsure the syntax is rightEnsure the syntax is rightEnsure the syntax is right

..

Augeas LensesAugeas LensesAugeas LensesAugeas LensesAugeas LensesAugeas LensesAugeas LensesAugeas LensesAugeas LensesAugeas LensesAugeas LensesAugeas LensesAugeas LensesAugeas LensesAugeas LensesAugeas LensesAugeas Lenses

• Lenses explain how to understand filesLenses explain how to understand filesLenses explain how to understand filesLenses explain how to understand filesLenses explain how to understand filesLenses explain how to understand filesLenses explain how to understand filesLenses explain how to understand filesLenses explain how to understand filesLenses explain how to understand filesLenses explain how to understand filesLenses explain how to understand filesLenses explain how to understand filesLenses explain how to understand filesLenses explain how to understand filesLenses explain how to understand filesLenses explain how to understand files▶ SyntaxSyntaxSyntaxSyntaxSyntaxSyntaxSyntaxSyntaxSyntaxSyntaxSyntaxSyntaxSyntaxSyntaxSyntaxSyntaxSyntax▶ LogicLogicLogicLogicLogicLogicLogicLogicLogicLogicLogicLogicLogicLogicLogicLogicLogic▶ Path of the filesPath of the filesPath of the filesPath of the filesPath of the filesPath of the filesPath of the filesPath of the filesPath of the filesPath of the filesPath of the filesPath of the filesPath of the filesPath of the filesPath of the filesPath of the filesPath of the files

• There are a lot of them availableThere are a lot of them availableThere are a lot of them availableThere are a lot of them availableThere are a lot of them availableThere are a lot of them availableThere are a lot of them availableThere are a lot of them availableThere are a lot of them availableThere are a lot of them availableThere are a lot of them availableThere are a lot of them availableThere are a lot of them availableThere are a lot of them availableThere are a lot of them availableThere are a lot of them availableThere are a lot of them available• You can write your own lensesYou can write your own lensesYou can write your own lensesYou can write your own lensesYou can write your own lensesYou can write your own lensesYou can write your own lensesYou can write your own lensesYou can write your own lensesYou can write your own lensesYou can write your own lensesYou can write your own lensesYou can write your own lensesYou can write your own lensesYou can write your own lensesYou can write your own lensesYou can write your own lenses

..

"This"This"This"This"This"This"This"This"This"This"This"This"This"This"This"This"This bringsbringsbringsbringsbringsbringsbringsbringsbringsbringsbringsbringsbringsbringsbringsbringsbrings thethethethethethethethethethethethethethethethethe totaltotaltotaltotaltotaltotaltotaltotaltotaltotaltotaltotaltotaltotaltotaltotaltotal numbernumbernumbernumbernumbernumbernumbernumbernumbernumbernumbernumbernumbernumbernumbernumbernumber ofofofofofofofofofofofofofofofofof lenseslenseslenseslenseslenseslenseslenseslenseslenseslenseslenseslenseslenseslenseslenseslenseslensestototototototototototototototototo 178.178.178.178.178.178.178.178.178.178.178.178.178.178.178.178.178. […][…][…][…][…][…][…][…][…][…][…][…][…][…][…][…][…] It'sIt'sIt'sIt'sIt'sIt'sIt'sIt'sIt'sIt'sIt'sIt'sIt'sIt'sIt'sIt'sIt's depressingdepressingdepressingdepressingdepressingdepressingdepressingdepressingdepressingdepressingdepressingdepressingdepressingdepressingdepressingdepressingdepressing tototototototototototototototototo thinkthinkthinkthinkthinkthinkthinkthinkthinkthinkthinkthinkthinkthinkthinkthinkthink thatthatthatthatthatthatthatthatthatthatthatthatthatthatthatthatthatLinux/UnixLinux/UnixLinux/UnixLinux/UnixLinux/UnixLinux/UnixLinux/UnixLinux/UnixLinux/UnixLinux/UnixLinux/UnixLinux/UnixLinux/UnixLinux/UnixLinux/UnixLinux/UnixLinux/Unix systemssystemssystemssystemssystemssystemssystemssystemssystemssystemssystemssystemssystemssystemssystemssystemssystems havehavehavehavehavehavehavehavehavehavehavehavehavehavehavehavehave managedmanagedmanagedmanagedmanagedmanagedmanagedmanagedmanagedmanagedmanagedmanagedmanagedmanagedmanagedmanagedmanaged tototototototototototototototototogrowgrowgrowgrowgrowgrowgrowgrowgrowgrowgrowgrowgrowgrowgrowgrowgrow thisthisthisthisthisthisthisthisthisthisthisthisthisthisthisthisthis manymanymanymanymanymanymanymanymanymanymanymanymanymanymanymanymany specialspecialspecialspecialspecialspecialspecialspecialspecialspecialspecialspecialspecialspecialspecialspecialspecial snowflakesnowflakesnowflakesnowflakesnowflakesnowflakesnowflakesnowflakesnowflakesnowflakesnowflakesnowflakesnowflakesnowflakesnowflakesnowflakesnowflake

formats."formats."formats."formats."formats."formats."formats."formats."formats."formats."formats."formats."formats."formats."formats."formats."formats."David Lutterkort, main developerDavid Lutterkort, main developerDavid Lutterkort, main developerDavid Lutterkort, main developerDavid Lutterkort, main developerDavid Lutterkort, main developerDavid Lutterkort, main developerDavid Lutterkort, main developerDavid Lutterkort, main developerDavid Lutterkort, main developerDavid Lutterkort, main developerDavid Lutterkort, main developerDavid Lutterkort, main developerDavid Lutterkort, main developerDavid Lutterkort, main developerDavid Lutterkort, main developerDavid Lutterkort, main developer

about Augeas 1.3.0about Augeas 1.3.0about Augeas 1.3.0about Augeas 1.3.0about Augeas 1.3.0about Augeas 1.3.0about Augeas 1.3.0about Augeas 1.3.0about Augeas 1.3.0about Augeas 1.3.0about Augeas 1.3.0about Augeas 1.3.0about Augeas 1.3.0about Augeas 1.3.0about Augeas 1.3.0about Augeas 1.3.0about Augeas 1.3.0

..

178 lenses178 lenses178 lenses178 lenses178 lenses178 lenses178 lenses178 lenses178 lenses178 lenses178 lenses178 lenses178 lenses178 lenses178 lenses178 lenses178 lenses

approxapproxapproxapproxapproxapproxapproxapproxapproxapproxapproxapproxapproxapproxapproxapproxapprox aptcacherngsecurityaptcacherngsecurityaptcacherngsecurityaptcacherngsecurityaptcacherngsecurityaptcacherngsecurityaptcacherngsecurityaptcacherngsecurityaptcacherngsecurityaptcacherngsecurityaptcacherngsecurityaptcacherngsecurityaptcacherngsecurityaptcacherngsecurityaptcacherngsecurityaptcacherngsecurityaptcacherngsecurity aptconfaptconfaptconfaptconfaptconfaptconfaptconfaptconfaptconfaptconfaptconfaptconfaptconfaptconfaptconfaptconfaptconf aptpreferencesaptpreferencesaptpreferencesaptpreferencesaptpreferencesaptpreferencesaptpreferencesaptpreferencesaptpreferencesaptpreferencesaptpreferencesaptpreferencesaptpreferencesaptpreferencesaptpreferencesaptpreferencesaptpreferencesaptsourcesaptsourcesaptsourcesaptsourcesaptsourcesaptsourcesaptsourcesaptsourcesaptsourcesaptsourcesaptsourcesaptsourcesaptsourcesaptsourcesaptsourcesaptsourcesaptsources automounterautomounterautomounterautomounterautomounterautomounterautomounterautomounterautomounterautomounterautomounterautomounterautomounterautomounterautomounterautomounterautomounter carboncarboncarboncarboncarboncarboncarboncarboncarboncarboncarboncarboncarboncarboncarboncarboncarbon cgrulescgrulescgrulescgrulescgrulescgrulescgrulescgrulescgrulescgrulescgrulescgrulescgrulescgrulescgrulescgrulescgrules channelschannelschannelschannelschannelschannelschannelschannelschannelschannelschannelschannelschannelschannelschannelschannelschannels

cyrus_imapdcyrus_imapdcyrus_imapdcyrus_imapdcyrus_imapdcyrus_imapdcyrus_imapdcyrus_imapdcyrus_imapdcyrus_imapdcyrus_imapdcyrus_imapdcyrus_imapdcyrus_imapdcyrus_imapdcyrus_imapdcyrus_imapd darkicedarkicedarkicedarkicedarkicedarkicedarkicedarkicedarkicedarkicedarkicedarkicedarkicedarkicedarkicedarkicedarkice dpkgdpkgdpkgdpkgdpkgdpkgdpkgdpkgdpkgdpkgdpkgdpkgdpkgdpkgdpkgdpkgdpkg dputdputdputdputdputdputdputdputdputdputdputdputdputdputdputdputdput erlangerlangerlangerlangerlangerlangerlangerlangerlangerlangerlangerlangerlangerlangerlangerlangerlang ethersethersethersethersethersethersethersethersethersethersethersethersethersethersethersethersethers exportsexportsexportsexportsexportsexportsexportsexportsexportsexportsexportsexportsexportsexportsexportsexportsexportsfai_diskconfigfai_diskconfigfai_diskconfigfai_diskconfigfai_diskconfigfai_diskconfigfai_diskconfigfai_diskconfigfai_diskconfigfai_diskconfigfai_diskconfigfai_diskconfigfai_diskconfigfai_diskconfigfai_diskconfigfai_diskconfigfai_diskconfig gdmgdmgdmgdmgdmgdmgdmgdmgdmgdmgdmgdmgdmgdmgdmgdmgdm gtkbookmarksgtkbookmarksgtkbookmarksgtkbookmarksgtkbookmarksgtkbookmarksgtkbookmarksgtkbookmarksgtkbookmarksgtkbookmarksgtkbookmarksgtkbookmarksgtkbookmarksgtkbookmarksgtkbookmarksgtkbookmarksgtkbookmarks host_confhost_confhost_confhost_confhost_confhost_confhost_confhost_confhost_confhost_confhost_confhost_confhost_confhost_confhost_confhost_confhost_conf hostnamehostnamehostnamehostnamehostnamehostnamehostnamehostnamehostnamehostnamehostnamehostnamehostnamehostnamehostnamehostnamehostname hostshostshostshostshostshostshostshostshostshostshostshostshostshostshostshostshostshttpdhttpdhttpdhttpdhttpdhttpdhttpdhttpdhttpdhttpdhttpdhttpdhttpdhttpdhttpdhttpdhttpd inetdinetdinetdinetdinetdinetdinetdinetdinetdinetdinetdinetdinetdinetdinetdinetdinetd inifileinifileinifileinifileinifileinifileinifileinifileinifileinifileinifileinifileinifileinifileinifileinifileinifile inittabinittabinittabinittabinittabinittabinittabinittabinittabinittabinittabinittabinittabinittabinittabinittabinittab interfacesinterfacesinterfacesinterfacesinterfacesinterfacesinterfacesinterfacesinterfacesinterfacesinterfacesinterfacesinterfacesinterfacesinterfacesinterfacesinterfaces jettyrealmjettyrealmjettyrealmjettyrealmjettyrealmjettyrealmjettyrealmjettyrealmjettyrealmjettyrealmjettyrealmjettyrealmjettyrealmjettyrealmjettyrealmjettyrealmjettyrealm keepalivedkeepalivedkeepalivedkeepalivedkeepalivedkeepalivedkeepalivedkeepalivedkeepalivedkeepalivedkeepalivedkeepalivedkeepalivedkeepalivedkeepalivedkeepalivedkeepalivedknown_hostsknown_hostsknown_hostsknown_hostsknown_hostsknown_hostsknown_hostsknown_hostsknown_hostsknown_hostsknown_hostsknown_hostsknown_hostsknown_hostsknown_hostsknown_hostsknown_hosts ldsoldsoldsoldsoldsoldsoldsoldsoldsoldsoldsoldsoldsoldsoldsoldsoldso lightdmlightdmlightdmlightdmlightdmlightdmlightdmlightdmlightdmlightdmlightdmlightdmlightdmlightdmlightdmlightdmlightdm limitslimitslimitslimitslimitslimitslimitslimitslimitslimitslimitslimitslimitslimitslimitslimitslimits logwatchlogwatchlogwatchlogwatchlogwatchlogwatchlogwatchlogwatchlogwatchlogwatchlogwatchlogwatchlogwatchlogwatchlogwatchlogwatchlogwatch lokkitlokkitlokkitlokkitlokkitlokkitlokkitlokkitlokkitlokkitlokkitlokkitlokkitlokkitlokkitlokkitlokkit lvmlvmlvmlvmlvmlvmlvmlvmlvmlvmlvmlvmlvmlvmlvmlvmlvm

nagioscfgnagioscfgnagioscfgnagioscfgnagioscfgnagioscfgnagioscfgnagioscfgnagioscfgnagioscfgnagioscfgnagioscfgnagioscfgnagioscfgnagioscfgnagioscfgnagioscfg netmasksnetmasksnetmasksnetmasksnetmasksnetmasksnetmasksnetmasksnetmasksnetmasksnetmasksnetmasksnetmasksnetmasksnetmasksnetmasksnetmasks networksnetworksnetworksnetworksnetworksnetworksnetworksnetworksnetworksnetworksnetworksnetworksnetworksnetworksnetworksnetworksnetworks nrpenrpenrpenrpenrpenrpenrpenrpenrpenrpenrpenrpenrpenrpenrpenrpenrpe ntpdntpdntpdntpdntpdntpdntpdntpdntpdntpdntpdntpdntpdntpdntpdntpdntpd pagekitepagekitepagekitepagekitepagekitepagekitepagekitepagekitepagekitepagekitepagekitepagekitepagekitepagekitepagekitepagekitepagekite pbuilderpbuilderpbuilderpbuilderpbuilderpbuilderpbuilderpbuilderpbuilderpbuilderpbuilderpbuilderpbuilderpbuilderpbuilderpbuilderpbuilderpg_hbapg_hbapg_hbapg_hbapg_hbapg_hbapg_hbapg_hbapg_hbapg_hbapg_hbapg_hbapg_hbapg_hbapg_hbapg_hbapg_hba phpvarsphpvarsphpvarsphpvarsphpvarsphpvarsphpvarsphpvarsphpvarsphpvarsphpvarsphpvarsphpvarsphpvarsphpvarsphpvarsphpvars postfix_mainpostfix_mainpostfix_mainpostfix_mainpostfix_mainpostfix_mainpostfix_mainpostfix_mainpostfix_mainpostfix_mainpostfix_mainpostfix_mainpostfix_mainpostfix_mainpostfix_mainpostfix_mainpostfix_main postfix_masterpostfix_masterpostfix_masterpostfix_masterpostfix_masterpostfix_masterpostfix_masterpostfix_masterpostfix_masterpostfix_masterpostfix_masterpostfix_masterpostfix_masterpostfix_masterpostfix_masterpostfix_masterpostfix_master protocolsprotocolsprotocolsprotocolsprotocolsprotocolsprotocolsprotocolsprotocolsprotocolsprotocolsprotocolsprotocolsprotocolsprotocolsprotocolsprotocols puppetpuppetpuppetpuppetpuppetpuppetpuppetpuppetpuppetpuppetpuppetpuppetpuppetpuppetpuppetpuppetpuppetpuppetfileserverpuppetfileserverpuppetfileserverpuppetfileserverpuppetfileserverpuppetfileserverpuppetfileserverpuppetfileserverpuppetfileserverpuppetfileserverpuppetfileserverpuppetfileserverpuppetfileserverpuppetfileserverpuppetfileserverpuppetfileserverpuppetfileserver pythonpastepythonpastepythonpastepythonpastepythonpastepythonpastepythonpastepythonpastepythonpastepythonpastepythonpastepythonpastepythonpastepythonpastepythonpastepythonpastepythonpaste redisredisredisredisredisredisredisredisredisredisredisredisredisredisredisredisredis resolvresolvresolvresolvresolvresolvresolvresolvresolvresolvresolvresolvresolvresolvresolvresolvresolv rsyncdrsyncdrsyncdrsyncdrsyncdrsyncdrsyncdrsyncdrsyncdrsyncdrsyncdrsyncdrsyncdrsyncdrsyncdrsyncdrsyncd rxrxrxrxrxrxrxrxrxrxrxrxrxrxrxrxrx schrootschrootschrootschrootschrootschrootschrootschrootschrootschrootschrootschrootschrootschrootschrootschrootschrootsepsepsepsepsepsepsepsepsepsepsepsepsepsepsepsepsep shellsshellsshellsshellsshellsshellsshellsshellsshellsshellsshellsshellsshellsshellsshellsshellsshells simplelinessimplelinessimplelinessimplelinessimplelinessimplelinessimplelinessimplelinessimplelinessimplelinessimplelinessimplelinessimplelinessimplelinessimplelinessimplelinessimplelines simplevarssimplevarssimplevarssimplevarssimplevarssimplevarssimplevarssimplevarssimplevarssimplevarssimplevarssimplevarssimplevarssimplevarssimplevarssimplevarssimplevars solaris_systemsolaris_systemsolaris_systemsolaris_systemsolaris_systemsolaris_systemsolaris_systemsolaris_systemsolaris_systemsolaris_systemsolaris_systemsolaris_systemsolaris_systemsolaris_systemsolaris_systemsolaris_systemsolaris_system somasomasomasomasomasomasomasomasomasomasomasomasomasomasomasomasoma sshdsshdsshdsshdsshdsshdsshdsshdsshdsshdsshdsshdsshdsshdsshdsshdsshd

sudoerssudoerssudoerssudoerssudoerssudoerssudoerssudoerssudoerssudoerssudoerssudoerssudoerssudoerssudoerssudoerssudoers sysconfigsysconfigsysconfigsysconfigsysconfigsysconfigsysconfigsysconfigsysconfigsysconfigsysconfigsysconfigsysconfigsysconfigsysconfigsysconfigsysconfig sysconfig_routesysconfig_routesysconfig_routesysconfig_routesysconfig_routesysconfig_routesysconfig_routesysconfig_routesysconfig_routesysconfig_routesysconfig_routesysconfig_routesysconfig_routesysconfig_routesysconfig_routesysconfig_routesysconfig_route sysctlsysctlsysctlsysctlsysctlsysctlsysctlsysctlsysctlsysctlsysctlsysctlsysctlsysctlsysctlsysctlsysctl syslogsyslogsyslogsyslogsyslogsyslogsyslogsyslogsyslogsyslogsyslogsyslogsyslogsyslogsyslogsyslogsyslog thttpdthttpdthttpdthttpdthttpdthttpdthttpdthttpdthttpdthttpdthttpdthttpdthttpdthttpdthttpdthttpdthttpdup2dateup2dateup2dateup2dateup2dateup2dateup2dateup2dateup2dateup2dateup2dateup2dateup2dateup2dateup2dateup2dateup2date utilutilutilutilutilutilutilutilutilutilutilutilutilutilutilutilutil vfstabvfstabvfstabvfstabvfstabvfstabvfstabvfstabvfstabvfstabvfstabvfstabvfstabvfstabvfstabvfstabvfstab webminwebminwebminwebminwebminwebminwebminwebminwebminwebminwebminwebminwebminwebminwebminwebminwebmin xendconfsxpxendconfsxpxendconfsxpxendconfsxpxendconfsxpxendconfsxpxendconfsxpxendconfsxpxendconfsxpxendconfsxpxendconfsxpxendconfsxpxendconfsxpxendconfsxpxendconfsxpxendconfsxpxendconfsxp yumyumyumyumyumyumyumyumyumyumyumyumyumyumyumyumyum

..

A short lenseA short lenseA short lenseA short lenseA short lenseA short lenseA short lenseA short lenseA short lenseA short lenseA short lenseA short lenseA short lenseA short lenseA short lenseA short lenseA short lense

.

.

module Hostname =autoload xfm

(* View: lns *)let lns = [ label "hostname" . store Rx.word . Util.eol ]

(* View: filter *)let filter = incl "/etc/hostname". incl "/etc/mailname"

let xfm = transform lns filter

..

Puppet <3 augeasPuppet <3 augeasPuppet <3 augeasPuppet <3 augeasPuppet <3 augeasPuppet <3 augeasPuppet <3 augeasPuppet <3 augeasPuppet <3 augeasPuppet <3 augeasPuppet <3 augeasPuppet <3 augeasPuppet <3 augeasPuppet <3 augeasPuppet <3 augeasPuppet <3 augeasPuppet <3 augeas

• Native "augeas" resourceNative "augeas" resourceNative "augeas" resourceNative "augeas" resourceNative "augeas" resourceNative "augeas" resourceNative "augeas" resourceNative "augeas" resourceNative "augeas" resourceNative "augeas" resourceNative "augeas" resourceNative "augeas" resourceNative "augeas" resourceNative "augeas" resourceNative "augeas" resourceNative "augeas" resourceNative "augeas" resource• Support for pluginsyncSupport for pluginsyncSupport for pluginsyncSupport for pluginsyncSupport for pluginsyncSupport for pluginsyncSupport for pluginsyncSupport for pluginsyncSupport for pluginsyncSupport for pluginsyncSupport for pluginsyncSupport for pluginsyncSupport for pluginsyncSupport for pluginsyncSupport for pluginsyncSupport for pluginsyncSupport for pluginsync• Helpers availableHelpers availableHelpers availableHelpers availableHelpers availableHelpers availableHelpers availableHelpers availableHelpers availableHelpers availableHelpers availableHelpers availableHelpers availableHelpers availableHelpers availableHelpers availableHelpers available

..

Puppet examplePuppet examplePuppet examplePuppet examplePuppet examplePuppet examplePuppet examplePuppet examplePuppet examplePuppet examplePuppet examplePuppet examplePuppet examplePuppet examplePuppet examplePuppet examplePuppet example

.

.

augeas { $name:context => "/files${fstab::variables::fstab_file}",changes => [

"rm ${fstab_match_line}",],onlyif => "match ${fstab_match_line} size > 0"

}

..

Real usecasesReal usecasesReal usecasesReal usecasesReal usecasesReal usecasesReal usecasesReal usecasesReal usecasesReal usecasesReal usecasesReal usecasesReal usecasesReal usecasesReal usecasesReal usecasesReal usecases

• Change grub optionsChange grub optionsChange grub optionsChange grub optionsChange grub optionsChange grub optionsChange grub optionsChange grub optionsChange grub optionsChange grub optionsChange grub optionsChange grub optionsChange grub optionsChange grub optionsChange grub optionsChange grub optionsChange grub options• Modify /etc/hostsModify /etc/hostsModify /etc/hostsModify /etc/hostsModify /etc/hostsModify /etc/hostsModify /etc/hostsModify /etc/hostsModify /etc/hostsModify /etc/hostsModify /etc/hostsModify /etc/hostsModify /etc/hostsModify /etc/hostsModify /etc/hostsModify /etc/hostsModify /etc/hosts• Modify XML's (puppetlabs-tomcat)Modify XML's (puppetlabs-tomcat)Modify XML's (puppetlabs-tomcat)Modify XML's (puppetlabs-tomcat)Modify XML's (puppetlabs-tomcat)Modify XML's (puppetlabs-tomcat)Modify XML's (puppetlabs-tomcat)Modify XML's (puppetlabs-tomcat)Modify XML's (puppetlabs-tomcat)Modify XML's (puppetlabs-tomcat)Modify XML's (puppetlabs-tomcat)Modify XML's (puppetlabs-tomcat)Modify XML's (puppetlabs-tomcat)Modify XML's (puppetlabs-tomcat)Modify XML's (puppetlabs-tomcat)Modify XML's (puppetlabs-tomcat)Modify XML's (puppetlabs-tomcat)• Configure JenkinsConfigure JenkinsConfigure JenkinsConfigure JenkinsConfigure JenkinsConfigure JenkinsConfigure JenkinsConfigure JenkinsConfigure JenkinsConfigure JenkinsConfigure JenkinsConfigure JenkinsConfigure JenkinsConfigure JenkinsConfigure JenkinsConfigure JenkinsConfigure Jenkins

..

PluginsyncPluginsyncPluginsyncPluginsyncPluginsyncPluginsyncPluginsyncPluginsyncPluginsyncPluginsyncPluginsyncPluginsyncPluginsyncPluginsyncPluginsyncPluginsyncPluginsync

• Puppet has pluginsync support for AugeasPuppet has pluginsync support for AugeasPuppet has pluginsync support for AugeasPuppet has pluginsync support for AugeasPuppet has pluginsync support for AugeasPuppet has pluginsync support for AugeasPuppet has pluginsync support for AugeasPuppet has pluginsync support for AugeasPuppet has pluginsync support for AugeasPuppet has pluginsync support for AugeasPuppet has pluginsync support for AugeasPuppet has pluginsync support for AugeasPuppet has pluginsync support for AugeasPuppet has pluginsync support for AugeasPuppet has pluginsync support for AugeasPuppet has pluginsync support for AugeasPuppet has pluginsync support for Augeas• Drop your lenses in your modulesDrop your lenses in your modulesDrop your lenses in your modulesDrop your lenses in your modulesDrop your lenses in your modulesDrop your lenses in your modulesDrop your lenses in your modulesDrop your lenses in your modulesDrop your lenses in your modulesDrop your lenses in your modulesDrop your lenses in your modulesDrop your lenses in your modulesDrop your lenses in your modulesDrop your lenses in your modulesDrop your lenses in your modulesDrop your lenses in your modulesDrop your lenses in your modules• lib/augeas/lenseslib/augeas/lenseslib/augeas/lenseslib/augeas/lenseslib/augeas/lenseslib/augeas/lenseslib/augeas/lenseslib/augeas/lenseslib/augeas/lenseslib/augeas/lenseslib/augeas/lenseslib/augeas/lenseslib/augeas/lenseslib/augeas/lenseslib/augeas/lenseslib/augeas/lenseslib/augeas/lenses• "lens" parameter for augeas resources"lens" parameter for augeas resources"lens" parameter for augeas resources"lens" parameter for augeas resources"lens" parameter for augeas resources"lens" parameter for augeas resources"lens" parameter for augeas resources"lens" parameter for augeas resources"lens" parameter for augeas resources"lens" parameter for augeas resources"lens" parameter for augeas resources"lens" parameter for augeas resources"lens" parameter for augeas resources"lens" parameter for augeas resources"lens" parameter for augeas resources"lens" parameter for augeas resources"lens" parameter for augeas resources

..

Puppet examplePuppet examplePuppet examplePuppet examplePuppet examplePuppet examplePuppet examplePuppet examplePuppet examplePuppet examplePuppet examplePuppet examplePuppet examplePuppet examplePuppet examplePuppet examplePuppet example

.

.

augeas{"jboss_conf":context => "/files/etc/jbossas",changes => [

"set jbossas.conf/JBOSS_IP $ipaddress","set jbossas.conf/JAVA_HOME /usr",

],lens => "Jboss.aug",

}

..

Augeas commandsAugeas commandsAugeas commandsAugeas commandsAugeas commandsAugeas commandsAugeas commandsAugeas commandsAugeas commandsAugeas commandsAugeas commandsAugeas commandsAugeas commandsAugeas commandsAugeas commandsAugeas commandsAugeas commands

setsetsetsetsetsetsetsetsetsetsetsetsetsetsetsetset rmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrm mvmvmvmvmvmvmvmvmvmvmvmvmvmvmvmvmv clearclearclearclearclearclearclearclearclearclearclearclearclearclearclearclearclear insertinsertinsertinsertinsertinsertinsertinsertinsertinsertinsertinsertinsertinsertinsertinsertinsert ……………………………………………

..

Augeas comparators (onlyif)Augeas comparators (onlyif)Augeas comparators (onlyif)Augeas comparators (onlyif)Augeas comparators (onlyif)Augeas comparators (onlyif)Augeas comparators (onlyif)Augeas comparators (onlyif)Augeas comparators (onlyif)Augeas comparators (onlyif)Augeas comparators (onlyif)Augeas comparators (onlyif)Augeas comparators (onlyif)Augeas comparators (onlyif)Augeas comparators (onlyif)Augeas comparators (onlyif)Augeas comparators (onlyif)

matchmatchmatchmatchmatchmatchmatchmatchmatchmatchmatchmatchmatchmatchmatchmatchmatch getgetgetgetgetgetgetgetgetgetgetgetgetgetgetgetget

..

AugeasprovidersAugeasprovidersAugeasprovidersAugeasprovidersAugeasprovidersAugeasprovidersAugeasprovidersAugeasprovidersAugeasprovidersAugeasprovidersAugeasprovidersAugeasprovidersAugeasprovidersAugeasprovidersAugeasprovidersAugeasprovidersAugeasproviders

• Helpers around augeasHelpers around augeasHelpers around augeasHelpers around augeasHelpers around augeasHelpers around augeasHelpers around augeasHelpers around augeasHelpers around augeasHelpers around augeasHelpers around augeasHelpers around augeasHelpers around augeasHelpers around augeasHelpers around augeasHelpers around augeasHelpers around augeas• Puppet modulesPuppet modulesPuppet modulesPuppet modulesPuppet modulesPuppet modulesPuppet modulesPuppet modulesPuppet modulesPuppet modulesPuppet modulesPuppet modulesPuppet modulesPuppet modulesPuppet modulesPuppet modulesPuppet modules• No augeas knowledge neededNo augeas knowledge neededNo augeas knowledge neededNo augeas knowledge neededNo augeas knowledge neededNo augeas knowledge neededNo augeas knowledge neededNo augeas knowledge neededNo augeas knowledge neededNo augeas knowledge neededNo augeas knowledge neededNo augeas knowledge neededNo augeas knowledge neededNo augeas knowledge neededNo augeas knowledge neededNo augeas knowledge neededNo augeas knowledge needed

..

apacheapacheapacheapacheapacheapacheapacheapacheapacheapacheapacheapacheapacheapacheapacheapacheapache

.

.

apache_setenv { "SPECIAL_PATH":ensure => present,value => "/foo/bin",

}

..

kernel_parameterkernel_parameterkernel_parameterkernel_parameterkernel_parameterkernel_parameterkernel_parameterkernel_parameterkernel_parameterkernel_parameterkernel_parameterkernel_parameterkernel_parameterkernel_parameterkernel_parameterkernel_parameterkernel_parameter

.

.

kernel_parameter { "quiet":ensure => present,bootmode => "normal",

}

..

MCollective integrationMCollective integrationMCollective integrationMCollective integrationMCollective integrationMCollective integrationMCollective integrationMCollective integrationMCollective integrationMCollective integrationMCollective integrationMCollective integrationMCollective integrationMCollective integrationMCollective integrationMCollective integrationMCollective integration

• Augeas can be used with mcollectiveAugeas can be used with mcollectiveAugeas can be used with mcollectiveAugeas can be used with mcollectiveAugeas can be used with mcollectiveAugeas can be used with mcollectiveAugeas can be used with mcollectiveAugeas can be used with mcollectiveAugeas can be used with mcollectiveAugeas can be used with mcollectiveAugeas can be used with mcollectiveAugeas can be used with mcollectiveAugeas can be used with mcollectiveAugeas can be used with mcollectiveAugeas can be used with mcollectiveAugeas can be used with mcollectiveAugeas can be used with mcollective• Used to query or to discoverUsed to query or to discoverUsed to query or to discoverUsed to query or to discoverUsed to query or to discoverUsed to query or to discoverUsed to query or to discoverUsed to query or to discoverUsed to query or to discoverUsed to query or to discoverUsed to query or to discoverUsed to query or to discoverUsed to query or to discoverUsed to query or to discoverUsed to query or to discoverUsed to query or to discoverUsed to query or to discover• Quickly answers questions:Quickly answers questions:Quickly answers questions:Quickly answers questions:Quickly answers questions:Quickly answers questions:Quickly answers questions:Quickly answers questions:Quickly answers questions:Quickly answers questions:Quickly answers questions:Quickly answers questions:Quickly answers questions:Quickly answers questions:Quickly answers questions:Quickly answers questions:Quickly answers questions:

▶ Which user is at id 500 on every machine?Which user is at id 500 on every machine?Which user is at id 500 on every machine?Which user is at id 500 on every machine?Which user is at id 500 on every machine?Which user is at id 500 on every machine?Which user is at id 500 on every machine?Which user is at id 500 on every machine?Which user is at id 500 on every machine?Which user is at id 500 on every machine?Which user is at id 500 on every machine?Which user is at id 500 on every machine?Which user is at id 500 on every machine?Which user is at id 500 on every machine?Which user is at id 500 on every machine?Which user is at id 500 on every machine?Which user is at id 500 on every machine?▶ What can johndoe do in the sudoers files?What can johndoe do in the sudoers files?What can johndoe do in the sudoers files?What can johndoe do in the sudoers files?What can johndoe do in the sudoers files?What can johndoe do in the sudoers files?What can johndoe do in the sudoers files?What can johndoe do in the sudoers files?What can johndoe do in the sudoers files?What can johndoe do in the sudoers files?What can johndoe do in the sudoers files?What can johndoe do in the sudoers files?What can johndoe do in the sudoers files?What can johndoe do in the sudoers files?What can johndoe do in the sudoers files?What can johndoe do in the sudoers files?What can johndoe do in the sudoers files?▶ What is in the crontabs at 2 am?What is in the crontabs at 2 am?What is in the crontabs at 2 am?What is in the crontabs at 2 am?What is in the crontabs at 2 am?What is in the crontabs at 2 am?What is in the crontabs at 2 am?What is in the crontabs at 2 am?What is in the crontabs at 2 am?What is in the crontabs at 2 am?What is in the crontabs at 2 am?What is in the crontabs at 2 am?What is in the crontabs at 2 am?What is in the crontabs at 2 am?What is in the crontabs at 2 am?What is in the crontabs at 2 am?What is in the crontabs at 2 am?

..

ConclusionConclusionConclusionConclusionConclusionConclusionConclusionConclusionConclusionConclusionConclusionConclusionConclusionConclusionConclusionConclusionConclusion

..

DisadvantagesDisadvantagesDisadvantagesDisadvantagesDisadvantagesDisadvantagesDisadvantagesDisadvantagesDisadvantagesDisadvantagesDisadvantagesDisadvantagesDisadvantagesDisadvantagesDisadvantagesDisadvantagesDisadvantages

• Learning requiredLearning requiredLearning requiredLearning requiredLearning requiredLearning requiredLearning requiredLearning requiredLearning requiredLearning requiredLearning requiredLearning requiredLearning requiredLearning requiredLearning requiredLearning requiredLearning required• Library to installLibrary to installLibrary to installLibrary to installLibrary to installLibrary to installLibrary to installLibrary to installLibrary to installLibrary to installLibrary to installLibrary to installLibrary to installLibrary to installLibrary to installLibrary to installLibrary to install• Writing lenses is hardWriting lenses is hardWriting lenses is hardWriting lenses is hardWriting lenses is hardWriting lenses is hardWriting lenses is hardWriting lenses is hardWriting lenses is hardWriting lenses is hardWriting lenses is hardWriting lenses is hardWriting lenses is hardWriting lenses is hardWriting lenses is hardWriting lenses is hardWriting lenses is hard• You need good puppet modulesYou need good puppet modulesYou need good puppet modulesYou need good puppet modulesYou need good puppet modulesYou need good puppet modulesYou need good puppet modulesYou need good puppet modulesYou need good puppet modulesYou need good puppet modulesYou need good puppet modulesYou need good puppet modulesYou need good puppet modulesYou need good puppet modulesYou need good puppet modulesYou need good puppet modulesYou need good puppet modules

..

AdvantagesAdvantagesAdvantagesAdvantagesAdvantagesAdvantagesAdvantagesAdvantagesAdvantagesAdvantagesAdvantagesAdvantagesAdvantagesAdvantagesAdvantagesAdvantagesAdvantages

• Augeas is a mature toolAugeas is a mature toolAugeas is a mature toolAugeas is a mature toolAugeas is a mature toolAugeas is a mature toolAugeas is a mature toolAugeas is a mature toolAugeas is a mature toolAugeas is a mature toolAugeas is a mature toolAugeas is a mature toolAugeas is a mature toolAugeas is a mature toolAugeas is a mature toolAugeas is a mature toolAugeas is a mature tool• Preserves comments in filesPreserves comments in filesPreserves comments in filesPreserves comments in filesPreserves comments in filesPreserves comments in filesPreserves comments in filesPreserves comments in filesPreserves comments in filesPreserves comments in filesPreserves comments in filesPreserves comments in filesPreserves comments in filesPreserves comments in filesPreserves comments in filesPreserves comments in filesPreserves comments in files• It fails (if needed)It fails (if needed)It fails (if needed)It fails (if needed)It fails (if needed)It fails (if needed)It fails (if needed)It fails (if needed)It fails (if needed)It fails (if needed)It fails (if needed)It fails (if needed)It fails (if needed)It fails (if needed)It fails (if needed)It fails (if needed)It fails (if needed)• Only changes what is neededOnly changes what is neededOnly changes what is neededOnly changes what is neededOnly changes what is neededOnly changes what is neededOnly changes what is neededOnly changes what is neededOnly changes what is neededOnly changes what is neededOnly changes what is neededOnly changes what is neededOnly changes what is neededOnly changes what is neededOnly changes what is neededOnly changes what is neededOnly changes what is needed• A lot of lenses availableA lot of lenses availableA lot of lenses availableA lot of lenses availableA lot of lenses availableA lot of lenses availableA lot of lenses availableA lot of lenses availableA lot of lenses availableA lot of lenses availableA lot of lenses availableA lot of lenses availableA lot of lenses availableA lot of lenses availableA lot of lenses availableA lot of lenses availableA lot of lenses available• Puppet integrationPuppet integrationPuppet integrationPuppet integrationPuppet integrationPuppet integrationPuppet integrationPuppet integrationPuppet integrationPuppet integrationPuppet integrationPuppet integrationPuppet integrationPuppet integrationPuppet integrationPuppet integrationPuppet integration• Helpers availableHelpers availableHelpers availableHelpers availableHelpers availableHelpers availableHelpers availableHelpers availableHelpers availableHelpers availableHelpers availableHelpers availableHelpers availableHelpers availableHelpers availableHelpers availableHelpers available

..

Final noteFinal noteFinal noteFinal noteFinal noteFinal noteFinal noteFinal noteFinal noteFinal noteFinal noteFinal noteFinal noteFinal noteFinal noteFinal noteFinal note

MostMostMostMostMostMostMostMostMostMostMostMostMostMostMostMostMost ofofofofofofofofofofofofofofofofof thethethethethethethethethethethethethethethethethe time,time,time,time,time,time,time,time,time,time,time,time,time,time,time,time,time, File[]File[]File[]File[]File[]File[]File[]File[]File[]File[]File[]File[]File[]File[]File[]File[]File[] resourcesresourcesresourcesresourcesresourcesresourcesresourcesresourcesresourcesresourcesresourcesresourcesresourcesresourcesresourcesresourcesresources arearearearearearearearearearearearearearearearearethethethethethethethethethethethethethethethethethe waywaywaywaywaywaywaywaywaywaywaywaywaywaywaywayway tototototototototototototototototo go.go.go.go.go.go.go.go.go.go.go.go.go.go.go.go.go. AugeasAugeasAugeasAugeasAugeasAugeasAugeasAugeasAugeasAugeasAugeasAugeasAugeasAugeasAugeasAugeasAugeas cancancancancancancancancancancancancancancancancan helphelphelphelphelphelphelphelphelphelphelphelphelphelphelphelphelp whenwhenwhenwhenwhenwhenwhenwhenwhenwhenwhenwhenwhenwhenwhenwhenwhenyouyouyouyouyouyouyouyouyouyouyouyouyouyouyouyouyou needneedneedneedneedneedneedneedneedneedneedneedneedneedneedneedneed tototototototototototototototototo changechangechangechangechangechangechangechangechangechangechangechangechangechangechangechangechange filesfilesfilesfilesfilesfilesfilesfilesfilesfilesfilesfilesfilesfilesfilesfilesfiles generatedgeneratedgeneratedgeneratedgeneratedgeneratedgeneratedgeneratedgeneratedgeneratedgeneratedgeneratedgeneratedgeneratedgeneratedgeneratedgenerated bybybybybybybybybybybybybybybybybyananananananananananananananananan applicationapplicationapplicationapplicationapplicationapplicationapplicationapplicationapplicationapplicationapplicationapplicationapplicationapplicationapplicationapplicationapplication ororororororororororororororororor thatthatthatthatthatthatthatthatthatthatthatthatthatthatthatthatthat youyouyouyouyouyouyouyouyouyouyouyouyouyouyouyouyou cancancancancancancancancancancancancancancancancan notnotnotnotnotnotnotnotnotnotnotnotnotnotnotnotnotmanagemanagemanagemanagemanagemanagemanagemanagemanagemanagemanagemanagemanagemanagemanagemanagemanage entirely.entirely.entirely.entirely.entirely.entirely.entirely.entirely.entirely.entirely.entirely.entirely.entirely.entirely.entirely.entirely.entirely.

..

ReadingsReadingsReadingsReadingsReadingsReadingsReadingsReadingsReadingsReadingsReadingsReadingsReadingsReadingsReadingsReadingsReadings

• http://augeas.net/http://augeas.net/http://augeas.net/http://augeas.net/http://augeas.net/http://augeas.net/http://augeas.net/http://augeas.net/http://augeas.net/http://augeas.net/http://augeas.net/http://augeas.net/http://augeas.net/http://augeas.net/http://augeas.net/http://augeas.net/http://augeas.net/• http://augeasproviders.com/http://augeasproviders.com/http://augeasproviders.com/http://augeasproviders.com/http://augeasproviders.com/http://augeasproviders.com/http://augeasproviders.com/http://augeasproviders.com/http://augeasproviders.com/http://augeasproviders.com/http://augeasproviders.com/http://augeasproviders.com/http://augeasproviders.com/http://augeasproviders.com/http://augeasproviders.com/http://augeasproviders.com/http://augeasproviders.com/• https://docs.puppetlabs.com/https://docs.puppetlabs.com/https://docs.puppetlabs.com/https://docs.puppetlabs.com/https://docs.puppetlabs.com/https://docs.puppetlabs.com/https://docs.puppetlabs.com/https://docs.puppetlabs.com/https://docs.puppetlabs.com/https://docs.puppetlabs.com/https://docs.puppetlabs.com/https://docs.puppetlabs.com/https://docs.puppetlabs.com/https://docs.puppetlabs.com/https://docs.puppetlabs.com/https://docs.puppetlabs.com/https://docs.puppetlabs.com/

..

Thank youThank youThank youThank youThank youThank youThank youThank youThank youThank youThank youThank youThank youThank youThank youThank youThank you

Any question?Any question?Any question?Any question?Any question?Any question?Any question?Any question?Any question?Any question?Any question?Any question?Any question?Any question?Any question?Any question?Any question?Thanks to @raphinkThanks to @raphinkThanks to @raphinkThanks to @raphinkThanks to @raphinkThanks to @raphinkThanks to @raphinkThanks to @raphinkThanks to @raphinkThanks to @raphinkThanks to @raphinkThanks to @raphinkThanks to @raphinkThanks to @raphinkThanks to @raphinkThanks to @raphinkThanks to @raphink

..

ContactContactContactContactContactContactContactContactContactContactContactContactContactContactContactContactContact

Julien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien Pivottojulien@inuits.eujulien@inuits.eujulien@inuits.eujulien@inuits.eujulien@inuits.eujulien@inuits.eujulien@inuits.eujulien@inuits.eujulien@inuits.eujulien@inuits.eujulien@inuits.eujulien@inuits.eujulien@inuits.eujulien@inuits.eujulien@inuits.eujulien@inuits.eujulien@inuits.eu@roidelapluie@roidelapluie@roidelapluie@roidelapluie@roidelapluie@roidelapluie@roidelapluie@roidelapluie@roidelapluie@roidelapluie@roidelapluie@roidelapluie@roidelapluie@roidelapluie@roidelapluie@roidelapluie@roidelapluie

inuitsinuitsinuitsinuitsinuitsinuitsinuitsinuitsinuitsinuitsinuitsinuitsinuitsinuitsinuitsinuitsinuitshttps://inuits.euhttps://inuits.euhttps://inuits.euhttps://inuits.euhttps://inuits.euhttps://inuits.euhttps://inuits.euhttps://inuits.euhttps://inuits.euhttps://inuits.euhttps://inuits.euhttps://inuits.euhttps://inuits.euhttps://inuits.euhttps://inuits.euhttps://inuits.euhttps://inuits.euinfo@inuits.euinfo@inuits.euinfo@inuits.euinfo@inuits.euinfo@inuits.euinfo@inuits.euinfo@inuits.euinfo@inuits.euinfo@inuits.euinfo@inuits.euinfo@inuits.euinfo@inuits.euinfo@inuits.euinfo@inuits.euinfo@inuits.euinfo@inuits.euinfo@inuits.eu+32 473 441 636+32 473 441 636+32 473 441 636+32 473 441 636+32 473 441 636+32 473 441 636+32 473 441 636+32 473 441 636+32 473 441 636+32 473 441 636+32 473 441 636+32 473 441 636+32 473 441 636+32 473 441 636+32 473 441 636+32 473 441 636+32 473 441 636