Entries filed under: Puppet Camp

Back to Index

Upcoming Puppet Events: New Camps, PuppetConf, and Velocity

Posted on
By
jose
in
Blog, Community, Conferences and Workshops, DevOps, General News, Puppet Camp, PuppetConf
Responses
0 Comments

Puppet Labs has been a busy place in the last month: we announced PuppetConf and released the very first seats for the Puppet Professional Certification Program (more details coming soon), we also announced our support for OpenStack and we announced PuppetDB, affectionately known around the office as project Greyskull. As we move ahead into May and June we hope to see you at some of the following events:

May 19 – Puppet Camp Los Angeles: Senior Developer Deepak Giridharagopal will introduce PuppetDB, and the Puppet projects team lead Daniel Pittman will share the Puppet roadmap for 2012.

May 21 – Find us at EMC world, we’ll be around and looking to find you. Follow us @puppetlabs to find out where we are.

We’ve announced new Puppet Camps for June and July:

  • Southeast Asia in Kuala Lumpur on June 5th
  • Sydney on June 8th (tickets are almost gone!)
  • District of Columbia on June 19th
  • Puppet Camp Boston on June 22
  • Chicago on July 23rd
  • And don’t forget about our previously announced our European camps in Dublin, Ireland on July 6th and Geneva, Switzerland on July 11th.

    After the end of July we’ll be working to produce an epic PuppetConf in San Francisco on September 27th and 28th. Register now to guarantee a seat. Like many of our Puppet Camps, PuppetConf is sure to sell out.

    We’re also happy to offer you a 10% discount to Velocity on June 25-28. Just use code PUPPETLABS when you register and then come find us at booth #517 and check out presentations from James Turnbull and Luke Kanies at Velocity.

    We’re looking forward to connecting with you this summer.

Puppet Labs at AWS Cloud Summit, EucaDay NYC, and Puppet Camp NYC

Posted on
By
jose
in
Blog, Cloud, Community, Conferences and Workshops, General News, Puppet Camp
Responses
1 Comment »

Spring is the time to be in New York. We know it, and apparently so do our partners. Whether you live in or around New York or just happen to be in town visiting over the next two weeks come find us at these awesome events:

Three Puppet Camps in Europe on the way

Posted on
By
jose
in
Blog, Community, General News, Puppet Camp, User Experience, Users
Responses
0 Comments

We’re happy to announce three European Puppet Camps:

Edinburgh, Scotland March 23 (only 20 tickets left!)

Register

Stockholm, Sweden March 28 (20 tickets left!)

Register

Amsterdam, Netherlands April 2

Register

Puppet Camps are 1-day community events for local audiences. Typically we’ll feature 3-5 local speakers along with a Puppet Labs Engineer. Schedules for all three Puppet Camps are available, but may change as more talks are submitted.

Teyo Tyree, the VP of Business Development and co-founder of Puppet Labs, will be at all three events. RI Pienaar, the creator of MCollective (the backbone of Puppet Enterprises Live Management feature), will also be at Edinburgh. Core contributors to the Puppet project and interesting users are participating in all of the camps.

Puppet Camp Edinburgh is hosted in conjunction with FLOSS UK’s spring conference. Puppet Camp Amsterdam is being co-hosted by Cloudera and (Puppet Labs’ local partner) AmazicSource. We’re in the process of expanding Puppet Camps from a bi-annual format to a roadshow appearing frequently throughout the year.

This year we are planning to hit New York, DC, Chicago, and either Melbourne or Sydney, but we’re also having conversations with organizers in Berlin and Geneva. If you think your city has enough interest in Puppet to support a 100+ person event, shoot us an email.

Our end user conference PuppetConf will be held at the Mission Bay Conference Center in San Francisco, CA on September 27th and 28th. Look for more details on PuppetConf in the next few weeks, along with a call for participation.

Puppet Camp Atlanta: Success!

Posted on
By
jose
in
Blog, Community, Conferences and Workshops, DevOps, General News, Puppet Camp, Users
Responses
2 Comments »

Puppet Camp Atlanta was a fantastic community event and is be the template for our continuing Puppet Camp series. In many ways Atlanta was an experiment to see if our community could support a 1-day event structure. It can, and the meeting was productive and filled with rich content. A loose speaking schedule allowed for a lot of great conversations over coffee and open Q&A sessions with Puppet Engineers. More than ever before, the Puppet team felt as though we were able to connect with participants to help tackle the tough issues that our users face in real world situations. I strongly encourage you to participate in an upcoming Puppet Camp in your city.

We have 7 Puppet Camps in the works, so look for your city on our complete list. If you don’t see your greater area represented and think you can help us find 100 puppeteers eager to converse, reach out and we’ll see what we can do to bring an event to your city.

And don’t forget PuppetConf is September 27th and 28th at the Mission Bay Conference Center in San Francisco, California. A call for participation, registration details, and sponsorship prospectus will be available by March. PuppetConf has an estimated 60 speaking opportunities and will span all topics operations, DevOps, Puppet, and the Puppet Ecosystem.

Puppet Triage-a-Thon

Posted on
By
jose
in
Blog, Community, General News, Puppet Camp, PuppetConf
Responses
0 Comments

The Puppet community has grown quickly, and a lot of you have logged tickets and issues. We’ve tried to give those tickets as much love as we could but some slip through the cracks, and sometimes we get overwhelmed. We’ve recognised this and want to get a handle on the backlog of tickets. But we need your help.

Enter Triage-a-thon, hosted locally in our offices, virtually on IRC (#puppethack) and the Web. We’re going to review all the open tickets in the Puppet project with a view to:

  • Update and confirm that issues are still relevant
  • Ensure tickets are in the right status and all the right information is present to help us resolve it
  • Close any invalid or no longer relevant tickets

We’ll assign blocks of tickets to every participant, have documentation explaining what you need to do and provide people on the ground to help you make decisions and answer questions.

We’ll also provide pizza, snacks and a venue locally in our Portland, Oregon offices. Virtually we’ll provide an IRC channel (#puppethack), IM, and rewards (t-shirts, patches, stickers, badges, and books) for people who triage tickets and get involved.


Register

Puppet Labs at SCALE 10x

Posted on
By
jose
in
Blog, Community, General News, Puppet Camp, PuppetConf
Responses
0 Comments

If you’re headed to SCALE 10x this weekend in Los Angeles, here’s a brief schedule to help you find us at the event:

  • Register using our discount code PUP12 for 40% discount!
  • Join us for a half-day training session on Friday 1/20 at SCALE University
  • Come by booth #42 for a Puppet Enterprise demo, t-shirts, and stickers
  • Stop by our BOF Friday 1/20 at 7pm for an informal Puppet discussion
  • See Professional Service Engineer Carl Caum speak about AWS and Puppet at 4:30 on Sunday

Hope to see you there!

Puppet Camp Atlanta, Feb. 3rd

Posted on
By
jose
in
Blog, Community, General News, Puppet Camp, PuppetConf
Responses
0 Comments

Puppet Camp Atlanta is only a few weeks away! If you’re in the Atlanta area or nearby region, this event is for you! Puppet Camps are local, 1-day events that feature a mix Puppet Labs engineers, local speakers, and unconference talks generated by the audience. We’d like to thank our Sponsor MomentumSI for helping make Puppet Camp Atlanta possible!

Registration is now open and the nearly-finalized schedule is available.

We hope you’ll join us for Puppet Camp Atlanta, the first of many new Puppet Camps sprouting up worldwide.

Check out the tentative schedule below—much of the afternoon will be devoted to unconference talks (ie, you can lead the charge on a topic you care about).

Speaker Presentation Time
Kelsey Hightower

Puppet Labs

There’s a Module for That!

An in depth look at the Puppet Forge and it’s companion, the Puppet Module Tool. During this talk a Puppet module will be created from the ground up and released on the Puppet Forge.

9 AM
Gary Larizza*

Puppet Labs

Examples for Separating Data from Puppet Code

One of the first, and biggest, hurdles that Puppet users encounter is ‘How do I make this Puppet code work across all my environments?’ There are several ways to solve this problem, and Gary will give examples of many of the popular methods. He’ll also introduce you to Hiera: the next-generation data lookup system that will be bundled with the next major release of Puppet.

10 AM
Clint Savage

Shadow-Soft

Centralized Authentication with Puppet, LDAP and Linux

This talks about using Active Directory or LDAP as the authentication source, using puppet to update when a new user is added and setting up proper authentications with pam, sssd, ssh and /etc/security/access.conf, among other considerations.

11 AM
Tom Hite

VP Solutions for MomentumSI

Using Puppet to Automate Amazon Deployments

As Amazon continues to grow market share in the public cloud, users are deploying more sophisticated multi-tiered applications. This presents a DevOps challenge related to consistent provisioning, configuring, scaling and locking down resources. This session will discuss the use of Puppet and CloudFormation to automate cloud deployments and system upgrades.

1 PM
Kenn Hussey

Cloudsmith

Geppetto – tooling for Puppet development

This talk will provide both an overview of current approaches to developing Puppet modules, as well as a look forward toward an expanded vision that includes publishing and consuming modules with the Puppet Forge.
We’ll review the current state of the art in tooling for working with modules, with a particular emphasis on Geppetto, a recently introduced “Puppet IDE” that simplifies the process of creating and editing manifests and modules. We’ll also demonstrate Geppetto’s key features and also show how Geppetto supports module development, publishing and consumption in an integrated workflow.

2 PM

*Gary is also teaching the Atlanta Puppet Master course. A ticket to this course is also good for admission to Puppet Camp Atlanta.
Hope to see you there! Register today.

Upcoming Events: Puppet Camps, Save the Date for PuppetConf, and More

Posted on
By
jose
in
Blog, Community, Conferences and Workshops, General News, Puppet Camp, PuppetConf
Responses
0 Comments

Join us for an upcoming Puppet Camp:

Atlanta, GA – Friday, February 3rd – Register

Edinburgh, Scotland – Friday March 23rd – Register

(Click on “Booking“)

Puppet Camps are one-day, regional events held 6-8 times per year. Puppet Camp features 4 to 5 talks followed by a few sessions of unconference. Registration costs, co-located events, and speakers will vary from event to event.

If you’d like to speak at or sponsor a Puppet Camp please contact us.

We are aiming to organize Puppet Camps in New York City and in Stockholm in March or early April, more information will be posted as it becomes available on the PuppetCamp Community page.

PuppetConf will persist as a multi-day user and community conference. We have a ton of changes coming to PuppetConf ’12 to look forward to, so mark your calendar for PuppetConf 2012: September 27-28 at the Mission Bay Conference Center in San Francisco, CA.

We also look forward to seeing you at SCALE 10X for Puppet Training at Scale University (use our discount code “PUP12″ for 40% off registration to SCALE and Puppet training), and at the Configuration Management Room at FOSDEM.

PuppetConf: A Photo Finish

Posted on
By
Katherine Gray
in
Blog, Community, DevOps, product release, Puppet Camp, PuppetConf
Responses
0 Comments

Our first annual PuppetConf, held last week here in Portland, was a remarkable event. Over a thousand of you attended or watched the live stream. Here are some other bits I’d like to share:

  • If you attended the conference, or live streamed it, we’d appreciate your feedback on our survey. You could win a $100 Amazon gift card, and a free ticket to next year’s conference.
  • PuppetConf had just over 1200 participants—300 in attendance and 900+ streaming around the world.
  • Our DevOps track was viewed by 607 participants, plus our in-house audience, which, as far as we can tell, makes it the largest DevOps event ever.
  • Our live stream included participants from 27 countries which, combined, represents viewership from every continent.
  • Puppet Labs announced Puppet Enterprise 2.0, you can sign up now to be notified when the GA release is available.

Last but not least, thanks to all of our sponsors who helped make the conference possible. Keep an eye out for our date announcement for next year. If you missed our presentations we’ll be posting slide decks and the video content very soon.

And now, PuppetConf in pictures:

Puppet Labs CEO, Luke Kanies, delivers the keynote address on day one.

We’re pretty proud of these badges. Not only did each one have a QR code that linked to the schedule, we gave people details about social events, places to eat and how to get around Portland on public transit.

Our product manager, Nigel Kersten. You have no idea what he went through to look like this.

Eucalyptus CEO Mårten Mickos delivers his talk on Open Source and The State of Enterprise Private Clouds.

That’s our executive team in a DevOps Cafe interview with Damon Edwards (far left) and John Willis (far right) from DTO Solutions.

Voodoo Donuts. Mmmm. Donuts.


And that’s Jose, with Jasper Poppe of eBay, NOT freaking out about a crushed network cable 10 minutes before the opening keynote (which did happen, a good story for another time).

Deploying Applications and Bringing Puppet Information to the CLI with Puppi

Posted on
By
Alessandro Franceschi
in
Blog, Community, Extending Puppet, How to, Open Source, Puppet Camp, Tips, Users
Responses
0 Comments

With Puppet we build infrastructures, piece by piece, manifest after manifest. We control how nodes are configured, what services they provide, how they are checked.
We manage where web applications stay and sometimes how they are built, tested, and deployed.

Puppet has a lot of knowledge about our systems. Every catalog we receive is an unique source of data that is exactly what brings our servers to the desired state. The more information we provide in our manifests about the system, the more we can things we can do with it. Puppi tries to bring this knowledge to the command line.

Present

Puppi was initially developed to standardize different procedures of web applications deployments and it has evolved into a shell command that provides handy and quick actions useful for the system administrator. Now it is stable enough to have reached version 1.0 (currently in RC state) the features initially planned are present, it’s used in production and no big changes are planned for this version. See the presentation held at The Puppet Camp Europe 2011 for some videos and further details.

Puppi’s most useful actions are:

  • deploy: to manage the whole deploy workflow with a single keystroke
  • check: to verify the general system’s health and specific checks on the application deployed
  • log: to quickly tail some or all the known logs
  • info: to show the output of a custom set of preconfigured commands
  • rollback: to quickly rollback a deployed application

Puppi is currently entirely provided as a Puppet module, you include it and you have the whole Puppi functionality:

  • the bash command /usr/sbin/puppi
  • its configuration directory /etc/puppi, with plenty of files and dirs configured by Puppet defines like puppi::check, puppi::info etc
  • a set of (customizable) defines that build deploy procedures, like puppi::project::maven that retrieves Java artifacts generated by Maven
  • some general use native scripts that are used to accomplish the different steps of a deployment
  • a set of defines to populate the output of Puppi actions
  • some default content for Puppi info, log and check actions to make Puppi useful out of the box.

There are not other modules prerequisites, but for full functionality you need on the systems where you place Puppi these commands: wget, mail, rsync and the most common Nagios Plugins.
Note also that Puppi is entirely self-contained, it doesn’t need external services to run. Once deployed, all its actions are based on local files and data; checks are local, info scripts are local, deploy procedures need only the availability of the defined source to work.

How to Use

The Puppi module provides some deploy procedures that cover many typical scenarios.
For example, to retrieve a war from $source and deploy it in $deploy_root, keeping a copy for rollback and notifying $report_email, you need this:

 
puppi::project::war { "myapp":
    source           => "http://repo.example42.com/deploy/prod/myapp.war",
    deploy_root      => "/store/tomcat/myapp/webapps",
    report_email     => "sysadmins@example42.com",    
}

All the existing deploy procedure have a set of optional arguments that make them more flexible. Here a more complex case:

puppi::project::maven { "supersite":
    source           => "http://nexus.example42.com/nexus/content/repositories/releases/it/example42/supersite/",
    deploy_root      => "/usr/local/tomcat/supersite/webapps",
    config_suffix    => "cfg",
    config_root      => "/srv/htdocs/supersite",
    document_suffix  => "css",
    document_root    => "/srv/htdocs/supersite",
    firewall_src_ip  => $site ? {
        dr      => "192.168.101.1/30",
        main    => "192.168.1.1/30",
    },
    backup_retention => "3",
    init_script      => "tomcat",
    report_email     => "sysadmins@example42.com",
    enable           => "true",
}

This does the following actions in sequence:

  1. Retrieves the maven-metadata.xml from $source
  2. Blocks access from a loadbalancer IP
  3. Backups the existing data for rollback operations
  4. Deletes older backups (3 archives are kept, instead of the default 5)
  5. Deploys the release war in $deploy_root
  6. Unpacks a configurations tarball tagged with the Maven qualifier $config_suffix in $config_root
  7. Unpacks a static files tarball tagged with the Maven qualifier $document_suffix in $document_root
  8. Restarts tomcat and notifies via mail

All this can be triggered with the command “puppi deploy supersite” and if something fails you can “puppi rollback supersite”.

The above puppi::project::maven (or tar|war|list|dir|mysql..) defines build up the logic and the sequence of commands run in deployment and rollback operations using basic Puppi defines like puppi::project, puppi::deploy, puppi::rollback, puppi::init.
You can use the existing puppi::project::* procedures or build up your own ones, to manage special cases. The same bash scripts they use (“native scripts”, stored in puppi/files/scripts/) can be replaced by custom scripts, in whatever language.

The other Puppi actions require simpler constructs, for example you can manage a single check (we use Nagios plugins, as they are so common) with:

puppi::check { "Port_Apache":
    command  => "check_tcp -H ${fqdn} -p 80" ,
}

or insert more elaborated checks in your defines (for example when you create virtualhosts, using data you may already provide):

puppi::check { "Url_$name":
    enable   => $enable,
    command  => "check_http -I '${target}' -p '${port}' -u '${url}' -s '${pattern}'" ,
}

The logs to tail with Puppi log are defined by the puppi::log define (note that with a simple selector you can adapt the commands to run according the underlining OS):

puppi::log { "auth":
    description => "Users and authentication" ,
    log => $operatingsystem ? { 
        redhat => "/var/log/secure",
        darwin => "/var/log/secure.log",
        ubuntu => ["/var/log/user.log","/var/log/auth.log"],
}

Also in this case you can insert a puppi::log inside an existing define, using the data it inherently has:

puppi::log { "tomcat-${instance_name}":
    log => "${tomcat::params::storedir}/${instance_name}/logs/catalina.out"
}

You can manage the output of “puppi info network” with something like:

puppi::info { "network":
    description => "Network settings and stats" ,
    run         => [ "ifconfig" , "route -n" , "cat /etc/resolv.conf" , "netstat -natup | grep LISTEN" ],
}

or build more elaborated info subclasses using custom templates and specific data:

puppi::info::instance { "tomcat-${instance_name}":
    servicename => "tomcat-${instance_name}",
    processname => "${instance_name}",
    configdir   => "${tomcat::params::storedir}/${instance_name}/conf/",
    bindir      => "${tomcat::params::storedir}/${instance_name}/bin/",
    pidfile     => "${instance_rundir}/tomcat-${instance_name}.pid",
    datadir     => "${instance_path}/webapps",
    logdir      => "${instance_logdir}",
    httpport    => "${instance_httpport}",
    controlport => "${instance_controlport}",
    ajpport     => "${instance_ajpport}",
    description => "Info for ${instance_name} Tomcat instance" ,
}

Examples are endless, you can easily extend and customize the existing defines and you can integrate them in your modules according to the needs you have.

The Joys of Collectivism

Puppi’s purpose is not only to provide a command tool based on Puppet data, that helps the sysadmin to gather info, deploy applications, troubleshoot and check systems—it can be run manually from the local system, automatically via a cron job or triggered by a web interface. It can be used to summarize a set of common actions to be sudoed by non-privileged users, and it can be called by an agent of an orchestration tool.

Puppi enters into a new scale with the MCollective agent Puppi and the command mc-puppi: Whatever can be done locally with Puppi can be repeated on the whole infrastructure with the same syntax, using the power of MCollective. This becomes particularly interesting when your deploy procedures involve actions on different nodes, or when you need to quickly check the system’s health on a multitude of nodes. A command like “mc-puppi check” runs and shows the equivalent of ALL your Nagios checks on your WHOLE MCollective domain. There may be thousands; you have them in few seconds. I like to consider this a real-time distributed instant infrastructure test. Something like “mc-puppi info network” instead provides immediate overview of the network configuration and status of all your nodes, and if verbosity bothers you, just grep what you need.

A missing piece in the Puppi world is a web frontend that gathers the reports of the deployments, collects information about nodes, shows the results of local checks, and possibly lets users trigger deploy procedures via a central web console. The development of a web interface to Puppi, although planned since the beginning, has not yet started. The main reason is that it was considered a priority to have a stable command and a MCollective agent, another reason it’s time to make decisions about Puppi, and possibly these have to be shared.

Future

Puppet development is growing quickly. At the Puppet Camp Europe 2011 Luke presented Puppet Faces, and it’s clear that version 2.7 introduces us to a new era in Puppet evolution. There are some common points in Faces and Puppi: they both bring parts of Puppet to the CLI and they are expandable with actions. Actually, it just seems natural that Puppi’s future is to become a Puppet Face.
Now it’s a bash script that executes bundles of bash scripts, based on data more or less elegantly provided by Puppet modules. It works also on older Puppet versions (at least 0.25) so that it can be widely adopted and integrated in current layouts. The next version is probably going to be in ruby, directly use Puppet APIs and possibly be based on a more standardized modules data model. And of course, it is going to work only with Puppet 2.7 and later.
It may become something different, maybe even with a different name, but as far as I’m concerned it should keep the principles it’s based upon:

  • Be based on Puppet data: Puppet knows the infrastructure, we want this knowledge and intelligence integrated in commands we run on the shell. The way this data is currently provided is not optimized (every piece of Puppi information is basically a Puppet resource (generally a file) and this is an overhead we should avoid), we could rely directly on the catalog, which seems the most natural source, but in order to do this I suspect some kind of standardization is needed at the module level
  • Provide a simple single line standard command to run an application deployment (one keystroke to deploy them all)
  • Provide useful actions that can be used from the CLI, an orchestrator agent or a web interface to show info, status, and working details on systems and applications (I would keep the check/info/log actions, as I’m finding them quite useful)
  • It can be run manually or automatically, locally or from a central orchestrator and, possibly, also via a web interface

A Puppi webapp should let different users request, trigger, and view the results of a deploy, gather info from the systems (via rest?), and, in order to become an inventory frontend on steroids with as much detail on the system as users want, receive and show checks and possibly be able to search and correlate the large amount of data it could receive.

The truth is, development on the next Puppi and its web frontend is something that I would like to do in collaboration with Puppet Labs and interested members of the community.
Puppi 1.0 was done by me for a customer’s needs with the knowledge and the requirements I had at my disposal.
Puppi 2.0 (whatever the name and the shape) does not have immediate operative requirements; its design, how data is fed from modules, and how it’s integrated in Puppet should be discussed and shared.

Anyone interested? Leave a comment here, or email me directly.