Day-2 of pre #PuppetConf Training: Puppet Fundamentals for System Administrators #Puppetize @PuppetConf

This is a summary of my experience on the second day of PuppetConf pre-conference training, Puppet Fundamentals for System Administrators. Day 1 was covered [ here ].

Confession time: My head hurts!

The knowledge really started flowing on this second day of training. I have to admit, I’m feeling fairly confident in my general file management and system navigation within the puppet training environment… and that’s good because there’s not time to be stumbling and fumbling over paths and parameters. We’re drinking from the firehose of nitty gritty puppetization goodness.

A Firehose called PFS:

In puppet parlance PFS stands for Package, File, and Service. These are the three primary resource types that we based a progressively more complex example exercise on. We started out simply installing apache using puppet. Then we defined where the apache config file should be generated from, then we got tricky and made the apache service check to see if the package was already installed and if it had a config file. This is all actually really simple with puppet. I just used more words to articulate what we did than it would take to actually do it using the tool. Which is not to say it’s all easy to grasp conceptually. There are a number of concepts and considerations to have in mind as you bang out your pp manifests and tests. By simple I mean the complexity of what goes on ‘under the covers’ is masked by the simplicity of puppets declarative nature and the mostly intuitive syntax.

The meat and potatoes of the morning lessons revolved around defining resources and declaring them together with dependencies, resource metaparameters such as tags, and establishing relationships between them using require, before, subscribe or notify all the while using git to push the changes up to the puppet master server so the agent could pull them down and execute them. The morning flew by and I was feeling like I had a good grasp of the various concepts coming at me and how they were applied in the exercises.

In yesterday’s post [ here ] I discussed the breakfast provided and the lack of coffee in the training rooms. This morning I decided I’d remedy both for myself. I got up a little early and walked 5 blocks down the steep hills surrounding our hotel (we’re atop Nob Hill) to a local greasy spoon diner for some bacon-laden pancakes, sausage, eggs and hash browns. My belly filled, I hiked back up those same hills toward a coffee shop and procured a ‘Traveler’ containing the life sustenance of most geeks… coffee with all the fixins! I figured after hiking those hills I really didn’t  want to be traipsing up and down multiple floors all day to get coffee and would rather share with my classmates anyhow. I think most people were grateful and thankfully nobody sounded the hotel alarm bell for sneaking in contraband. Not sure I’ll do this again tomorrow, but it’s likely.

When we broke for lunch we were informed that they would not be locking rooms as they had on day 1, which now meant leaving laptop out or carting them along to lunch. Not really a problem, but you never know…

After lunch, we started out with scoping, which I had already read about and had a general concept of top scope:, node scope: and precedence. This topic was explained very well and we had a chance to practice it again using our apache sample exercise. Also covered was variable interpolation, as in “I’m learning ${var1}${var2} in this class \n”.

Then we dove into another topic I’d read about in the getting started guide, in-out selectors and case or switch statements as well as conditionals, else/if/ifelse ,  and, or, not (these are false: undef, ‘ ‘, false. anything else will be true) Operators and regex support were thrown in, though we didn’t actually use them in an exercise. I’ll say that had I not done the pre-reading that I was able to, these topics would very likely have been beyond my reach. Definitely a good investment to grab a copy of the [ Learning Puppet docs ]

We continued to build upon our apache example to rework the web services install to support multi-platform deployment incorporating hands on application of the various topics covered.

Up until this point in the course I was feeling fairly confident that I had a handle on the concepts and didn’t stumble too hard in my attempts to put them to good use.

Then we began the last topic of the day, the concept of separating logic from presentation and dynamically generating configuration files customized for the Agent system. Read that again… it does make sense and it even sounds like a good idea… The implementation however is not exactly as drop dead simple as what I’ve seen in the rest of Puppet thus far.

The balance of the afternoon session I felt as though I was just barely teetering along the razor edge of my comfort zone. Remember, I’m not a developer… ] so wielding these dynamic, parameterized variable laden constructs is a stretch for me. That said, I’m forcing myself to reach just enough without being completely jaw-droppingly bewildered and confused.

This is what I got out of it: Puppet uses ERB templates which leverage Ruby’s built-in templating to define resource types to which you can then use to pass parameters to your modules… sounds powerful because it is, also, complex… yeah actually it is that too!

I’m still digesting a good portion of what we covered today. Maybe some sustenance and a nice cold drink will help it to all sink in.

Tomorrow is the third and final day of training. It’s also when most of the full conference attendees will be arriving, so I’m looking forward to meeting up face-to-face with several connections I’ve made via twitter in the last few weeks. If you’re here or you’re coming and you made it this far through my ramblings, hit me up @kylemurley I’m always glad to make new connections. #puppetize all the things!


4 thoughts on “Day-2 of pre #PuppetConf Training: Puppet Fundamentals for System Administrators #Puppetize @PuppetConf

  1. Pingback: Read a book… #puppetConf primary reading materials @RealGeneKim @JezHumble @mikeloukides #DevOps | kylemurley's Blog

  2. Pingback: Day-3 of pre #PuppetConf Training: Puppet Fundamentals for System Administrators #puppetize @PuppetConf | kylemurley's Blog

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s