Ask Your Question
1

How do I orchestrate puppet managed package updates? [closed]

asked 2013-04-04 13:50:42 -0600

Ancillas gravatar image

updated 2013-05-10 12:39:14 -0600

I like using the Package resource in Puppet, but I never dare specify ensure => latest because Puppet does not offer any built-in orchestration workflows. If ensure => latest was specified in a multi-node cluster, Puppet might run on each node at the same time, taking down my application.

Right now I use a tool called Rundeck to orchestrate Puppet runs when performing an update, but it has some limitations which have frustrated my team.

What do most people use for orchestrating application deployments? I'm interesting in helping my team get to a place where we can easily deploy to Dev ... (more)

edit retag flag offensive reopen merge delete

Closed for the following reason question is off-topic or not relevant by Ancillas
close date 2013-05-10 12:39:40.923603

3 Answers

Sort by ยป oldest newest most voted
0

answered 2013-04-05 03:07:27 -0600

There are several ways to distribute a package update:

  • Use the mcollective puppet plugin to trigger puppet agent runs
  • Set splay time in your agents to spread the starting time of automatic runs

Hope this helps!

edit flag offensive delete link more
0

answered 2013-04-05 05:52:39 -0600

jonn gravatar image

I guess that you could have a "require => Exec[]" on the package resource, and have an external tool take responsibility for ensuring that Puppet only installs the package when the time is right. That's pretty horrible, though.

To be honest, I wouldn't be using Puppet for this, at least not yet right now - Rundeck (or something like Capistrano or Func) seems like a more appropriate tool until Puppet gets some cross-host orchestration smarts.

It might be worth watching this feature request - it seems like this is something that Puppet Labs recognises as a problem, and is actively looking into.

edit flag offensive delete link more
0

answered 2013-04-05 14:40:30 -0600

I think MCollective is your best bet, with the latest MCollective Puppet agent you can trigger Puppet runs with a given environment, a specified tag (or multiple), specify the Puppet master to request a catalog from, run noop, etcetera. With all the great extension possibilities within MCollective you can write your own agent or subagents to do exactly what you want, and combine these with existing agents (Puppet agent to trigger Puppet, Package agent to do something with packages, etcetera). Combining these actions with tags or facts and you can pretty close to what you want I guess.

edit flag offensive delete link more

Question Tools

Stats

Asked: 2013-04-04 13:50:42 -0600

Seen: 704 times

Last updated: May 10 '13