Using Chef to Manage
     Your Server
    Environments
About Blend
DevOps
             (Development / Operations)

Combines disciplines of
software development /
    QA with system
     administration
Building/Deploying
•   Manually

•   Build scripts

•   “I want to tell this computer how it should be set up, and
    let it do the rest”
Chef
•   Client/Server system for managing configuration

•   Declarative Recipes define end state instead of
    construction process

•   Idempotent - re-running script only causes changes to
    execute
No scripts - recipes
•   Cookbooks - modules for adding support for software

•   Recipes - contained by cookbooks, define server
    configuration, templates, etc
•   Attributes - configurable variables consumed by
    recipes
    •  Recipes provide defaults, can be overridden by server,
       role, or environment
    •  Some generated automatically

•   Data Bags - hold arbitrary configuration data
Parts and pieces
•   Chef Server - holds cookbooks and configuration for
    your organization

•   Chef Client - installed on servers via bootstrap process
    to execute recipes, solo and client flavors

•   Ohai - discovery utility that extracts automatic attributes
    from servers

•   Knife - command line tool for managing chef
Managing/Orchestration
•   Chef Solo - One server, no management, cookbooks go
    on server

•   Hosted Chef - Opscode-provided server, fine-grained
    permission controls

•   Chef Server - Self-hosted chef management server

•   Chef supports git, but git repo and servers don’t talk
Development cycle
•   Create cookbook

•   Develop/Test

•   Upload recipe to chef server

•   Execute on client servers
Blend Server Layout
/Sites
     .conf - all apache vhost configs symlink here
     [sitename]
         conf - apache and other configs
         htdocs - web app, usually apache root dir
         logs - apache and other logs
         deploy - deploy scripts
Development tools
•   Berkshelf - code gen and dependency management

•   Vagrant - automated testing environments
Linkses
•   Chef - community.opscode.com

•   Berkshelf - berkshelf.com

•   Vagrant - vagrantup.com

•   Epic Tutorial -
    vialstudios.com/guide-authoring-cookbooks.html
Questions?
           Joe Kepley
        Blend Interactive

    http://blendinteractive.com
http://github.com/blendinteractive
    http://joind.in/8102
            @joekepley

Managing Servers with Chef

  • 1.
    Using Chef toManage Your Server Environments
  • 2.
  • 3.
    DevOps (Development / Operations) Combines disciplines of software development / QA with system administration
  • 4.
    Building/Deploying • Manually • Build scripts • “I want to tell this computer how it should be set up, and let it do the rest”
  • 5.
    Chef • Client/Server system for managing configuration • Declarative Recipes define end state instead of construction process • Idempotent - re-running script only causes changes to execute
  • 6.
    No scripts -recipes • Cookbooks - modules for adding support for software • Recipes - contained by cookbooks, define server configuration, templates, etc • Attributes - configurable variables consumed by recipes • Recipes provide defaults, can be overridden by server, role, or environment • Some generated automatically • Data Bags - hold arbitrary configuration data
  • 7.
    Parts and pieces • Chef Server - holds cookbooks and configuration for your organization • Chef Client - installed on servers via bootstrap process to execute recipes, solo and client flavors • Ohai - discovery utility that extracts automatic attributes from servers • Knife - command line tool for managing chef
  • 8.
    Managing/Orchestration • Chef Solo - One server, no management, cookbooks go on server • Hosted Chef - Opscode-provided server, fine-grained permission controls • Chef Server - Self-hosted chef management server • Chef supports git, but git repo and servers don’t talk
  • 9.
    Development cycle • Create cookbook • Develop/Test • Upload recipe to chef server • Execute on client servers
  • 10.
    Blend Server Layout /Sites .conf - all apache vhost configs symlink here [sitename] conf - apache and other configs htdocs - web app, usually apache root dir logs - apache and other logs deploy - deploy scripts
  • 11.
    Development tools • Berkshelf - code gen and dependency management • Vagrant - automated testing environments
  • 12.
    Linkses • Chef - community.opscode.com • Berkshelf - berkshelf.com • Vagrant - vagrantup.com • Epic Tutorial - vialstudios.com/guide-authoring-cookbooks.html
  • 13.
    Questions? Joe Kepley Blend Interactive http://blendinteractive.com http://github.com/blendinteractive http://joind.in/8102 @joekepley

Editor's Notes

  • #4 - Automated releases - version control - Agile practices we know from dev can be used in server/config management
  • #5 Manual - tough to do same way twice, time consuming Build scripts - Brittle (tied to environment), hard to follow