61
Chef Fundamentals [email protected] Copyright (C) 2013 Opscode, Inc.

Chef Fundamentals Training Series Module 1: Overview of Chef

Embed Size (px)

Citation preview

Page 2: Chef Fundamentals Training Series Module 1: Overview of Chef

Introductions

Page 3: Chef Fundamentals Training Series Module 1: Overview of Chef

Nathen Harvey• Technical Community Manager at Opscode• Co-host of the Food Fight Show Podcast

• @nathenharvey

Page 4: Chef Fundamentals Training Series Module 1: Overview of Chef

Webinar Objectives and Style

Page 5: Chef Fundamentals Training Series Module 1: Overview of Chef

Multi-week Webinar Series• After completing of this webinar series you will be

able to• Automate common infrastructure tasks with Chef• Describe Chef’s architecture• Describe Chef’s various tools• Apply Chef’s primitives to solve your problems

Page 6: Chef Fundamentals Training Series Module 1: Overview of Chef

How to learn Chef• You bring the domain expertise about your business

and problems• Chef provides a framework for solving those

problems• Our job is to work together to teach you how to

express solutions to your problems with Chef

Page 7: Chef Fundamentals Training Series Module 1: Overview of Chef

Chef is a Language• Learning Chef is like learning the basics of a

language• 80% fluency will be reached very quickly• The remaining 20% just takes practice• The best way to learn Chef is to use Chef

Page 8: Chef Fundamentals Training Series Module 1: Overview of Chef

Questions & Answers• I’ll post objectives at the beginning of a section• Ask questions in the chat window when they come to

you• We’ll answer as many questions as we can at the

end of the session• The webinar will be recorded and you’ll be able to

watch the recording again.

Page 9: Chef Fundamentals Training Series Module 1: Overview of Chef

Agenda

Page 10: Chef Fundamentals Training Series Module 1: Overview of Chef

Topics• Overview of Chef• Workstation Setup• Test Node Setup• Dissecting your first Chef run• Introducing the Node object• Writing your first cookbook

Page 11: Chef Fundamentals Training Series Module 1: Overview of Chef

Topics• Setting attributes, cookbook metadata, templates• Idempotency, notifications, template variables • Roles• Using community cookbooks• Further Resources

Page 12: Chef Fundamentals Training Series Module 1: Overview of Chef

Overview of Chef

Page 13: Chef Fundamentals Training Series Module 1: Overview of Chef

Lesson Objectives• After completing the lesson, you will be able to

• Describe how Chef thinks about Infrastructure Automation• Define the following terms:

• Node• Resource• Recipe• Cookbook• Run List• Roles• Search

Page 14: Chef Fundamentals Training Series Module 1: Overview of Chef

http://www.flickr.com/photos/michaelheiss/3090102907/

Complexity

Page 15: Chef Fundamentals Training Series Module 1: Overview of Chef

Items of Manipulation (Resources)• Nodes• Networking• Files• Directories• Symlinks• Mounts

• Routes• Users• Groups• Packages• Services• Filesystems

Page 16: Chef Fundamentals Training Series Module 1: Overview of Chef

Application

A tale of growth...

Page 17: Chef Fundamentals Training Series Module 1: Overview of Chef

Application

Application Database

Add a database

Page 18: Chef Fundamentals Training Series Module 1: Overview of Chef

Application

App Databases

Make database redundant

Page 19: Chef Fundamentals Training Series Module 1: Overview of Chef

App Servers

App Databases

Application server redundancy

Page 20: Chef Fundamentals Training Series Module 1: Overview of Chef

App LB

App Servers

App Databases

Add a load balancer

Page 21: Chef Fundamentals Training Series Module 1: Overview of Chef

App LBs

App Servers

App Databases

Webscale!

Page 22: Chef Fundamentals Training Series Module 1: Overview of Chef

App LBs

App Servers

App DB Cache

App DBs

Now we need a caching layer

Page 23: Chef Fundamentals Training Series Module 1: Overview of Chef

App LBs

App Servers

App DB Cache

App DBs

Infrastructure has a Topology

Page 24: Chef Fundamentals Training Series Module 1: Overview of Chef

Round Robin DNS

App Servers

App DB Cache

App DBs

Floating IP?

Your Infrastructure is a Snowflake

Page 25: Chef Fundamentals Training Series Module 1: Overview of Chef

App LBs

App Servers

< Shiny!

DB slaves

Cache

DB Cache

DBs

Complexity Increases Quickly

Page 26: Chef Fundamentals Training Series Module 1: Overview of Chef

App LBs

App Servers

< Shiny!

DB slaves

Cache

DB Cache

DBs

Complexity Increases Quickly

Are we monitoring??

Page 27: Chef Fundamentals Training Series Module 1: Overview of Chef

Chef Solves This Problem• But you already

guessed that, didn’t you?™

Page 28: Chef Fundamentals Training Series Module 1: Overview of Chef

Managing Complexity• Organizations• Environments• Roles• Nodes• Recipes• Cookbooks• Search

Page 29: Chef Fundamentals Training Series Module 1: Overview of Chef

Their Infrastructure

OrganizationsMy Infrastructure Your Infrastructure

Page 30: Chef Fundamentals Training Series Module 1: Overview of Chef

Organizations• Completely independent tenants of Enterprise Chef• Share nothing with other organizations• May represent different

• Companies• Business Units• Departments

Page 31: Chef Fundamentals Training Series Module 1: Overview of Chef

EnvironmentsDevelopment Staging Production

Page 32: Chef Fundamentals Training Series Module 1: Overview of Chef

Environments• Model the life-stages of your applications• Every Organization starts with a single environment• Environments to reflect your patterns and workflow

• Development• Test• Staging• Production• etc.

Page 33: Chef Fundamentals Training Series Module 1: Overview of Chef

Environments Define Policy• Environments may include data attributes necessary

for configuring your infrastructure• The URL of your payment service’s API• The location of your package repository• The version of the Chef configuration files that

should be used

Page 34: Chef Fundamentals Training Series Module 1: Overview of Chef

RolesLoad Balancers

Application Servers

DB Cache

Database

Page 35: Chef Fundamentals Training Series Module 1: Overview of Chef

Roles• Roles represent the types of servers in your

infrastructure• Load Balancer• Application Server• Database Cache• Database• Monitoring

Page 36: Chef Fundamentals Training Series Module 1: Overview of Chef

Roles Define Policy• Roles may include a list of Chef configuration files

that should be applied.• We call this list a Run List

• Roles may include data attributes necessary for configuring your infrastructure• The port that the application server listens on• A list of applications that should be deployed

Page 37: Chef Fundamentals Training Series Module 1: Overview of Chef

Nodes

Page 38: Chef Fundamentals Training Series Module 1: Overview of Chef

Nodes• Nodes represent the servers in your infrastructure• Nodes may represent physical servers or virtual

servers• Nodes may represent hardware that you own or may

represent compute instances in a public or private cloud

Page 39: Chef Fundamentals Training Series Module 1: Overview of Chef

Node• Each Node will

• belong to one Organization• belong to one Environment• have zero or more Roles

Page 40: Chef Fundamentals Training Series Module 1: Overview of Chef

Nodes Adhere to Policy• An application, the chef-client, runs on each node• chef-client will

• gather current system configuration• download the desired system configuration from

the Chef server• configure the node such that it adheres to the

policy

Page 41: Chef Fundamentals Training Series Module 1: Overview of Chef

Chef is Infrastructure as Code• Programmatically

provision and configure components

• Treat like any other code base

• Reconstruct business from code repository, data backup, and bare metal resources.http://www.flickr.com/photos/louisb/4555295187/

Page 42: Chef Fundamentals Training Series Module 1: Overview of Chef

Configuration Code• Chef ensures each Node complies with the policy• Policy is determined by the configurations included

in each Node’s run list• Reduce management complexity through abstraction• Store the configuration of your infrastructure in

version control

Page 43: Chef Fundamentals Training Series Module 1: Overview of Chef

Delcaritive Interface to Resources• You define the policy in your Chef configuration• Your policy states what state each resource should

be in, but not how to get there• Chef-client will pull the policy from the Chef Server

and enforce the policy on the Node

Page 44: Chef Fundamentals Training Series Module 1: Overview of Chef

Resources• A Resource represents a piece of the system and its

desired state• A package that should be installed• A service that should be running• A file that should be generated• A cron job that should be configured• A user that should be managed• and more

Page 45: Chef Fundamentals Training Series Module 1: Overview of Chef

Resources in Recipes• Resources are the fundamental building blocks of

Chef configuration• Resources are gathered into Recipes• Recipes ensure the system is in the desired state

Page 46: Chef Fundamentals Training Series Module 1: Overview of Chef

Recipes• Configuration files that describe resources and their

desired state• Recipes can:

• Install and configure software components• Manage files• Deploy applications• Execute other recipes• and more

Page 47: Chef Fundamentals Training Series Module 1: Overview of Chef

Recipespackage "apache2"

template "/etc/apache2/apache2.conf" do source "apache2.conf.erb" owner "root" group "root" mode "0644" variables(:allow_override => "All") notifies :reload, "service[apache2]"end

service "apache2" do action [:enable,:start] supports :reload => trueend

Page 48: Chef Fundamentals Training Series Module 1: Overview of Chef

Cookbooks• Recipes are stored in

Cookbooks• Cookbooks contain recipes,

templates, files, custom resources, etc

• Code re-use and modularity

http://www.flickr.com/photos/shutterhacks/4474421855/

Page 49: Chef Fundamentals Training Series Module 1: Overview of Chef

Run List

Node

Enterprise Chef

chef-client

What policy should I follow?

Page 50: Chef Fundamentals Training Series Module 1: Overview of Chef

Run List

Node

Enterprise Chef

chef-client

What policy should I follow?

“recipe[ntp::client]”“recipe[users]”

“role[webserver]”

Page 51: Chef Fundamentals Training Series Module 1: Overview of Chef

Run List

Enterprise Chef

chef-client

What policy should I follow?

“recipe[ntp::client]”“recipe[users]”

“role[webserver]”

Page 52: Chef Fundamentals Training Series Module 1: Overview of Chef

Run Lists Specifies Policy• The Run List is a collection of policies that the Node

should follow.• Chef-client obtains the Run List from the Chef

Server• Chef-client ensures the Node complies with the

policy in the Run List

Page 53: Chef Fundamentals Training Series Module 1: Overview of Chef

Search• Search for nodes with Roles• Find Topology Data

• IP addresses• Hostnames• FQDNs

http://www.flickr.com/photos/kathycsus/2686772625

Page 54: Chef Fundamentals Training Series Module 1: Overview of Chef

Jboss App

Memcache

Postgres Slaves

Postgres Master

NagiosGraphite

So when this...

Page 55: Chef Fundamentals Training Series Module 1: Overview of Chef

Jboss App

Memcache

Postgres Slaves

Postgres Master

NagiosGraphite

...becomes this

Page 56: Chef Fundamentals Training Series Module 1: Overview of Chef

Memcache

Postgres Slaves

Postgres Master

NagiosGraphite

Jboss App

Memcache

Postgres Slaves

Postgres Master

NagiosGraphite

...this can happen automatically

Page 57: Chef Fundamentals Training Series Module 1: Overview of Chef

NagiosGraphite

NagiosGraphite

Memcache

Postgres Slaves

• Load balancer config

• Nagios host ping

• Nagios host ssh

• Nagios host HTTP

• Nagios host app health

• Graphite CPU

• Graphite Memory

• Graphite Disk

• Graphite SNMP

• Memcache firewall

• Postgres firewall

• Postgres authZ config

• 12+ resource changes for 1 node addition

Count the Resources

Jboss App

Page 58: Chef Fundamentals Training Series Module 1: Overview of Chef

Manage Complexity• Determine the desired state of your infrastructure• Identify the Resources required to meet that state• Gather the Resources into Recipes• Compose a Run List from Recipes and Roles• Apply a Run List to each Node in your Environment• Your infrastructure adheres to the policy modeled in

Chef

Page 59: Chef Fundamentals Training Series Module 1: Overview of Chef

Configuration Drift• Configuration Drift happens when:

• Your infrastructure requirements change• The configuration of a server falls out of policy

• Chef makes it easy to manage• Model the new requirements in your Chef

configuration files• Run the chef-client to enforce your policies

Page 60: Chef Fundamentals Training Series Module 1: Overview of Chef

Recap• In today’s webinar, we have

• Described how Chef thinks about Infrastructure Automation• Defined the following terms:

• Node• Resource• Recipe• Cookbook• Run List• Roles• Search

Page 61: Chef Fundamentals Training Series Module 1: Overview of Chef

What Questions Do You Have?Nathen HarveyTechnical Community Manager, [email protected]@nathenharvey