honeycutt garret expanded_intro_to_puppet_for_mailru

44
Expanded Introduction to Puppet рамках Форума технологий Mail.Ru 2012-04-24 Moscow, RU Garrett Honeycutt Professional Services Consultant [email protected] http://linkedin.com/in/garretthoneycutt

Upload: kuchinskaya

Post on 12-Jun-2015

187 views

Category:

Business


3 download

TRANSCRIPT

Page 1: Honeycutt garret expanded_intro_to_puppet_for_mailru

Expanded Introductionto Puppet

рамках Форума технологий Mail.Ru

2012-04-24Moscow, RU

Garrett HoneycuttProfessional Services Consultant

[email protected]://linkedin.com/in/garretthoneycutt

Page 2: Honeycutt garret expanded_intro_to_puppet_for_mailru

The one-off myth

Your systems are not beautiful snowflakes

photo from http://beesknees67.deviantart.com/

Page 3: Honeycutt garret expanded_intro_to_puppet_for_mailru

The one-off myth

• Only temporary

Page 4: Honeycutt garret expanded_intro_to_puppet_for_mailru

The one-off myth

• Only temporary

• Replicas for pre-production environments

Page 5: Honeycutt garret expanded_intro_to_puppet_for_mailru

The one-off myth

• Only temporary

• Replicas for pre-production environments

• Disaster recovery

Page 6: Honeycutt garret expanded_intro_to_puppet_for_mailru

Why?

Page 7: Honeycutt garret expanded_intro_to_puppet_for_mailru

Why?

• reduce entropy

Page 8: Honeycutt garret expanded_intro_to_puppet_for_mailru

Why?

• reduce entropy• disaster recovery

Page 9: Honeycutt garret expanded_intro_to_puppet_for_mailru

Why?

• reduce entropy• disaster recovery• change management

Page 10: Honeycutt garret expanded_intro_to_puppet_for_mailru

Why?

• reduce entropy• disaster recovery• change management• infrastructure as code

Page 11: Honeycutt garret expanded_intro_to_puppet_for_mailru

Text

Puppet Community Ecosystem

4,000 person mailing list

900 conversations a month750 people at all times in IRC

(dedicated channel)

Puppet DistributionBundled with major OS !

2500+ people contributing to documentation

and code

Puppet Community Active participation !

Puppet Contributors Framework enhancements !

300+ modules contributed to Puppet Forge

Page 12: Honeycutt garret expanded_intro_to_puppet_for_mailru

Financial

TechnologyEntertainmentWeb

Defense

Puppet is Pervasive

Page 13: Honeycutt garret expanded_intro_to_puppet_for_mailru

Puppet EnterpriseWhat it is:• Puppet and related components packaged and

integrated in one install:• Puppet• Puppet Master• Dashboard• Facter• Ruby• Apache• Passenger, etc.

Page 14: Honeycutt garret expanded_intro_to_puppet_for_mailru

Puppet Enterprise

• Fully QA’d stack of Puppet and dependencies• Simplified installation• Ease of maintenance• Pre-configured for scalability and performance• Predictable enhancement delivery• Enhanced enterprise class Support

Page 15: Honeycutt garret expanded_intro_to_puppet_for_mailru

How Puppet Works

Define: !"#$%&'(()#*+%,)-./0/#"1)%% ./23'/3)%45'%,)+"32%/%30/($%56%0)./#"52+$"(+%7)#8))2%0)+5'0-)+%8"#$"2%0)'+/7.)%95,'.)+:%;$)+)%95,'.)+%,)6"2)%45'0%"260/+#0'-#'0)%"2%"#+%,)+"0),%+#/#):

1

Simulate:%!"#$%#$"+%0)+5'0-)%% 30/($<%&'(()#%"+%'2"=')%"2%"#+%/7"."#4%#5%+"9'./#)%,)(.549)2#+<%)2/7."23%45'%#5%#)+#%-$/23)+%8"#$5'#%,"+0'(#"52%#5%45'0%"260/+#0'-#'0):

2

% Enforce:%&'(()#%-59(/0)+%45'0%% +4+#)9%#5%#$)%,)+"0),%+#/#)%/+%45'%,)6"2)%"#<%/2,%/'#59/#"-/..4%)2650-)+%"#%#5%#$)%,)+"0),%+#/#)%)2+'0"23%45'0%+4+#)9%"+%"2%-59(."/2-):

3

% Report: &'(()#%>/+$75/0,%0)(50#+%% #0/-?%0)./#"52+$"(+%7)#8))2%-59(52)2#+%/2,%/..%-$/23)+<%/..58"23%45'%#5%?))(%'(%8"#$%+)-'0"#4%/2,%-59(."/2-)%9/2,/#)+:%@2,%8"#$%#$)%5()2%@&A%45'%-/2%"2#)30/#)%&'(()#%8"#$%#$"0,%(/0#4%952"#50"23%#55.+:

4

>BCADB>C;@;B

EFDDBG;C;@;B

A;BD@;B%@G>%AGEDB@

CB%EHIBD@

JB

Page 16: Honeycutt garret expanded_intro_to_puppet_for_mailru

Multi Node

Use Puppet to create composable configurations and manage the enterprise infrastructure

Define Your Resources in Modules. ! "#$%!&'(()$*!+,'!-).#/)!+,'0!1,-'2)3!4+!/,-)!52633#.#56$#,/3*!3'5%!63!")4!7)08)0!,0!96$6463)*!622,:#/;!+,'!$,!-).#/)!0)26$#,/3%#(3!4)$:))/!0)3,'05)3!6/-!5,/.#;'0)!$%,'36/-3!,.!3)08)03!6$!,/5)<!

1

Assign resource relationships automatically.!! =,'!56/!$%)/!633#;/!6/-!-)(2,+!5,/.#;'06$#,/3!8#6!&'(()$!963%4,60-*!,0!:#$%!+,'0!,:/!5'3$,1#>)-!?@9A!$,,23<

Via Puppet Dashboard

CustomExternal Source

(CMDB, LDAP, etc.)

2

Reusable, composable configurations. !! "#$%!&'(()$!+,'!56/!0)B'3)!1,-'2)3!650,33!1'2$#(2)!/,-)3*!#/!:%6$)8)0!5,14#/6$#,/!+,'!/))-*!0)-'5#/;!0)()$#$#8)!$63C3!6/-!)2#1#/6$#/;!)00,0B(0,/)!350#($3<!

3

"DA!7DEFDE7 9GHGAG7D!7DEFDE7 G&&IJ?GHJKL!7DEFDE7

LK9D

LK9D LK9D

LK9D LK9D

LK9D

9GHGAG7D "DA!7DEFDE G&&!7DEFDE 7D?MEJH=Mod

ules

Page 17: Honeycutt garret expanded_intro_to_puppet_for_mailru

Puppet Assigns and Maintains a Node’s Desired Role

Page 18: Honeycutt garret expanded_intro_to_puppet_for_mailru

Managing Configuration Drift

Page 19: Honeycutt garret expanded_intro_to_puppet_for_mailru

How Puppet Manages Data Flow for Individual Nodes

Facts!"#$%&'#$(#%'($%&)*+,-.#'$'+/+$+0&1/$-/(#,2$/&$/"#$3144#/$5+(/#)6

1

Catalog3144#/$1(#($/"#$7+8/($/&8&*4-,#$+$9+/+,&:$/"+/(4#8-2-#($"&;$/"#$%&'#("&1,'$0#$8&%2-:1)#'6

2

Report8+%$+,(&$(#%'$'+/+$/&$/"-)'$4+)/<$/&&,(6

4

Report!"#$%&'#$)#4&)/($0+8=$/&$3144#/$-%'-8+/-%:$/"#$8&%2-:1)+/-&%$-($8&*4,#/#>$;"-8"$-($?-(-0,#$-%$/"#$3144#/$@+("0&+)'6

3

Report CollectorA3144#/$&)$B)'$4+)/<$/&&,C

Node

PuppetMaster

SSL secure encryption on all data transport

Page 20: Honeycutt garret expanded_intro_to_puppet_for_mailru

Facts

Automatically Maintained Asset

Inventory

Page 21: Honeycutt garret expanded_intro_to_puppet_for_mailru

architecture => i386domain => localfacterversion => 1.6.6fqdn => sliver.localhardwareisa => i386hardwaremodel => i386hostname => sliverid => ghinterfaces => lo0,gif0,stf0,en0,en1,fw0ipaddress => 192.168.101.185ipaddress_en1 => 192.168.101.185ipaddress_lo0 => 127.0.0.1is_virtual => falsekernel => Darwinkernelmajversion => 10.8kernelrelease => 10.8.0kernelversion => 10.8.0memoryfree => 102.80 MB

Page 22: Honeycutt garret expanded_intro_to_puppet_for_mailru

Custom Facts

Page 23: Honeycutt garret expanded_intro_to_puppet_for_mailru

How Puppet Manages Data Flow for Individual Nodes

Facts!"#$%&'#$(#%'($%&)*+,-.#'$'+/+$+0&1/$-/(#,2$/&$/"#$3144#/$5+(/#)6

1

Catalog3144#/$1(#($/"#$7+8/($/&8&*4-,#$+$9+/+,&:$/"+/(4#8-2-#($"&;$/"#$%&'#("&1,'$0#$8&%2-:1)#'6

2

Report8+%$+,(&$(#%'$'+/+$/&$/"-)'$4+)/<$/&&,(6

4

Report!"#$%&'#$)#4&)/($0+8=$/&$3144#/$-%'-8+/-%:$/"#$8&%2-:1)+/-&%$-($8&*4,#/#>$;"-8"$-($?-(-0,#$-%$/"#$3144#/$@+("0&+)'6

3

Report CollectorA3144#/$&)$B)'$4+)/<$/&&,C

Node

PuppetMaster

SSL secure encryption on all data transport

Page 24: Honeycutt garret expanded_intro_to_puppet_for_mailru

Catalog

• Automatically maintained comprehensive resource list

• Easily validated against compliance requirements prior to client configuration

Page 25: Honeycutt garret expanded_intro_to_puppet_for_mailru

How Puppet Manages Data Flow for Individual Nodes

Facts!"#$%&'#$(#%'($%&)*+,-.#'$'+/+$+0&1/$-/(#,2$/&$/"#$3144#/$5+(/#)6

1

Catalog3144#/$1(#($/"#$7+8/($/&8&*4-,#$+$9+/+,&:$/"+/(4#8-2-#($"&;$/"#$%&'#("&1,'$0#$8&%2-:1)#'6

2

Report8+%$+,(&$(#%'$'+/+$/&$/"-)'$4+)/<$/&&,(6

4

Report!"#$%&'#$)#4&)/($0+8=$/&$3144#/$-%'-8+/-%:$/"#$8&%2-:1)+/-&%$-($8&*4,#/#>$;"-8"$-($?-(-0,#$-%$/"#$3144#/$@+("0&+)'6

3

Report CollectorA3144#/$&)$B)'$4+)/<$/&&,C

Node

PuppetMaster

SSL secure encryption on all data transport

Page 26: Honeycutt garret expanded_intro_to_puppet_for_mailru

Reporting

• Comprehensive report of every change ever made, correlated to every resource being managed

• Easily validated against compliance requirements after reach run

Page 27: Honeycutt garret expanded_intro_to_puppet_for_mailru

Reporting

•http/https•log•store•tagmail

Page 28: Honeycutt garret expanded_intro_to_puppet_for_mailru

Reporting

Page 29: Honeycutt garret expanded_intro_to_puppet_for_mailru
Page 30: Honeycutt garret expanded_intro_to_puppet_for_mailru

What not How

Page 31: Honeycutt garret expanded_intro_to_puppet_for_mailru

What not how

Page 32: Honeycutt garret expanded_intro_to_puppet_for_mailru

Example Resource Types• cron

• exec

• file

• group

• host

• zfs

• mount

• package

• service

• sshkey

• user

Page 33: Honeycutt garret expanded_intro_to_puppet_for_mailru

Package-File-Service

Page 34: Honeycutt garret expanded_intro_to_puppet_for_mailru

File Serving

Page 35: Honeycutt garret expanded_intro_to_puppet_for_mailru

Templates

Page 36: Honeycutt garret expanded_intro_to_puppet_for_mailru

Templates - Advanced

Page 37: Honeycutt garret expanded_intro_to_puppet_for_mailru

Syntax Checking

Page 38: Honeycutt garret expanded_intro_to_puppet_for_mailru

Storeconfigs Ability to pass data between nodes, via a database acting as a proxy

• MySQL• SQLite3• PostgreSQL• Oracle

Page 39: Honeycutt garret expanded_intro_to_puppet_for_mailru

Storeconfigs

Page 40: Honeycutt garret expanded_intro_to_puppet_for_mailru

External Node Classifier

•Puppet Dashboard

•Your own CMDB

Page 41: Honeycutt garret expanded_intro_to_puppet_for_mailru

External Node Classifier

A script that takes $certname as an argument and outputs YAML to STDOUT

Page 42: Honeycutt garret expanded_intro_to_puppet_for_mailru

External Node Classifier

Page 43: Honeycutt garret expanded_intro_to_puppet_for_mailru

External Node Classifier

Page 44: Honeycutt garret expanded_intro_to_puppet_for_mailru

Expanded Introductionto Puppet

рамках Форума технологий Mail.Ru

2012-04-24Moscow, RU

Garrett HoneycuttProfessional Services Consultant

[email protected]://linkedin.com/in/garretthoneycutt