{"id":250,"date":"2009-06-24T13:31:40","date_gmt":"2009-06-24T18:31:40","guid":{"rendered":"http:\/\/www.webadminblog.com\/?p=250"},"modified":"2009-06-24T13:31:40","modified_gmt":"2009-06-24T18:31:40","slug":"velocity-2009-introduction-to-managed-infrastructure-with-puppet","status":"publish","type":"post","link":"https:\/\/www.webadminblog.com\/index.php\/2009\/06\/24\/velocity-2009-introduction-to-managed-infrastructure-with-puppet\/","title":{"rendered":"Velocity 2009 &#8211; Introduction to Managed Infrastructure with Puppet"},"content":{"rendered":"<p>Introduction to Managed Infrastructure with <a href=\"http:\/\/reductivelabs.com\/products\/puppet\/\" target=\"_blank\">Puppet<\/a><br \/>\nby <a href=\"http:\/\/madstop.com\/\" target=\"_blank\">Luke Kanies<\/a>, <a href=\"http:\/\/reductivelabs.com\/\" target=\"_blank\">Reductive Labs<\/a><\/p>\n<p>You can get the work files from git:\/\/github.com\/reductivelabs\/velocity_puppet_workshop_2009.git, and the <a href=\"http:\/\/reductivelabs.com\/downloads\/presentations\/velocity_puppet_workshop_2009\/project.html\" target=\"_blank\">presentation&#8217;s available here<\/a>.<\/p>\n<p><em>I saw Luke&#8217;s Puppet talk <a href=\"https:\/\/www.webadminblog.com\/index.php\/2008\/06\/24\/the-velocity-2008-conference-experience-part-vii\/\" target=\"_blank\">last year at Velocity 2008<\/a>, but am more ready to start uptaking some conf management back home.\u00a0 Our UNIX admins use cfengine, and puppet is supposed to be a better-newer cfengine.\u00a0 Now there&#8217;s also an (allegedly) better-newer one called chef I read about lately.\u00a0 So this should be interesting in helping to orient me to the space.\u00a0 At lunch, we sat with Luke and found out that Reductive just got their second round funding and were quite happy, though got nervous and prickly when there was too much discussion of whether they were all buying <a href=\"http:\/\/www.teslamotors.com\/\" target=\"_blank\">Teslas <\/a>now.\u00a0 Congrats Reductive!<\/em><\/p>\n<p>Now, to work along, you git the bundle and use it with puppet.\u00a0 <em>Luke assumes we all have laptops, all have git installed on our laptops, and know how to sync his bundle of goodness down.\u00a0 And have puppet or can quickly install it.\u00a0 Bah.\u00a0 I reckon I&#8217;ll just follow along.<\/em><\/p>\n<p>You can get puppet support via IRC, or the puppet-users google group.<\/p>\n<p>First we exercise &#8220;ralsh&#8221;, the resource abstraction layer shell, which can interact with resources like packages, hosts, and users.\u00a0 Check em, add em, modify em.<\/p>\n<p>You define abstraction packages.\u00a0 Like &#8220;ssh means ssh on debian, openssh on solaris&#8230;&#8221;\u00a0 It requires less redundancy of config than cfengine.<\/p>\n<p>&#8220;puppet&#8221;\u00a0 consists of several executables &#8211; puppet, ralsh, puppetd, puppetmasterd, and puppetca.<\/p>\n<p>As an aside, <a href=\"http:\/\/cft.et.redhat.com\/\" target=\"_blank\">cft<\/a> is a neat config file snapshot thing in red hat.<\/p>\n<p>Anyway, you should use puppet not ralsh directly.\u00a0 Anyway the syntax is similar.\u00a0 Here&#8217;s an example invocation:<\/p>\n<pre>puppet -e 'file { \"\/tmp\/eh\": ensure =&gt; present }'<\/pre>\n<p>There&#8217;s a file backup, or &#8220;bucket&#8221;, functionality when you change\/delete files.<\/p>\n<p>You make a repository and can either distribute it or run it all from a server.<\/p>\n<p>There is reporting.<\/p>\n<p>There&#8217;s a <a href=\"http:\/\/github.com\/albanpeignier\/gepetto\/tree\/master\" target=\"_blank\">gepetto<\/a> addon that helps you build a central repo.<\/p>\n<p>A repo has (or should have) modules, which are basically functional groupings.\u00a0 Modules have &#8220;code.&#8221;\u00a0 The code can be a class definition.\u00a0 init.pp is the top\/special one.\u00a0\u00a0 There&#8217;s a modulepath setting for puppet.\u00a0 Load the file, include the class, it runs all the stuff in the class.<\/p>\n<p>It has &#8220;nodes&#8221; but he scoffs at them.\u00a0 Put them in manifests\/site.pp.\u00a0 default, or hostname specific (can inherit default).\u00a0\u00a0 But you should use a different application, not puppet, to do this.<\/p>\n<p>You have to be able to completely and correctly describe a task for puppet to do it.\u00a0 This is a feature not a bug.<\/p>\n<p>Puppet uses a client-server pull architecure.\u00a0 You start a puppetmasterd on a server.\u00a0 Use the SSH defaults because that&#8217;s complicated and will hose you eventually.\u00a0 Then start a puppetd on a client and it&#8217;ll pull changes from the server.<\/p>\n<p><em>This is disjointed.\u00a0 Sorry about that.\u00a0 The session is really just reading the slide equivalent of man pages while flipping back and forth to a command prompt to run basic examples.\u00a0 I don&#8217;t feel like this session gave enough of an intro to puppet, it was just &#8220;launch into the man pages and then run individual commands, many of which he tells you to never do.&#8221;\u00a0 I don&#8217;t feel like I&#8217;m a lot more informed on puppet than when I started, which makes me sad.\u00a0 I&#8217;m not sure what the target audience for this is.\u00a0 If it&#8217;s people totally new to puppet, like me, it starts in the weeds too much.\u00a0 If it&#8217;s for someone whohas used puppet, it didn&#8217;t seem to have many pro tips or design considerations, it was basic command execution.\u00a0 Anyway, he ran out of time and flipped through the last ten slides in as many seconds.\u00a0 I&#8217;m out! <\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Introduction to Managed Infrastructure with Puppet by Luke Kanies, Reductive Labs You can get the work files from git:\/\/github.com\/reductivelabs\/velocity_puppet_workshop_2009.git, and the presentation&#8217;s available here. I saw Luke&#8217;s Puppet talk last year at Velocity 2008, but am more ready to start uptaking some conf management back home.\u00a0 Our UNIX admins use cfengine, and puppet is supposed [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[85,77,259],"tags":[626,265,79,260,261],"class_list":["post-250","post","type-post","status-publish","format-standard","hentry","category-automation","category-conferences","category-velocity-2009","tag-conferences","tag-puppet","tag-velocity","tag-velocityconf","tag-velocityconf09"],"aioseo_notices":[],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_shortlink":"https:\/\/wp.me\/pfI0c-42","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.webadminblog.com\/index.php\/wp-json\/wp\/v2\/posts\/250","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.webadminblog.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.webadminblog.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.webadminblog.com\/index.php\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.webadminblog.com\/index.php\/wp-json\/wp\/v2\/comments?post=250"}],"version-history":[{"count":4,"href":"https:\/\/www.webadminblog.com\/index.php\/wp-json\/wp\/v2\/posts\/250\/revisions"}],"predecessor-version":[{"id":254,"href":"https:\/\/www.webadminblog.com\/index.php\/wp-json\/wp\/v2\/posts\/250\/revisions\/254"}],"wp:attachment":[{"href":"https:\/\/www.webadminblog.com\/index.php\/wp-json\/wp\/v2\/media?parent=250"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.webadminblog.com\/index.php\/wp-json\/wp\/v2\/categories?post=250"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.webadminblog.com\/index.php\/wp-json\/wp\/v2\/tags?post=250"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}