Monday, March 25, 2013

Devops Toolchains - Rundeck and Chef

This is a write-up of a great presentation by Anthony Shortland at ChefCon 2012 called "Using Rundeck And Chef To Build DevOps ToolChain":
Design points
  1. Everything is code
  2. Everything is packaged
  3. Separate code and config
    1. Code and configuration flow at different rates
  4. Separate env-dependent attributes
    1. More volatile - flows much faster
    2. Separate packages
  5. Balance distributed vs local orchestration
    1. On the deploy side - decision to be made about how to approach orchestration
    2. Distributed
      1. Network level coordinatinon
      2. Multi-box, off-box
      3. Coordinating rolling upgrades
      4. Pool of boxes
      5. Workflow captured separately, captured/encoded independent of environment, e.g. Rundeck, specify business/technical process to orechestrate in distributed manner divorced of environment
      6. Same template, same workflows meet the env-specific data/nodeset & get instantiated at runtime
    3. Local
      1. On-box, within given node
      2. Set of tasks to bring system to target state
      3. Modular automation - capture implementation/code in modules, move them around the network, e.g. chef cookbooks
    4. Separate concerns - met with separate tools fitting together in tool chain
  6. Resolve directed vs convergent orchestration
    1. Directed orchestration: 
      1. single node in network
      2. fire out commands in authoritative manner
      3. Continuous deploy / rolling upgrade - best met with directed orchestration
    2. Convergent orchestration:
      1. Rise of cloud/different design (e.g. chef)
      2. Fuzziness - room for environment to converge
      3. Good for scale / compliance
    3. Not either-or... need a solution that accommodates both 
  7. Integrate application and infrastructure provisioning
    1. "integrate build and deploy"
    2. Want a systemic solution
    3. Single orchestrated provisioning process
    4. Moving away from static infra - we need infra and app up quickly
  8. Design for flow not the organisation
    1. Subordinate organisational differences/divisions - forget those requirements/constraints
    2. Build for business/process flow across the system


1466s - The tool for the job
  • There's often a number of tools to choose to do the job
  • Choose the job to fit the people in the org
  • Java guy = Ant/Maven
  • Ruby = Rake
  • Systems = Make
  • All languages can build RPMs: Ant/Mave/Rake/Make
  • Tool you choose may vary depending on who's consuming them

2294s - Environment-Specific Application-Level Attributes
  • Mapping databag into context
  • Package version and application state defined per environment within package's databag

2548s - Demo

Build console (Jenkins) does build orchestration, deploy console (Rundeck) does deploy orchestration, Chef does local orchestration.