Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Configuration Management Camp 2015

someara
February 03, 2015

Configuration Management Camp 2015

Ghent Belgium

someara

February 03, 2015
Tweet

More Decks by someara

Other Decks in Technology

Transcript

  1. Chef Reusability!
    Config Management Camp!
    Ghent, Belgium!
    February 2015

    View Slide

  2. Sean OMeara!
    [email protected]!
    @someara

    View Slide

  3. whoami

    View Slide

  4. Part 1

    View Slide

  5. Things that are true

    View Slide

  6. New Chef users
    expect community
    cookbooks to
    just work

    View Slide

  7. Especially the Chef
    maintained cookbooks

    View Slide

  8. This is not the current
    state of things

    View Slide

  9. This leads to sadness

    View Slide

  10. We must repair it

    View Slide

  11. People copy patterns

    View Slide

  12. The status quo cannot
    be allowed to continue

    View Slide

  13. Common pain points
    https://www.flickr.com/photos/kwl/4595324641

    View Slide

  14. Platform and version
    support

    View Slide

  15. Weak scoping

    View Slide

  16. No standard interface

    View Slide

  17. Compilation phase work

    View Slide

  18. Needing chef-rewind

    View Slide

  19. Attributes and precedence

    View Slide

  20. Pattern proliferation

    View Slide

  21. The path out of the darkness
    https://www.flickr.com/photos/[email protected]/15864687537

    View Slide

  22. Change how cookbooks
    are written

    View Slide

  23. systems
    beliefs! behaviors

    View Slide

  24. Standardize interfaces

    View Slide

  25. Eliminate the pain points

    View Slide

  26. Focus on resources

    View Slide

  27. Make it super easy!
    to write resources

    View Slide

  28. Ship resources for ALL
    THE THINGS

    View Slide

  29. Copy better patterns

    View Slide

  30. Make it fucking
    delightful

    View Slide

  31. View Slide

  32. Part 2

    View Slide

  33. Simple design patterns
    https://www.flickr.com/photos/pollock/4172865252

    View Slide

  34. View Slide

  35. View Slide

  36. You just separated data
    from code

    View Slide

  37. You also just built an
    interface

    View Slide

  38. Complex design patterns
    https://www.flickr.com/photos/alanosaur/6417040565

    View Slide

  39. View Slide

  40. View Slide

  41. This is where things
    get weird

    View Slide

  42. amazon
    debian-6
    debian-7
    ubuntu-10.04
    ubuntu-12.04
    ubuntu-14.04
    centos-5
    centos-6
    centos-7
    freebsd-9
    freebsd-10

    View Slide

  43. Debconf!
    Docker!
    LaunchD!
    Runit!
    SMF!
    Simple!
    SystemD!
    Sysvinit!
    Upstart!
    Windows Services

    View Slide

  44. There is a large amount
    of variation between
    software versions

    View Slide

  45. There is an insane amount
    variation across platforms

    View Slide

  46. These differences need
    to be handled
    somewhere

    View Slide

  47. Early techniques did
    everything in the recipe

    View Slide

  48. data
    resource
    pattern

    View Slide

  49. Later techniques
    focused on isolation

    View Slide

  50. Resource pattern
    isolation

    View Slide

  51. View Slide

  52. private
    recipes by
    convention

    View Slide

  53. Resource data isolation

    View Slide

  54. View Slide

  55. View Slide

  56. We now have decision
    logic in our interface

    View Slide

  57. Default values often
    need to be computed

    View Slide

  58. Doing this in the
    interface leads to
    sorrow

    View Slide

  59. View Slide

  60. We need a better way

    View Slide

  61. Consumption Patterns
    https://www.flickr.com/photos/ektogamat/2578779839

    View Slide

  62. View Slide

  63. View Slide

  64. View Slide

  65. View Slide

  66. Why resources are best
    https://www.flickr.com/photos/cross_stitch_ninja/4932950637

    View Slide

  67. node attributes
    roles
    environments
    databags
    are nice to haves

    View Slide

  68. They drive data about
    resources

    View Slide

  69. Resources are
    fundamental

    View Slide

  70. Resources are strongly
    scoped

    View Slide

  71. Resources have a
    standardized interface

    View Slide

  72. Resources have types,
    names, and parameters

    View Slide

  73. Type

    View Slide

  74. Name

    View Slide

  75. Parameters

    View Slide

  76. Resources have
    identities

    View Slide

  77. View Slide

  78. Resource can see each
    other

    View Slide

  79. Promise to
    talk

    View Slide

  80. Promise to listen

    View Slide

  81. Resource behave the
    same across platforms

    View Slide

  82. View Slide

  83. View Slide

  84. View Slide

  85. Resource can have
    multiple providers

    View Slide

  86. View Slide

  87. Writing simple resources

    View Slide

  88. yum

    View Slide


  89. View Slide

  90. Writing complex resources

    View Slide

  91. mysql
    httpd

    View Slide


  92. View Slide

  93. fin

    View Slide