Puppet at janrain
-
Upload
puppet-labs -
Category
Technology
-
view
1.607 -
download
0
description
Transcript of Puppet at janrain
![Page 1: Puppet at janrain](https://reader033.fdocuments.us/reader033/viewer/2022060107/554bb882b4c90530298b49b2/html5/thumbnails/1.jpg)
Puppet at Janrain
James Loope
![Page 2: Puppet at janrain](https://reader033.fdocuments.us/reader033/viewer/2022060107/554bb882b4c90530298b49b2/html5/thumbnails/2.jpg)
In the beginning...
![Page 3: Puppet at janrain](https://reader033.fdocuments.us/reader033/viewer/2022060107/554bb882b4c90530298b49b2/html5/thumbnails/3.jpg)
Awesomeness
![Page 4: Puppet at janrain](https://reader033.fdocuments.us/reader033/viewer/2022060107/554bb882b4c90530298b49b2/html5/thumbnails/4.jpg)
More awesomeness
![Page 5: Puppet at janrain](https://reader033.fdocuments.us/reader033/viewer/2022060107/554bb882b4c90530298b49b2/html5/thumbnails/5.jpg)
Less awesome
![Page 6: Puppet at janrain](https://reader033.fdocuments.us/reader033/viewer/2022060107/554bb882b4c90530298b49b2/html5/thumbnails/6.jpg)
Opposite of awesome
![Page 7: Puppet at janrain](https://reader033.fdocuments.us/reader033/viewer/2022060107/554bb882b4c90530298b49b2/html5/thumbnails/7.jpg)
Totally awesome
![Page 8: Puppet at janrain](https://reader033.fdocuments.us/reader033/viewer/2022060107/554bb882b4c90530298b49b2/html5/thumbnails/8.jpg)
Wagons Ho!
![Page 9: Puppet at janrain](https://reader033.fdocuments.us/reader033/viewer/2022060107/554bb882b4c90530298b49b2/html5/thumbnails/9.jpg)
We're not in Kansas Anymore
![Page 10: Puppet at janrain](https://reader033.fdocuments.us/reader033/viewer/2022060107/554bb882b4c90530298b49b2/html5/thumbnails/10.jpg)
On demand resources!
Features!
APIs!
![Page 11: Puppet at janrain](https://reader033.fdocuments.us/reader033/viewer/2022060107/554bb882b4c90530298b49b2/html5/thumbnails/11.jpg)
Impermanence!
Competition!
APIs!
![Page 12: Puppet at janrain](https://reader033.fdocuments.us/reader033/viewer/2022060107/554bb882b4c90530298b49b2/html5/thumbnails/12.jpg)
Sometimes you have to let go
it's not your puppy, it's just an instance
![Page 13: Puppet at janrain](https://reader033.fdocuments.us/reader033/viewer/2022060107/554bb882b4c90530298b49b2/html5/thumbnails/13.jpg)
Persistence does not make it better
Entropy will get you in the end
![Page 14: Puppet at janrain](https://reader033.fdocuments.us/reader033/viewer/2022060107/554bb882b4c90530298b49b2/html5/thumbnails/14.jpg)
Do it right the first time, make it repeatable
![Page 15: Puppet at janrain](https://reader033.fdocuments.us/reader033/viewer/2022060107/554bb882b4c90530298b49b2/html5/thumbnails/15.jpg)
Puppet keeps us sane
class 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") }}
![Page 16: Puppet at janrain](https://reader033.fdocuments.us/reader033/viewer/2022060107/554bb882b4c90530298b49b2/html5/thumbnails/16.jpg)
Version control lets us work together
>git branch -r origin/HEAD -> origin/master origin/development origin/master
![Page 17: Puppet at janrain](https://reader033.fdocuments.us/reader033/viewer/2022060107/554bb882b4c90530298b49b2/html5/thumbnails/17.jpg)
Environments keep us safe
development > staging > production
![Page 18: Puppet at janrain](https://reader033.fdocuments.us/reader033/viewer/2022060107/554bb882b4c90530298b49b2/html5/thumbnails/18.jpg)
Scary API's?
![Page 19: Puppet at janrain](https://reader033.fdocuments.us/reader033/viewer/2022060107/554bb882b4c90530298b49b2/html5/thumbnails/19.jpg)
Simple tools keep us efficient
> createaserver.rb -a ami-e2af508b -n test1.janrain.com -S
Fog launches an Ubuntu base ami
server = 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
![Page 20: Puppet at janrain](https://reader033.fdocuments.us/reader033/viewer/2022060107/554bb882b4c90530298b49b2/html5/thumbnails/20.jpg)
● 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.html
curl -i --cert ~/.puppetcred/puppet.crt --key ~/.puppetcred/puppet.key --cacert ~/.puppetcred/ca_crt.pem https://puppet.janrain.com/development/certificate_status/test1.janrain.com -H 'Content-Type: text/pson' -X PUT --data '{"desired_state":"signed"}'
![Page 21: Puppet at janrain](https://reader033.fdocuments.us/reader033/viewer/2022060107/554bb882b4c90530298b49b2/html5/thumbnails/21.jpg)
● Puppet starts up and installs our base from common modules○ users○ groups○ ssh pubkeys○ common apps○ metrics and monitors
■ collectd■ nagios■ mcollective
![Page 22: Puppet at janrain](https://reader033.fdocuments.us/reader033/viewer/2022060107/554bb882b4c90530298b49b2/html5/thumbnails/22.jpg)
● 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
![Page 23: Puppet at janrain](https://reader033.fdocuments.us/reader033/viewer/2022060107/554bb882b4c90530298b49b2/html5/thumbnails/23.jpg)
Tadah!
ssh test1.janrain.com Welcome to Ubuntu 11.04 (GNU/Linux 2.6.38-8-virtual i686)[email protected]:~$
![Page 24: Puppet at janrain](https://reader033.fdocuments.us/reader033/viewer/2022060107/554bb882b4c90530298b49b2/html5/thumbnails/24.jpg)
The dashboard gives us insight
![Page 25: Puppet at janrain](https://reader033.fdocuments.us/reader033/viewer/2022060107/554bb882b4c90530298b49b2/html5/thumbnails/25.jpg)
Avoiding the Stampede
● It's hard to keep the PuppetMaster's load predictable● Puppetcommander● Initiates runs in an orderly fashion● Can be globally disabled
https://github.com/puppetlabs/mcollective-plugins/tree/master/agent/puppetd/commander/
![Page 26: Puppet at janrain](https://reader033.fdocuments.us/reader033/viewer/2022060107/554bb882b4c90530298b49b2/html5/thumbnails/26.jpg)
What's next?
● External Node classifier● LXC Development Environment● Build => Bundle => Scale● Puppet and Zookeeper via Facter
![Page 27: Puppet at janrain](https://reader033.fdocuments.us/reader033/viewer/2022060107/554bb882b4c90530298b49b2/html5/thumbnails/27.jpg)
In conclusion
![Page 28: Puppet at janrain](https://reader033.fdocuments.us/reader033/viewer/2022060107/554bb882b4c90530298b49b2/html5/thumbnails/28.jpg)