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

Like this? Share it with your network

Share
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
2,054
On Slideshare
2,054
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
21
Comments
0
Likes
1

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