<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.andreas-haerter.com/~d/styles/itemcontent.css"?><!-- generator="FeedCreator 1.7.2-ppt DokuWiki" --><rss xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">
    <channel>
        <title>blog.andreas-haerter.com - IT, web and nerdy stuff</title>
        <description />
        <link>http://blog.andreas-haerter.com/</link>
        <lastBuildDate>Thu, 17 May 2012 07:51:10 +0200</lastBuildDate>
        <generator>FeedCreator 1.7.2-ppt DokuWiki</generator>
        <image>
            <url>http://blog.andreas-haerter.com/lib/tpl/mnml-blog/images/favicon.ico</url>
            <title>blog.andreas-haerter.com - IT, web and nerdy stuff</title>
            <link>http://blog.andreas-haerter.com/</link>
        </image>
        <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.andreas-haerter.com/ah-blog-planet-puppet" /><feedburner:info uri="ah-blog-planet-puppet" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:browserFriendly></feedburner:browserFriendly><item>
            <title>Introducing Puppet boilerplate modules</title>
            <link>http://blog.andreas-haerter.com/2012/05/11/puppet-boilerplate-modules</link>
            <description>
&lt;div class="level2"&gt;

&lt;p&gt;
&lt;a href="http://andreaswolf.info/" class="urlextern" title="http://andreaswolf.info/"&gt;My colleague&lt;/a&gt; and I are maintaining a ”&lt;a href="https://github.com/bitkollektiv/puppet-boilerplate-modules" class="urlextern" title="https://github.com/bitkollektiv/puppet-boilerplate-modules"&gt;Puppet boilerplate modules&lt;/a&gt;” project (something like &lt;code&gt;puppet module generate&lt;/code&gt; on steroids). To keep up with the &lt;acronym title="Open Source Software"&gt;OSS&lt;/acronym&gt; spirit, we thought it would be a good idea to share it with the community.
&lt;/p&gt;

&lt;p&gt;
The project helps you to create high quality &lt;a href="http://en.wikipedia.org/wiki/Puppet_(software)" class="interwiki iw_wp" title="http://en.wikipedia.org/wiki/Puppet_(software)"&gt;Puppet&lt;/a&gt; modules in a fast and comfortable way. Main goals are to boost efficiency and Puppet code quality. Use it if you want to get module skeletons with:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class="level1"&gt;&lt;div class="li"&gt; tidy and easily extendable structure&lt;/div&gt;
&lt;/li&gt;
&lt;li class="level1"&gt;&lt;div class="li"&gt; good README skeleton, RDoc documentation and license information&lt;/div&gt;
&lt;/li&gt;
&lt;li class="level1"&gt;&lt;div class="li"&gt; source code which follows the &lt;a href="http://docs.puppetlabs.com/guides/style_guide.html" class="urlextern" title="http://docs.puppetlabs.com/guides/style_guide.html"&gt;official style guide&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class="level1"&gt;&lt;div class="li"&gt; &lt;a href="http://docs.puppetlabs.com/guides/parameterized_classes.html" class="urlextern" title="http://docs.puppetlabs.com/guides/parameterized_classes.html"&gt;parameterized classes&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class="level1"&gt;&lt;div class="li"&gt; an easy way to push your new modules to GitHub or Bitbucket&lt;/div&gt;
&lt;/li&gt;
&lt;li class="level1"&gt;&lt;div class="li"&gt; module variable debugging functionality&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;

&lt;h3 class="sectionedit1"&gt;&lt;a name="usage" id="usage"&gt;Usage&lt;/a&gt;&lt;/h3&gt;
&lt;div class="level3"&gt;
&lt;ol&gt;
&lt;li class="level1"&gt;&lt;div class="li"&gt; Clone the repository: &lt;pre class="code"&gt;$ git clone git://github.com/bitkollektiv/puppet-boilerplate-modules.git&lt;/pre&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li class="level1"&gt;&lt;div class="li"&gt; Call the wizard to create the module skeleton for a new module: &lt;pre class="code"&gt;$ ./puppet-boilerplate-modules/newmodule.sh&lt;/pre&gt;

&lt;p&gt;
 Hint: You can provide the answers by using parameters. Use &lt;code&gt;newmodule.sh -h&lt;/code&gt; to get a parameter listing and usage instructions.
&lt;/p&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;/div&gt;
&lt;!-- EDIT1 SECTION "Usage" [1024-1411] --&gt;
&lt;h3 class="sectionedit2"&gt;&lt;a name="example" id="example"&gt;Example&lt;/a&gt;&lt;/h3&gt;
&lt;div class="level3"&gt;

&lt;p&gt;
Some resources to get an impression of what to expect:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class="level1"&gt;&lt;div class="li"&gt; An exemplary &lt;a href="https://bitbucket.org/bitkollektiv/puppet-module-filezilla/src" class="urlextern" title="https://bitbucket.org/bitkollektiv/puppet-module-filezilla/src"&gt;filezilla module&lt;/a&gt; which &lt;a href="https://bitbucket.org/bitkollektiv/puppet-module-filezilla/src/master/manifests/init.pp#cl-70" class="urlextern" title="https://bitbucket.org/bitkollektiv/puppet-module-filezilla/src/master/manifests/init.pp#cl-70"&gt;manages&lt;/a&gt; the &lt;a href="http://en.wikipedia.org/wiki/FileZilla" class="interwiki iw_wp" title="http://en.wikipedia.org/wiki/FileZilla"&gt;FileZilla&lt;/a&gt; client on a node. It took ~ten minutes to create the whole module. 90% of the time was spent to write the &lt;code&gt;README&lt;/code&gt;. &lt;/div&gt;
&lt;/li&gt;
&lt;li class="level1"&gt;&lt;div class="li"&gt; The &lt;a href="http://blog.andreas-haerter.com/_media/2012/05/11/filezilla-module-example-doc.zip" class="media mediafile mf_zip" title="2012:05:11:filezilla-module-example-doc.zip"&gt;documentation&lt;/a&gt; for the module, created with &lt;code&gt;puppet doc --mode rdoc&lt;/code&gt;. Just unzip the archive and open &lt;code&gt;index.html&lt;/code&gt; to view it.&lt;/div&gt;
&lt;/li&gt;
&lt;li class="level1"&gt;&lt;div class="li"&gt; Some screenshots of the module wizard (→ &lt;code&gt;newmodule.sh&lt;/code&gt;):&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="gallery gallery_left" align="left"&gt;&lt;table&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://blog.andreas-haerter.com/_media/2012/05/11/new-module-wizard-01.png" title="new-module-wizard-01.png"&gt;&lt;img src="http://blog.andreas-haerter.com/_media/2012/05/11/new-module-wizard-01.png?w=79&amp;amp;h=62" width="79" height="62" border="0" alt="new-module-wizard-01.png" class="tn" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;td&gt;&lt;a href="http://blog.andreas-haerter.com/_media/2012/05/11/new-module-wizard-02.png" title="new-module-wizard-02.png"&gt;&lt;img src="http://blog.andreas-haerter.com/_media/2012/05/11/new-module-wizard-02.png?w=80&amp;amp;h=28" width="80" height="28" border="0" alt="new-module-wizard-02.png" class="tn" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;td&gt;&lt;a href="http://blog.andreas-haerter.com/_media/2012/05/11/new-module-wizard-03.png" title="new-module-wizard-03.png"&gt;&lt;img src="http://blog.andreas-haerter.com/_media/2012/05/11/new-module-wizard-03.png?w=79&amp;amp;h=80" width="79" height="80" border="0" alt="new-module-wizard-03.png" class="tn" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;td&gt;&lt;a href="http://blog.andreas-haerter.com/_media/2012/05/11/new-module-wizard-04.png" title="new-module-wizard-04.png"&gt;&lt;img src="http://blog.andreas-haerter.com/_media/2012/05/11/new-module-wizard-04.png?w=71&amp;amp;h=80" width="71" height="80" border="0" alt="new-module-wizard-04.png" class="tn" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;td&gt;&lt;a href="http://blog.andreas-haerter.com/_media/2012/05/11/new-module-wizard-05.png" title="new-module-wizard-05.png"&gt;&lt;img src="http://blog.andreas-haerter.com/_media/2012/05/11/new-module-wizard-05.png?w=66&amp;amp;h=80" width="66" height="80" border="0" alt="new-module-wizard-05.png" class="tn" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;div class="clearer"&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="wrap_clear plugin_wrap"&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;!-- EDIT2 SECTION "Example" [1412-2177] --&gt;
&lt;h3 class="sectionedit3"&gt;&lt;a name="some-explanatory-notes" id="some-explanatory-notes"&gt;Some explanatory notes&lt;/a&gt;&lt;/h3&gt;
&lt;div class="level3"&gt;
&lt;ul&gt;
&lt;li class="level1"&gt;&lt;div class="li"&gt; &lt;strong&gt;Each manifest file encapsulates the Puppet code for a specific job.&lt;/strong&gt; This ensures a clean module structure. The name of the manifest should say what it does in general, the RDoc block at the top provides more details. Example: the &lt;code&gt;application&lt;/code&gt; boilerplate comes with the following files in &lt;code&gt;/manifests&lt;/code&gt;:&lt;/div&gt;
&lt;ul&gt;
&lt;li class="level2"&gt;&lt;div class="li"&gt; &lt;code&gt;&lt;a href="https://github.com/bitkollektiv/puppet-boilerplate-modules/blob/master/application/manifests/init.pp" class="urlextern" title="https://github.com/bitkollektiv/puppet-boilerplate-modules/blob/master/application/manifests/init.pp"&gt;init.pp&lt;/a&gt;&lt;/code&gt;&lt;br/&gt;
Contains the main module class. It validates the module parameters and coordinates the actions (e.g. by chaining resources).&lt;/div&gt;
&lt;/li&gt;
&lt;li class="level2"&gt;&lt;div class="li"&gt; &lt;code&gt;&lt;a href="https://github.com/bitkollektiv/puppet-boilerplate-modules/blob/master/application/manifests/params.pp" class="urlextern" title="https://github.com/bitkollektiv/puppet-boilerplate-modules/blob/master/application/manifests/params.pp"&gt;params.pp&lt;/a&gt;&lt;/code&gt;&lt;br/&gt;
Sets the default values for the parameters of the main module class (→ &lt;code&gt;init.pp&lt;/code&gt;) and manages internal module variables. Therefore, many operating system dependent differences like package names are addressed in here.&lt;/div&gt;
&lt;/li&gt;
&lt;li class="level2"&gt;&lt;div class="li"&gt; &lt;code&gt;&lt;a href="https://github.com/bitkollektiv/puppet-boilerplate-modules/blob/master/application/manifests/package.pp" class="urlextern" title="https://github.com/bitkollektiv/puppet-boilerplate-modules/blob/master/application/manifests/package.pp"&gt;package.pp&lt;/a&gt;&lt;/code&gt;&lt;br/&gt;
Coordinates all software package management related actions. Normally, there is no need to edit this file.&lt;/div&gt;
&lt;/li&gt;
&lt;li class="level2"&gt;&lt;div class="li"&gt; &lt;code&gt;&lt;a href="https://github.com/bitkollektiv/puppet-boilerplate-modules/blob/master/application/manifests/config.pp" class="urlextern" title="https://github.com/bitkollektiv/puppet-boilerplate-modules/blob/master/application/manifests/config.pp"&gt;config.pp&lt;/a&gt;&lt;/code&gt;&lt;br/&gt;
Coordinates all configuration related actions. Many modules won&amp;#039;t need this because most there is no need for a special application configuration. If so, just delete the file and &lt;a href="https://github.com/bitkollektiv/puppet-boilerplate-modules/blob/master/application/manifests/init.pp#L143" class="urlextern" title="https://github.com/bitkollektiv/puppet-boilerplate-modules/blob/master/application/manifests/init.pp#L143"&gt;the&lt;/a&gt; &lt;a href="https://github.com/bitkollektiv/puppet-boilerplate-modules/blob/master/application/manifests/init.pp#L159" class="urlextern" title="https://github.com/bitkollektiv/puppet-boilerplate-modules/blob/master/application/manifests/init.pp#L159"&gt;references&lt;/a&gt; in &lt;code&gt;init.pp&lt;/code&gt;.&lt;/div&gt;
&lt;/li&gt;
&lt;li class="level2"&gt;&lt;div class="li"&gt; &lt;code&gt;&lt;a href="https://github.com/bitkollektiv/puppet-boilerplate-modules/blob/master/application/manifests/repo.pp" class="urlextern" title="https://github.com/bitkollektiv/puppet-boilerplate-modules/blob/master/application/manifests/repo.pp"&gt;repo.pp&lt;/a&gt;&lt;/code&gt;&lt;br/&gt;
Coordinates all package repository related actions. Many modules won&amp;#039;t need this because an additional repository is not needed to install the application. If so, just delete the file and &lt;a href="https://github.com/bitkollektiv/puppet-boilerplate-modules/blob/master/application/manifests/init.pp#L138" class="urlextern" title="https://github.com/bitkollektiv/puppet-boilerplate-modules/blob/master/application/manifests/init.pp#L138"&gt;the&lt;/a&gt; &lt;a href="https://github.com/bitkollektiv/puppet-boilerplate-modules/blob/master/application/manifests/init.pp#L157" class="urlextern" title="https://github.com/bitkollektiv/puppet-boilerplate-modules/blob/master/application/manifests/init.pp#L157"&gt;references&lt;/a&gt; in &lt;code&gt;init.pp&lt;/code&gt;.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class="level1"&gt;&lt;div class="li"&gt; &lt;strong&gt;Everything you must edit/check after you generated a module is marked with a &lt;code&gt;FIXME/TODO&lt;/code&gt;.&lt;/strong&gt; E.g. the &lt;a href="https://github.com/bitkollektiv/puppet-boilerplate-modules/blob/master/application/manifests/params.pp#L59" class="urlextern" title="https://github.com/bitkollektiv/puppet-boilerplate-modules/blob/master/application/manifests/params.pp#L59"&gt;package list&lt;/a&gt; or &lt;a href="https://github.com/bitkollektiv/puppet-boilerplate-modules/blob/master/application/manifests/init.pp#L138" class="urlextern" title="https://github.com/bitkollektiv/puppet-boilerplate-modules/blob/master/application/manifests/init.pp#L138"&gt;some class calls&lt;/a&gt;.&lt;/div&gt;
&lt;/li&gt;
&lt;li class="level1"&gt;&lt;div class="li"&gt; &lt;strong&gt;You don&amp;#039;t need to use GitHub/Bitbucket.&lt;/strong&gt; The DVCS repository hosting part of the wizard is completely optional.&lt;/div&gt;
&lt;/li&gt;
&lt;li class="level1"&gt;&lt;div class="li"&gt; There is always room for improvement. If you&amp;#039;re able to add any contributions to make our project better, please &lt;a href="http://blog.andreas-haerter.com/contact" class="wikilink1" title="contact"&gt;let me know&lt;/a&gt; or discuss your thoughts right here in the comments.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT3 SECTION "Some explanatory notes" [2178-] --&gt;
&lt;p&gt;
    &lt;small&gt;
        This blog post was created on 2012-05-11 at 02:27 by
        Andreas Haerter.
                It is tagged with &lt;a href="http://blog.andreas-haerter.com/?btng%5Bpost%5D%5Btags%5D=planet-fedora" class="tag"&gt;planet-fedora&lt;/a&gt;, &lt;a href="http://blog.andreas-haerter.com/?btng%5Bpost%5D%5Btags%5D=planet-puppet" class="tag"&gt;planet-puppet&lt;/a&gt;, &lt;a href="http://blog.andreas-haerter.com/?btng%5Bpost%5D%5Btags%5D=puppet" class="tag"&gt;puppet&lt;/a&gt;.
            &lt;/small&gt;
&lt;/p&gt;
</description>
            <author>Andreas Haerter</author>
        <category>planet-fedora</category>
        <category>planet-puppet</category>
        <category>puppet</category>
            <pubDate>Fri, 11 May 2012 02:27:00 +0200</pubDate>
        </item>
        <item>
            <title>How to start with Puppet (system config management tool): useful links and resources</title>
            <link>http://blog.andreas-haerter.com/2012/02/05/how-to-start-puppet-system-config-links-resources-tutorials</link>
            <description>
&lt;div class="level2"&gt;

&lt;p&gt;
Puppet is a&lt;sup&gt;&lt;a href="#fn__1" name="fnt__1" id="fnt__1" class="fn_top"&gt;1)&lt;/a&gt;&lt;/sup&gt; powerful open source tool to automate the configuration of and software management on Unix-like&lt;sup&gt;&lt;a href="#fn__2" name="fnt__2" id="fnt__2" class="fn_top"&gt;2)&lt;/a&gt;&lt;/sup&gt; operating systems. This posting is a distillate of the resources I collected during my Puppet learning phase. I hope it helps to get an overview about what Puppet can do for you and how to use it (plus providing existing Puppet users some new ideas or tips).
&lt;/p&gt;

&lt;/div&gt;

&lt;h3 class="sectionedit4"&gt;&lt;a name="links" id="links"&gt;Links&lt;/a&gt;&lt;/h3&gt;
&lt;div class="level3"&gt;

&lt;p&gt;
&lt;strong&gt;Selected slides and presentations (overview, use-cases, experts, tips)&lt;/strong&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li class="level1"&gt;&lt;div class="li"&gt; &lt;a href="http://www.slideshare.net/jaytaph/puppet-for-dummies-zendcon-2011-edition" class="urlextern" title="http://www.slideshare.net/jaytaph/puppet-for-dummies-zendcon-2011-edition"&gt;Puppet for dummies - ZendCon 2011 Edition&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class="level1"&gt;&lt;div class="li"&gt; &lt;a href="http://www.lab42.it/presentations/puppetdevel/puppetdevel.html" class="urlextern" title="http://www.lab42.it/presentations/puppetdevel/puppetdevel.html"&gt;Developing infrastructures with Puppet&lt;/a&gt; (&lt;acronym title="JavaScript"&gt;JS&lt;/acronym&gt; slides, use the &lt;kbd&gt;&amp;larr;&lt;/kbd&gt; and &lt;kbd&gt;&amp;rarr;&lt;/kbd&gt; key)&lt;/div&gt;
&lt;/li&gt;
&lt;li class="level1"&gt;&lt;div class="li"&gt; &lt;a href="http://www.slideshare.net/markstanislav/being-a-puppet-master-automating-amazon-ec2-with-puppet-friends" class="urlextern" title="http://www.slideshare.net/markstanislav/being-a-puppet-master-automating-amazon-ec2-with-puppet-friends"&gt;Being a Puppet Master: Automating Amazon EC2 with Puppet &amp;amp; Friends&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class="level1"&gt;&lt;div class="li"&gt; &lt;a href="http://www.slideshare.net/PuppetLabs/puppet101" class="urlextern" title="http://www.slideshare.net/PuppetLabs/puppet101"&gt;Puppet 101 - Puppet @ Stanford University&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class="level1"&gt;&lt;div class="li"&gt; &lt;a href="http://www.slideshare.net/PuppetLabs/martin-puppetconf" class="urlextern" title="http://www.slideshare.net/PuppetLabs/martin-puppetconf"&gt;Lessons learned when introducing puppet in an existing large scale corporate environment&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class="level1"&gt;&lt;div class="li"&gt; &lt;a href="http://semicomplete.com/presentations/puppet-at-loggly/puppet-at-loggly.pdf.html" class="urlextern" title="http://semicomplete.com/presentations/puppet-at-loggly/puppet-at-loggly.pdf.html"&gt;Puppet at Loggly&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class="level1"&gt;&lt;div class="li"&gt; &lt;a href="http://www.slideshare.net/jiboumans/oneman-ops-9383061" class="urlextern" title="http://www.slideshare.net/jiboumans/oneman-ops-9383061"&gt;One-Man Ops with Puppet &amp;amp; Friends&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class="level1"&gt;&lt;div class="li"&gt; &lt;a href="http://www.slideshare.net/PuppetLabs/jeff-mc-cune-sf-2010" class="urlextern" title="http://www.slideshare.net/PuppetLabs/jeff-mc-cune-sf-2010"&gt;Are we compliant?&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class="level1"&gt;&lt;div class="li"&gt; &lt;a href="http://www.slideshare.net/PuppetLabs/oliver-hookins-puppetcamp2011" class="urlextern" title="http://www.slideshare.net/PuppetLabs/oliver-hookins-puppetcamp2011"&gt;A Puppet Approach To Application Deployment And Automation In Nokia&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class="level1"&gt;&lt;div class="li"&gt; &lt;a href="http://www.lab42.it/presentations/puppetmodules/puppetmodules.html" class="urlextern" title="http://www.lab42.it/presentations/puppetmodules/puppetmodules.html"&gt;Puppet Modules Standards and Interoperability&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class="level1"&gt;&lt;div class="li"&gt; &lt;a href="http://blog.koehntopp.de/uploads/puppet_kickstart.pdf" class="urlextern" title="http://blog.koehntopp.de/uploads/puppet_kickstart.pdf"&gt;Kickstart &amp;amp; Puppet, Booking.com&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class="level1"&gt;&lt;div class="li"&gt; &lt;a href="http://www.slideshare.net/PuppetLabs/puppet-camp2010" class="urlextern" title="http://www.slideshare.net/PuppetLabs/puppet-camp2010"&gt;Puppet at High Scale&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;

&lt;/div&gt;
&lt;div class="level2"&gt;

&lt;p&gt;
&lt;span class="curid"&gt;&lt;a href="http://blog.andreas-haerter.com/2012/02/05/how-to-start-puppet-system-config-links-resources-tutorials#readmore_2012_02_05_how-to-start-puppet-system-config-links-resources-tutorials" class="wikilink1" title="2012:02:05:how-to-start-puppet-system-config-links-resources-tutorials"&gt;Read more…&lt;/a&gt;&lt;/span&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT4 SECTION "Links" [636-] --&gt;&lt;div class="footnotes"&gt;
&lt;div class="fn"&gt;&lt;sup&gt;&lt;a href="#fnt__1" id="fn__1" name="fn__1" class="fn_bot"&gt;1)&lt;/a&gt;&lt;/sup&gt; 
&lt;acronym title="In my humble opinion"&gt;IMHO&lt;/acronym&gt; the tool of choice&lt;/div&gt;
&lt;div class="fn"&gt;&lt;sup&gt;&lt;a href="#fnt__2" id="fn__2" name="fn__2" class="fn_bot"&gt;2)&lt;/a&gt;&lt;/sup&gt; 
The current &lt;a href="http://docs.puppetlabs.com/guides/faq.html#does-puppet-run-on-windows" class="urlextern" title="http://docs.puppetlabs.com/guides/faq.html#does-puppet-run-on-windows"&gt;MS Windows support&lt;/a&gt; is not really worth to mention.&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;
    &lt;small&gt;
        This blog post was created on 2012-02-05 at 18:25 by
        Andreas Haerter.
                It is tagged with &lt;a href="http://blog.andreas-haerter.com/?btng%5Bpost%5D%5Btags%5D=links" class="tag"&gt;links&lt;/a&gt;, &lt;a href="http://blog.andreas-haerter.com/?btng%5Bpost%5D%5Btags%5D=planet-fedora" class="tag"&gt;planet-fedora&lt;/a&gt;, &lt;a href="http://blog.andreas-haerter.com/?btng%5Bpost%5D%5Btags%5D=planet-puppet" class="tag"&gt;planet-puppet&lt;/a&gt;, &lt;a href="http://blog.andreas-haerter.com/?btng%5Bpost%5D%5Btags%5D=puppet" class="tag"&gt;puppet&lt;/a&gt;.
            &lt;/small&gt;
&lt;/p&gt;
</description>
            <author>Andreas Haerter</author>
        <category>links</category>
        <category>planet-fedora</category>
        <category>planet-puppet</category>
        <category>puppet</category>
            <pubDate>Sun, 05 Feb 2012 18:25:00 +0200</pubDate>
        </item>
    </channel>
</rss>

