Puppet at janrain
Upcoming SlideShare
Loading in...5
×
 

Like this? Share it with your network

Share

Puppet at janrain

on

  • 2,030 views

James Loope, Janrain

James Loope, Janrain

Statistics

Views

Total Views
2,030
Views on SlideShare
2,030
Embed Views
0

Actions

Likes
1
Downloads
21
Comments
0

0 Embeds 0

No embeds

Accessibility

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Puppet at janrain Presentation 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