I was pretty wiped out last night and slept in a little this morning, but I still got over to the conference in time to get some breakfast before heading in to this morning’s keynotes. The first speaker was Dan Spurling of Getty Images. He discussed how and why they’ve integrated puppet in to their environment, as well as some of his philosophy on development, operations, and getting everyone to play nice together. The second keynote was delivered by Alan Green of Sony Computer Entertainment America. He also talked about how they use Puppet, but he also discussed how they support the many internal groups and their extremely varied IT needs. After that, Luke came back on to do a Q&A session, which helped give us some more insight into what’s going on in the Puppet universe.
Once the keynotes were done, we headed out to our technical sessions. I started with an introduction to MCollective, which is an asynchronous, queue driven job management service that comes with Puppet. I’ve got some really good ideas on how this will be put to use on my customers’ systems. After that session was done it was time to go get some lunch. I had a little longer of a break, so I headed back to the hotel room to drop off some more exhibitor loot before returning to PuppetConf 2014 to grab some lunch and get ready for the afternoon sessions.
The first session of the afternoon was one that discussed OpenStack and how it can be managed with Puppet. It’s a pretty complex system, but there are modules out on the forge that make it pretty simple and painless to set up, configure, and run using Puppet. Next up was what was supposed to be a tour of Puppet subsystems but really turned in to an overview of part of the execution path of the Puppet agent and master code. It was interesting, but wasn’t really what I was hoping for. After that I headed over to catch a session about managing a multi-tier architecture using Puppet. It seemed like a good idea because we have a lot of that at our customers’ sites. And then there was the session put on by F5 Networks, covering their new REST API for managing their network gear. That is going to come in really useful, and considering you’ll be able to do just about everything you can do on the command line using REST calls, it’s going to rock! Our last session of the day covered Elasticsearch’s ELK platform, and was delivered by Jordan Sissel. This was a product stack that I didn’t know too much about before now, but after this presentation, I’m going to be spinning up a VM to try it out. It looks like it might be a good replacement for Splunk, with a bunch of extra functionality to boot.
It was a good way to close out the conference, and I made my way back to the hotel pretty brain fried from all of the information that has been crammed in to my head over the last 5 days. The conference was great, and I hope I get the opportunity to go to it again next year.
Even though yesterday was technically the first day of PuppetConf 2014, everything really got going today. We started off by going to the keynotes, which were definitely interesting. The first one was given by Luke Kanies, the founder of Puppet Labs. He talked about where they’ve been, what’s going on now, as well as a little about what’s coming up. After he was done, Gene Kim, author of The Phoenix Project, took the stage to talk about DevOps. I’ve had a low opinion of the DevOps methodology for a while, but after listening to him talk, I think I’m going to have to get his book and reevaluate my opinions. The third keynote was delivered by Kate Matsudaira, CEO of popforms. She went over some career management and improvement strategies.
After the keynotes, we walked around the main hall, checking out the vendors, before heading to our selected sessions. I started by checking out the demos that Puppet Labs were running, got to try out the new Node Classifier (it’s pretty amazing), and joined the Test Pilot program. After the lunch break, I started in on the sessions with one about scaling Puppet for large environments. My next session covered auditing and security related operations using Puppet, including being able to enforce basic security policies through classes.
After that session, I headed upstairs to do some last minute reviewing before taking my Puppet Professional certification exam. I can’t talk about specifics of the exam due to signing an NDA, but let me say that it was pretty challenging, making you think about the questions. I did pass it, and am now certified.
Taking the exam used up pretty much all of the rest of the afternoon, so by the time I was done and had met back up with my colleagues, it was time to head over to an off-site mixer sponsored by Puppet Labs. We all had a good time there, and got to spend some time talking to other conference attendees as well as Puppet Labs employees.
That pretty much wrapped up the day, and I headed back to the hotel to get some sleep to prepare for tomorrow.
Today was the final day of our Puppet Practitioner class. We went over classifying nodes using roles and profiles. This is something which I’ve already been implementing, and which goes a long way towards taking the pain out of classifying nodes. We also covered the MCollective framework and how it can be used. With it you’re able to execute specific classes on specific nodes, which is something I’m going to be able to put to good use for some of my clients needs.
We also covered manifest testing using the rspec-puppet and serverspec tools. I do a lot of software development in perl, which has a good testing framework that I’ve used extensively. It was a real pleasure to learn about and get to work with ruby and Puppet’s equivalent tools. It was also nice to see that there is coverage analysis data there to help me build better test cases. In my opinion, not doing this kind of testing, and not looking at coverage analysis, is one of the leading causes of poor quality code. No, the tools are not perfect, and yes, you do have to design the tests for the code, but it does allow you to test your code before it ever touches a node, and that’s a Very Good Thing™.
We wrapped up our last few class activities and then had some question and answer time with our instructor. After that, I packed up my stuff and headed down to the main hall to get registered for the actual conference. The training I’ve been taking was scheduled before PuppetConf 2014 started instead of during the conference. That means I won’t be missing any of the conference activities due to being in a classroom. So now I’ve got my swag bag, my badge, and my conference t-shirt, and will be working through a pretty solid schedule of presentations and sessions during the next few days.
Today at PuppetConf 2014 was another class day. We got in to some really interesting stuff, and by interesting I mean your eyes are about to glaze over if you’re not channeling your inner (or outer) nerd.
Custom facts. I’ve actually worked with these before, but filling in the blanks was nice. Just remember that Ruby returns the value of the last statement evaluated if you don’t have an explicit return in there. That’s also known the reason why I wasted hours and learned how to debug Puppet modules when I implemented my first custom fact.
Hiera. Learn it and use it. Especially since classes can pull their defaults from it. My next thing is to explore using MySQL as a data source instead of yaml. But either way, get that data out of your modules and into hiera. I’ve got a bit of that to do in my lab environment at home.
File manipulation. Man, this is where the fun starts, not that custom facts and hiera aren’t fun, but really, if you want to do something that makes actual, real, useful changes on your systems, this is it. Between file_line, concatenating fragments to build files, and managing config files with Augeas, you’re pretty well covered for all of your file manipulation needs. I’m going to be experimenting with using Augeas to build DNS zone files for my home lab environment really soon now. I’m starting to think that it could be used for internal DNS in a datacenter environment. It’ll be a lot easier than the manual processes that I see in use currently.
Tomorrow is our last day of class, and then the conference starts. I’ve got a certification exam scheduled for later in the week, and while I was feeling pretty good about my chances, I think this class has definitely helped out. We’ll see once I actually get to take it.
I’m spending the week out in San Francisco for PuppetConf 2014. Puppet is a configuration management system used to help keep large collections of servers configurations in sync, as well as manage application deployment, users, and pretty much any other resource you can think of.
I’m here early because I’m taking one of their instructor-led training classes in order to fill in some of the blanks in my self-taught skill set. We had a rough start today because the wireless network that the hotel set up for us was not configured correctly for running training labs. It’s hard to spin up VMs on your laptops and get them on the network when you’re limited to one IP per vPort. We did finally get it working and are mostly caught up to where we should have been for today’s lesson plans.
After getting signed in and collecting my t-shirt, I headed up to my assigned classroom. We first worked through a review of some Puppet basics and then moved on to data structures like arrays and hashes and using virtual resources to simplify complex declarations. The class, and Puppet in general, are very Git centric, which is nice to see. Since you’re, in effect, turing your site’s configuration in to code, you need to put that code under some form of revision control, and Git is probably the best system out there. I’m not going to go down that rabbit hole, but seriously, it works really well.
The hotel’s facilities are really nice, with lots of meeting spaces for the classes and even some pretty good catering for breakfast and lunch. We finally broke for the day a little after 4:00 PM, and will be back tomorrow to do this all over again. I’m already filling in some of the blanks, and have a few modules at home that need to be rewritten…