Puppet at janrain

1,813 views
1,724 views

Published on

James Loope, Janrain

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

No Downloads
Views
Total views
1,813
On SlideShare
0
From Embeds
0
Number of Embeds
2
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

×