Saturday, November 10, 2012

RunDeck and Jenkins

RunDeck and Jenkins can be used together to provide a deployment pipeline.
How is RunDeck different from Jenkins?
  • Rundeck not a CI server
  • Both are able to:
    • provide a self serve job interface to automate routine procedures. 
    • execute shell scripts on remote nodes to facilitate deployment tasks. 
  • Differentiator: Rundeck's built-in support for pluggable remote command execution
  • Comes down to use case. 
    • Rundeck == job console for Ops and geared to work with that ecosystem of tools.
    • jenkins-rundeck plugin demonstrates how complimentary they are in continuous deployment tool chain. 
    • Jenkins handling build end of CI loop and triggering Rundeck to provide distributed orchestration across deployment management tool chain.

How is RunDeck different than Puppet mcollective or Chef knife?
  • Some overlap between rundeck and mcollective and knife
    • Allow administrators to execute commands in distributed environment, offering a form of real time control
    • Use metadata-level searches for targeting remote nodes. 
    • Levels of authorization, authentication and auditing
  • Rundeck has a few goals of its own though:
    • Easy way to define routine sequences as "Job workflows" as a basis for runbook automation solutions.
    • Integration of node and environment metadata sources as RunDeck "resource model providers". In this way, Rundeck can use Puppet or Chef node data to drive remote execution.
    • Evolve role-based access control definitions into a high level DSL that ties privilege level to resource model and workflow actions
    • Plugin system supporting concept of "dispatch providers" to delegate to tools like mcollective, knife, func, fabric, PsExec and others for cross tool execution.
  • Ultimate Goal: Simple to use yet flexible enough to complement existing tool chains
Puppet-Rundeck resource provider for Rundeck

Example/Musings on using Rundeck, Puppet, Jenkins, Fabric together

Bamboo-RunDeck Plugin