Augeas, swiss knife resources for your puppet tree

67
. . Augeas Augeas Augeas Augeas Augeas Augeas Augeas Augeas Augeas Augeas Augeas Augeas Augeas Augeas Augeas Augeas Augeas Swiss-knife resources for your puppet tree Swiss-knife resources for your puppet tree Swiss-knife resources for your puppet tree Swiss-knife resources for your puppet tree Swiss-knife resources for your puppet tree Swiss-knife resources for your puppet tree Swiss-knife resources for your puppet tree Swiss-knife resources for your puppet tree Swiss-knife resources for your puppet tree Swiss-knife resources for your puppet tree Swiss-knife resources for your puppet tree Swiss-knife resources for your puppet tree Swiss-knife resources for your puppet tree Swiss-knife resources for your puppet tree Swiss-knife resources for your puppet tree Swiss-knife resources for your puppet tree Swiss-knife resources for your puppet tree Julien Pivotto Julien Pivotto Julien Pivotto Julien Pivotto Julien Pivotto Julien Pivotto Julien Pivotto Julien Pivotto Julien Pivotto Julien Pivotto Julien Pivotto Julien Pivotto Julien Pivotto Julien Pivotto Julien Pivotto Julien Pivotto Julien Pivotto November 17th, 2014 November 17th, 2014 November 17th, 2014 November 17th, 2014 November 17th, 2014 November 17th, 2014 November 17th, 2014 November 17th, 2014 November 17th, 2014 November 17th, 2014 November 17th, 2014 November 17th, 2014 November 17th, 2014 November 17th, 2014 November 17th, 2014 November 17th, 2014 November 17th, 2014

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

Page 1: 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

Page 2: Augeas, swiss knife resources for your puppet tree

..

$::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

Page 3: Augeas, swiss knife resources for your puppet tree

..

..

inuits.eu

Page 4: Augeas, swiss knife resources for your puppet tree

..

..

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

Page 5: Augeas, swiss knife resources for your puppet tree

..

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

Page 6: Augeas, swiss knife resources for your puppet tree

..

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

Page 7: Augeas, swiss knife resources for your puppet tree

..

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?

Page 8: Augeas, swiss knife resources for your puppet tree

..

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?

Page 9: Augeas, swiss knife resources for your puppet tree

..

..

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

Page 10: Augeas, swiss knife resources for your puppet tree

..

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*

Page 11: Augeas, swiss knife resources for your puppet tree

..

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

Page 12: Augeas, swiss knife resources for your puppet tree

..

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.

Page 13: Augeas, swiss knife resources for your puppet tree

..

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.

Page 14: Augeas, swiss knife resources for your puppet tree

..

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

Page 15: Augeas, swiss knife resources for your puppet tree

..

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

Page 16: Augeas, swiss knife resources for your puppet tree

..

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

Page 17: Augeas, swiss knife resources for your puppet tree

..

..

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/

Page 18: Augeas, swiss knife resources for your puppet tree

..

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

Page 19: Augeas, swiss knife resources for your puppet tree

..

.

.

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']

],}

Page 20: Augeas, swiss knife resources for your puppet tree

..

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

Page 21: Augeas, swiss knife resources for your puppet tree

..

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]

Page 22: Augeas, swiss knife resources for your puppet tree

..

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

Page 23: Augeas, swiss knife resources for your puppet tree

..

..

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

Page 24: Augeas, swiss knife resources for your puppet tree

..

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)

Page 25: Augeas, swiss knife resources for your puppet tree

..

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

Page 26: Augeas, swiss knife resources for your puppet tree

..

.

.

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

}

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

}

Page 27: Augeas, swiss knife resources for your puppet tree

..

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[]

Page 28: Augeas, swiss knife resources for your puppet tree

..

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

Page 29: Augeas, swiss knife resources for your puppet tree

..

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

Page 30: Augeas, swiss knife resources for your puppet tree

..

..

Exec{sed: onlyif => grep}

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

Page 31: Augeas, swiss knife resources for your puppet tree

..

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

Page 32: Augeas, swiss knife resources for your puppet tree

..

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…

Page 33: Augeas, swiss knife resources for your puppet tree

..

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

Page 34: Augeas, swiss knife resources for your puppet tree

..

..

Augeas

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

Page 35: Augeas, swiss knife resources for your puppet tree

..

• 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

Page 36: Augeas, swiss knife resources for your puppet tree

..

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

Page 37: Augeas, swiss knife resources for your puppet tree

..

.

.

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

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

Page 38: Augeas, swiss knife resources for your puppet tree

..

.

.

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

Page 39: Augeas, swiss knife resources for your puppet tree

..

.

.

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

Page 40: Augeas, swiss knife resources for your puppet tree

..

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

Page 41: Augeas, swiss knife resources for your puppet tree

..

.

.

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

Page 42: Augeas, swiss knife resources for your puppet tree

..

.

.

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

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

Page 43: Augeas, swiss knife resources for your puppet tree

..

.

.

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"

Page 44: Augeas, swiss knife resources for your puppet tree

..

.

.

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)

Page 45: Augeas, swiss knife resources for your puppet tree

..

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

Page 46: Augeas, swiss knife resources for your puppet tree

..

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

Page 47: Augeas, swiss knife resources for your puppet tree

..

"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

Page 48: Augeas, swiss knife resources for your puppet tree

..

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

Page 49: Augeas, swiss knife resources for your puppet tree

..

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

Page 50: Augeas, swiss knife resources for your puppet tree

..

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

Page 51: Augeas, swiss knife resources for your puppet tree

..

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"

}

Page 52: Augeas, swiss knife resources for your puppet tree

..

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

Page 53: Augeas, swiss knife resources for your puppet tree

..

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

Page 54: Augeas, swiss knife resources for your puppet tree

..

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",

}

Page 55: Augeas, swiss knife resources for your puppet tree

..

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

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

Page 56: Augeas, swiss knife resources for your puppet tree

..

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

Page 57: Augeas, swiss knife resources for your puppet tree

..

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

Page 58: Augeas, swiss knife resources for your puppet tree

..

apacheapacheapacheapacheapacheapacheapacheapacheapacheapacheapacheapacheapacheapacheapacheapacheapache

.

.

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

}

Page 59: Augeas, swiss knife resources for your puppet tree

..

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",

}

Page 60: Augeas, swiss knife resources for your puppet tree

..

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?

Page 61: Augeas, swiss knife resources for your puppet tree

..

ConclusionConclusionConclusionConclusionConclusionConclusionConclusionConclusionConclusionConclusionConclusionConclusionConclusionConclusionConclusionConclusionConclusion

Page 62: Augeas, swiss knife resources for your puppet tree

..

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

Page 63: Augeas, swiss knife resources for your puppet tree

..

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

Page 64: Augeas, swiss knife resources for your puppet tree

..

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.

Page 65: Augeas, swiss knife resources for your puppet tree

..

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/

Page 66: Augeas, swiss knife resources for your puppet tree

..

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

Page 67: Augeas, swiss knife resources for your puppet tree

..

ContactContactContactContactContactContactContactContactContactContactContactContactContactContactContactContactContact

Julien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien [email protected]@[email protected]@[email protected]@[email protected]@[email protected]@[email protected]@[email protected]@[email protected]@[email protected]@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://[email protected]@[email protected]@[email protected]@[email protected]@[email protected]@[email protected]@[email protected]@[email protected]@[email protected]+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