Transcript
Page 1: TXLF: Chef- Software Defined Infrastructure Today & Tomorrow
Page 2: TXLF: Chef- Software Defined Infrastructure Today & Tomorrow

Chef: Software Defined Infrastructure Today & TomorrowMatt Ray TXLF June 14, 2014

Page 3: TXLF: Chef- Software Defined Infrastructure Today & Tomorrow

Introductions• Matt Ray

• Director of Partner Integration at Chef

[email protected]

• mattray GitHub|IRC|Twitter

Page 4: TXLF: Chef- Software Defined Infrastructure Today & Tomorrow

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

Complexity

4

Page 5: TXLF: Chef- Software Defined Infrastructure Today & Tomorrow

Items of Manipulation (Resources)• Networking • Files • Directories • Symlinks • Mounts • Registry Keys • Powershell Scripts

• Users • Groups • Packages • Services • Filesystems • and so much more

5

Page 6: TXLF: Chef- Software Defined Infrastructure Today & Tomorrow

Application

A tale of growth...

6

Page 7: TXLF: Chef- Software Defined Infrastructure Today & Tomorrow

Application

Application Database

Add a database

7

Page 8: TXLF: Chef- Software Defined Infrastructure Today & Tomorrow

Application

App Databases

Make database redundant

8

Page 9: TXLF: Chef- Software Defined Infrastructure Today & Tomorrow

App Servers

App Databases

Application server redundancy

9

Page 10: TXLF: Chef- Software Defined Infrastructure Today & Tomorrow

App LB

App Servers

App Databases

Add a load balancer

10

Page 11: TXLF: Chef- Software Defined Infrastructure Today & Tomorrow

App LBs

App Servers

App Databases

Webscale!

11

Page 12: TXLF: Chef- Software Defined Infrastructure Today & Tomorrow

App LBs

App Servers

App DB Cache

App DBs

Now we need a caching layer

12

Page 13: TXLF: Chef- Software Defined Infrastructure Today & Tomorrow

App LBs

App Servers

App DB Cache

App DBs

Infrastructure has a Topology

13

Page 14: TXLF: Chef- Software Defined Infrastructure Today & Tomorrow

Round Robin DNS

App Servers

App DB Cache

App DBs

Floating IP?

Your Infrastructure is a Snowflake

14

Page 15: TXLF: Chef- Software Defined Infrastructure Today & Tomorrow

App LBs

App Servers

< Shiny!

DB slaves

Cache

DB Cache

DBs

Complexity Increases Quickly

Are we monitoring??

15

Page 16: TXLF: Chef- Software Defined Infrastructure Today & Tomorrow

App LBs

App Servers

DB slaves

Cache

DB Cache

DBs

...and change happens!

16

Page 17: TXLF: Chef- Software Defined Infrastructure Today & Tomorrow

App LBs

App Servers

DB slaves

Cache

DB Cache

DBs

...and change happens!

Add a Central Log Host

Central Log Host

17

Page 18: TXLF: Chef- Software Defined Infrastructure Today & Tomorrow

App LBs

App Servers

DB slaves

Cache

DB Cache

DBs

...and change happens!

Add a Central Log Host!

!

Update syslog.conf on

all Nodes

Central Log Host

18

Page 19: TXLF: Chef- Software Defined Infrastructure Today & Tomorrow

Chef Solves This Problem• But you already

guessed that, didn’t you?

19

Page 20: TXLF: Chef- Software Defined Infrastructure Today & Tomorrow

Chef is Infrastructure as Code• Programmatically

provision and configure components

http://www.flickr.com/photos/louisb/4555295187/

20

Page 21: TXLF: Chef- Software Defined Infrastructure Today & Tomorrow

Chef is Infrastructure as Code• Treat like any other

code base

http://www.flickr.com/photos/louisb/4555295187/

21

Page 22: TXLF: Chef- Software Defined Infrastructure Today & Tomorrow

Chef is Infrastructure as Code• Reconstruct business

from code repository, data backups, and compute resources

http://www.flickr.com/photos/louisb/4555295187/

22

Page 23: TXLF: Chef- Software Defined Infrastructure Today & Tomorrow

Chef is Infrastructure as Code• Programmatically

provision and configure components

• Treat like any other code base

• Reconstruct business from code repository, data backup, and compute resourceshttp://www.flickr.com/photos/louisb/4555295187/

23

Page 24: TXLF: Chef- Software Defined Infrastructure Today & Tomorrow

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

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

version control

24

Page 25: TXLF: Chef- Software Defined Infrastructure Today & Tomorrow

Declarative 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

25

Page 26: TXLF: Chef- Software Defined Infrastructure Today & Tomorrow

How does it work?

http://i3.kym-cdn.com/photos/images/original/000/046/123/magnets.jpg

Page 27: TXLF: Chef- Software Defined Infrastructure Today & Tomorrow

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

27

Page 28: TXLF: Chef- Software Defined Infrastructure Today & Tomorrow

Their Infrastructure

OrganizationsMy Infrastructure Your Infrastructure

28

Page 29: TXLF: Chef- Software Defined Infrastructure Today & Tomorrow

EnvironmentsDevelopment Staging Production

29

Page 30: TXLF: Chef- Software Defined Infrastructure Today & Tomorrow

Environments Define Policy• Environments may include data attributes necessary

for configuring your infrastructure, e.g. • 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

30

Page 31: TXLF: Chef- Software Defined Infrastructure Today & Tomorrow

RolesLoad Balancers

Application Servers

DB Cache

Database

31

Page 32: TXLF: Chef- Software Defined Infrastructure Today & Tomorrow

Roles Define Policy• Roles may include an ordered list of Chef

configuration files that should be applied • This list is called a Run List • Order is always important in the Run List

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

32

Page 33: TXLF: Chef- Software Defined Infrastructure Today & Tomorrow

Nodes

33

Page 34: TXLF: Chef- Software Defined Infrastructure Today & Tomorrow

Node• Each Node will

• Belong to one Organization • Belong to one Environment • Have zero or more Roles

34

Page 35: TXLF: Chef- Software Defined Infrastructure Today & Tomorrow

Nodes Adhere to Policy• The chef-client application runs on each node, which

• Gathers the current system configuration of the node

• Downloads the desired system configuration policies from the Chef server for that node

• Configures the node such that it adheres to those policies

35

Page 36: TXLF: Chef- Software Defined Infrastructure Today & Tomorrow

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

36

Page 37: TXLF: Chef- Software Defined Infrastructure Today & Tomorrow

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

37

Page 38: TXLF: Chef- Software Defined Infrastructure Today & Tomorrow

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

38

Page 39: TXLF: Chef- Software Defined Infrastructure Today & Tomorrow

package "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 => true!end

Example Recipe

Page 40: TXLF: Chef- Software Defined Infrastructure Today & Tomorrow

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/

40

Page 41: TXLF: Chef- Software Defined Infrastructure Today & Tomorrow

Run List

Node

Enterprise Chef

chef-client

What policy should I follow?

41

Page 42: TXLF: Chef- Software Defined Infrastructure Today & Tomorrow

Run List

Node

Enterprise Chef

chef-client

What policy should I follow?

"recipe[ntp::client]" "recipe[users]"

"role[webserver]"42

Page 43: TXLF: Chef- Software Defined Infrastructure Today & Tomorrow

Run List

Enterprise Chef

chef-client

What policy should I follow?

"recipe[ntp::client]" "recipe[users]"

"role[webserver]"

43

Page 44: TXLF: Chef- Software Defined Infrastructure Today & Tomorrow

Run List Specifies Policy• The Run List is an ordered 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

44

Page 45: TXLF: Chef- Software Defined Infrastructure Today & Tomorrow

Search• Search for nodes with Roles • Find Topology Data !

• IP addresses • Hostnames • FQDNs

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

Page 46: TXLF: Chef- Software Defined Infrastructure Today & Tomorrow

Search for Nodespool_members = search("node","role:webserver")!!

template "/etc/haproxy/haproxy.cfg" do! source "haproxy-app_lb.cfg.erb"! owner "root"! group "root"! mode 0644! variables :pool_members => pool_members.uniq! notifies :restart, "service[haproxy]"!end

46

Page 47: TXLF: Chef- Software Defined Infrastructure Today & Tomorrow

Search for Nodespool_members = search("node","role:webserver")!!

template "/etc/haproxy/haproxy.cfg" do! source "haproxy-app_lb.cfg.erb"! owner "root"! group "root"! mode 0644! variables :pool_members => pool_members.uniq! notifies :restart, "service[haproxy]"!end

47

Page 48: TXLF: Chef- Software Defined Infrastructure Today & Tomorrow

Pass results into Templates# Set up application listeners here.!

listen application 0.0.0.0:80! balance roundrobin! <% @pool_members.each do |member| -%>! server <%= member[:hostname] %> <%= member[:ipaddress] %>:> weight 1 maxconn 1 check! <% end -%>!<% if node["haproxy"]["enable_admin"] -%>!listen admin 0.0.0.0:22002! mode http! stats uri /!<% end -%>

48

Page 49: TXLF: Chef- Software Defined Infrastructure Today & Tomorrow

Pass results into Templates# Set up application listeners here.!

listen application 0.0.0.0:80! balance roundrobin! <% @pool_members.each do |member| -%>! server <%= member[:hostname] %> <%= member[:ipaddress] %>:> weight 1 maxconn 1 check! <% end -%>!<% if node["haproxy"]["enable_admin"] -%>!listen admin 0.0.0.0:22002! mode http! stats uri /!<% end -%>

49

Page 50: TXLF: Chef- Software Defined Infrastructure Today & Tomorrow

# Set up application listeners here.!

listen application 0.0.0.0:80! balance roundrobin! <% @pool_members.each do |member| -%>! server <%= member[:hostname] %> <%= member[:ipaddress] %>:> weight 1 maxconn 1 check! <% end -%>!<% if node["haproxy"]["enable_admin"] -%>!listen admin 0.0.0.0:22002! mode http! stats uri /!<% end -%>

Pass results into Templates

50

Page 51: TXLF: Chef- Software Defined Infrastructure Today & Tomorrow

Jboss App

Memcache

Postgres Slaves

Postgres Master

NagiosGraphite

So when this...

51

Page 52: TXLF: Chef- Software Defined Infrastructure Today & Tomorrow

Jboss App

Memcache

Postgres Slaves

Postgres Master

NagiosGraphite

...becomes this

52

Page 53: TXLF: Chef- Software Defined Infrastructure Today & Tomorrow

Memcache

Postgres Slaves

Postgres Master

NagiosGraphite

!!! !!

Jboss App

Memcache

Postgres Slaves

Postgres Master

NagiosGraphite

...this can happen automatically

53

Page 54: TXLF: Chef- Software Defined Infrastructure Today & Tomorrow

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

54

Page 55: TXLF: Chef- Software Defined Infrastructure Today & Tomorrow

Which Operating Systems?• Many supported

platforms and architectures

• Relatively easy to port • Omnibus-Chef

• AIX, Arch, Fedora, Gentoo, OmniOS, OpenBSD, Rasbian, SmartOS and more

55

Page 56: TXLF: Chef- Software Defined Infrastructure Today & Tomorrow

The Chef Community• Apache License, Version 2.0 • Thousands of Individual and Corporate contributors. • Thousands of cookbooks available from the

community • http://community.opscode.com

Page 57: TXLF: Chef- Software Defined Infrastructure Today & Tomorrow

The Chef API and Server• HTTPS, RESTful API w/ JSON, RSA key auth • Infrastructure data store such as node data • Environments • Search Service • Data bags • SSH and Push jobs

http://www.flickr.com/photos/core-materials/4419853626/sizes/o/in/photostream/

Page 58: TXLF: Chef- Software Defined Infrastructure Today & Tomorrow

knife

Page 59: TXLF: Chef- Software Defined Infrastructure Today & Tomorrow

knife - with the Chef Server• knife node

• create / edit / delete • list

• knife cookbook ... • knife role ... • knife environment ...

59

Page 60: TXLF: Chef- Software Defined Infrastructure Today & Tomorrow

knife - with clouds• knife azure

• knife cloudstack

• knife do

• knife ec2

• knife gce

• knife hp

• knife openstack

• knife rackspace

• knife vcloud

• knife vsphere

• ...and many others

60

Page 61: TXLF: Chef- Software Defined Infrastructure Today & Tomorrow

Virtualization and Containers?• Docker • Hyper-V • KVM • LXC • OpenVZ • Vagrant

• Virtualbox • VMware • Xen • Zones

61

Page 62: TXLF: Chef- Software Defined Infrastructure Today & Tomorrow

Test Kitchen• Integration testing for your

infrastructure code • Tests your cookbooks on all

the supported platforms with “real” machines

62

Page 63: TXLF: Chef- Software Defined Infrastructure Today & Tomorrow

Desktop, Virtualization & Cloud

• Vagrant

• VMware

• CloudStack

• Eucalyptus

• OpenStack

• bare metal

• AWS

• Rackspace

• HP

• Google

• Azure

• many others

Page 64: TXLF: Chef- Software Defined Infrastructure Today & Tomorrow

• AWS

• Rackspace

• HP

• Google

• Azure

• many others

Desktop, Virtualization & Cloud

• Vagrant

• VMware

• CloudStack

• Eucalyptus

• OpenStack

• bare metal

Page 65: TXLF: Chef- Software Defined Infrastructure Today & Tomorrow

How about Storage?• Ceph • EMC • Gluster • NetApp • Nexenta • and more

65

Page 66: TXLF: Chef- Software Defined Infrastructure Today & Tomorrow

What about Networking?• Routers and switches • Load balancers • Firewalls • SDN

66

Page 67: TXLF: Chef- Software Defined Infrastructure Today & Tomorrow
Page 68: TXLF: Chef- Software Defined Infrastructure Today & Tomorrow

Chef Metal• Chef recipes for deploying infrastructure • Libraries for repeatably creating machines and

deployments with Chef primitives • Bootstrappers for many infrastructure types • Provisioner nodes, remote command execution

68

Page 69: TXLF: Chef- Software Defined Infrastructure Today & Tomorrow

Chef Metal: Providers• Cloud

• Digital Ocean, EC2, Fog, OpenStack • Virtualization

• Vagrant (VirtualBox, Fusion), vSphere • Containers

• Docker & LXC • SSH • PXE in progress

69

Page 70: TXLF: Chef- Software Defined Infrastructure Today & Tomorrow

Chef Metal: Example Recipemachine 'mario' do! recipe 'mydb'! tag 'mydb_master'!end!num_webservers = 1!1.upto(num_webservers) do |i|! machine "luigi#{i}" do! recipe 'mywebapp'! end!end

70

Page 71: TXLF: Chef- Software Defined Infrastructure Today & Tomorrow

What does this all mean?•Every infrastructure is a unique snowflake •Infrastructure as Code brings transparency and traceability •Test your deployments at every stage •Use the same infrastructure code for wherever you want to deploy

Page 72: TXLF: Chef- Software Defined Infrastructure Today & Tomorrow

Austin, Texas• Lots of Chef users in Austin • Austin Chef Meetup

• Wednesday June 18, Maudies Triangle 8:30-10:30am

• Austin DevOps Meetup • www.meetup.com/austin-devops/

• Agile Austin DevOps • Cloud, Docker, OpenStack, etc..

72

Page 73: TXLF: Chef- Software Defined Infrastructure Today & Tomorrow

Thanks!Matt Ray [email protected] @mattray


Recommended