Puppet at Janrain                    James Loope
In the beginning...
Awesomeness
More awesomeness
Less awesome
Opposite of awesome
Totally awesome
Wagons Ho!
Were not in Kansas     Anymore
On demand resources!     Features!       APIs!
Impermanence! Competition!    APIs!
Sometimes you have to let go   its not your puppy, its just an instance
Persistence does not make it better         Entropy will get you in the end
Do it right the first time, make it            repeatable
Puppet keeps us saneclass apps::zookeeper-server ( $nodes ) {   package { "zookeeperd" : ensure => installed }    service ...
Version control lets us work together>git branch -rorigin/HEAD -> origin/masterorigin/developmentorigin/master
Environments keep us safe       development > staging > production
Scary APIs?
Simple tools keep us efficient> createaserver.rb -a ami-e2af508b -n test1.janrain.com -SFog launches an Ubuntu base amiser...
● Ubuntu cloud-init installs puppet    ○ https://help.ubuntu.com/community/CloudInit    ○ also: work around for provider p...
● Puppet starts up and installs our base from  common modules   ○ users   ○ groups   ○ ssh pubkeys   ○ common apps   ○ met...
● Puppet sets up the DNS   ○ via REST API   ○ http://dyn.com/dns/dynect-managed-dns/● Puppet manages our instance volumes ...
Tadah!ssh test1.janrain.comWelcome to Ubuntu 11.04 (GNU/Linux 2.6.38-8-virtual i686)jloope@test1.janrain.com:~$
The dashboard gives us insight
Avoiding the Stampede  ● Its hard to keep the PuppetMasters load predictable  ● Puppetcommander  ● Initiates runs in an or...
Whats next?● External Node classifier● LXC Development Environment● Build => Bundle => Scale● Puppet and Zookeeper via Fac...
In conclusion
Puppet at janrain
Upcoming SlideShare
Loading in...5
×

Puppet at janrain

1,626

Published on

James Loope, Janrain

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

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

No notes for slide

Puppet at janrain

  1. 1. Puppet at Janrain James Loope
  2. 2. In the beginning...
  3. 3. Awesomeness
  4. 4. More awesomeness
  5. 5. Less awesome
  6. 6. Opposite of awesome
  7. 7. Totally awesome
  8. 8. Wagons Ho!
  9. 9. Were not in Kansas Anymore
  10. 10. On demand resources! Features! APIs!
  11. 11. Impermanence! Competition! APIs!
  12. 12. Sometimes you have to let go its not your puppy, its just an instance
  13. 13. Persistence does not make it better Entropy will get you in the end
  14. 14. Do it right the first time, make it repeatable
  15. 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. 16. Version control lets us work together>git branch -rorigin/HEAD -> origin/masterorigin/developmentorigin/master
  17. 17. Environments keep us safe development > staging > production
  18. 18. Scary APIs?
  19. 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. 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. 21. ● Puppet starts up and installs our base from common modules ○ users ○ groups ○ ssh pubkeys ○ common apps ○ metrics and monitors ■ collectd ■ nagios ■ mcollective
  22. 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. 23. Tadah!ssh test1.janrain.comWelcome to Ubuntu 11.04 (GNU/Linux 2.6.38-8-virtual i686)jloope@test1.janrain.com:~$
  24. 24. The dashboard gives us insight
  25. 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. 26. Whats next?● External Node classifier● LXC Development Environment● Build => Bundle => Scale● Puppet and Zookeeper via Facter
  27. 27. In conclusion
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×