Your SlideShare is downloading. ×
Puppet at janrain
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Introducing the official SlideShare app

Stunning, full-screen experience for iPhone and Android

Text the download link to your phone

Standard text messaging rates apply

Puppet at janrain

1,571
views

Published on

James Loope, Janrain

James Loope, Janrain


0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,571
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
21
Comments
0
Likes
2
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Puppet at Janrain James Loope
  • 2. In the beginning...
  • 3. Awesomeness
  • 4. More awesomeness
  • 5. Less awesome
  • 6. Opposite of awesome
  • 7. Totally awesome
  • 8. Wagons Ho!
  • 9. Were not in Kansas Anymore
  • 10. On demand resources! Features! APIs!
  • 11. Impermanence! Competition! APIs!
  • 12. Sometimes you have to let go its not your puppy, its just an instance
  • 13. Persistence does not make it better Entropy will get you in the end
  • 14. Do it right the first time, make it repeatable
  • 15. Puppet keeps us saneclass apps::zookeeper-server ( $nodes ) { package { "zookeeperd" : ensure => installed } service { "zookeeper": ensure => running, enable => true, hasstatus => true, pattern => "zookeeper", require => Package["zookeeperd"] } file { "/etc/zookeeper/conf/zoo.cfg" : content => template("apps/zookeeper/zoo.cfg.erb") }}
  • 16. Version control lets us work together>git branch -rorigin/HEAD -> origin/masterorigin/developmentorigin/master
  • 17. Environments keep us safe development > staging > production
  • 18. Scary APIs?
  • 19. Simple tools keep us efficient> createaserver.rb -a ami-e2af508b -n test1.janrain.com -SFog launches an Ubuntu base amiserver = compute.servers.create(:image_id => options[:ami], :flavor_id =>options[:type], :groups => options[:groups], :user_data => puppet: conf: agent: server: puppet.janrain.com certname: "test1.janrain.com" environment: "development" pluginsync: true waitforcert: true
  • 20. ● Ubuntu cloud-init installs puppet ○ https://help.ubuntu.com/community/CloudInit ○ also: work around for provider prerequisite problem ● Puppet starts up and waits for signing ○ our utility signs the cert over the REST api ■ http://docs.puppetlabs.com/guides/rest_api.htmlcurl -i --cert ~/.puppetcred/puppet.crt --key ~/.puppetcred/puppet.key --cacert ~/.puppetcred/ca_crt.pemhttps://puppet.janrain.com/development/certificate_status/test1.janrain.com -H Content-Type: text/pson -X PUT --data{"desired_state":"signed"}
  • 21. ● Puppet starts up and installs our base from common modules ○ users ○ groups ○ ssh pubkeys ○ common apps ○ metrics and monitors ■ collectd ■ nagios ■ mcollective
  • 22. ● Puppet sets up the DNS ○ via REST API ○ http://dyn.com/dns/dynect-managed-dns/● Puppet manages our instance volumes with lvm ○ https://github.com/puppetlabs/puppet-lvm● Puppet deploys application code with vcsrepo ○ https://github.com/puppetlabs/puppet-vcsrepo
  • 23. Tadah!ssh test1.janrain.comWelcome to Ubuntu 11.04 (GNU/Linux 2.6.38-8-virtual i686)jloope@test1.janrain.com:~$
  • 24. The dashboard gives us insight
  • 25. Avoiding the Stampede ● Its hard to keep the PuppetMasters load predictable ● Puppetcommander ● Initiates runs in an orderly fashion ● Can be globally disabledhttps://github.com/puppetlabs/mcollective-plugins/tree/master/agent/puppetd/commander/
  • 26. Whats next?● External Node classifier● LXC Development Environment● Build => Bundle => Scale● Puppet and Zookeeper via Facter
  • 27. In conclusion