capistrano
DESCRIPTION
Using capistrano for system administrationTRANSCRIPT
![Page 1: Capistrano](https://reader033.vdocument.in/reader033/viewer/2022060108/5550d509b4c905e8318b4f8c/html5/thumbnails/1.jpg)
Capistrano for
System Administrators(not rails developers)
Bryan McLellanhttp://loftninjas.org
Senior Systems Administrator
Widemile
![Page 2: Capistrano](https://reader033.vdocument.in/reader033/viewer/2022060108/5550d509b4c905e8318b4f8c/html5/thumbnails/2.jpg)
Landing Page Optimization (LPO)
by way of Secret Sauce with new
SaaS Partner Platform
Front end
F5 VIP Cluster F5 VIP ClusterF5 VIP Cluster F5 VIP Cluster
![Page 3: Capistrano](https://reader033.vdocument.in/reader033/viewer/2022060108/5550d509b4c905e8318b4f8c/html5/thumbnails/3.jpg)
Landing Page Optimization (LPO)
by way of Secret Sauce with new
SaaS Partner Platform
Debian Host Blades w/VMware Server
Debian Guests
w/Apace fronted
Front end
Debian Guests
w/Apace fronted F5 VIP Cluster F5 VIP Cluster
w/Apace fronted
JBoss Clusters
w/Apace fronted
JBoss Clusters
Debian Guests
w/Apace fronted
JBoss Clusters
Debian Guests
w/Apace fronted
JBoss Clusters
F5 VIP Cluster F5 VIP Cluster
![Page 4: Capistrano](https://reader033.vdocument.in/reader033/viewer/2022060108/5550d509b4c905e8318b4f8c/html5/thumbnails/4.jpg)
Landing Page Optimization (LPO)
by way of Secret Sauce with new
SaaS Partner Platform
Debian Host Blades w/VMware Server
Debian Guests
w/Apace fronted
Front end
Debian Guests
w/Apace fronted F5 VIP Cluster F5 VIP Cluster
w/Apace fronted
JBoss Clusters
Database Backend
w/Apace fronted
JBoss Clusters
Debian Guests
w/Apace fronted
JBoss Clusters
Debian Guests
w/Apace fronted
JBoss Clusters
F5 VIP Cluster F5 VIP Cluster
MSSQL Cluster MSSQL Cluster
![Page 5: Capistrano](https://reader033.vdocument.in/reader033/viewer/2022060108/5550d509b4c905e8318b4f8c/html5/thumbnails/5.jpg)
![Page 6: Capistrano](https://reader033.vdocument.in/reader033/viewer/2022060108/5550d509b4c905e8318b4f8c/html5/thumbnails/6.jpg)
Capistrano is Puppet for the Rails community
![Page 7: Capistrano](https://reader033.vdocument.in/reader033/viewer/2022060108/5550d509b4c905e8318b4f8c/html5/thumbnails/7.jpg)
Not Invented Here
?
http://www.flickr.com/photos/junewess/2111679056/http://www.flickr.com/photos/evdg/150116781/
?
![Page 8: Capistrano](https://reader033.vdocument.in/reader033/viewer/2022060108/5550d509b4c905e8318b4f8c/html5/thumbnails/8.jpg)
Not Invented Here
Puppet
• Ruby / Ruby-ish
• Written by a Systems Administrator
Capistrano
• Ruby / Ruby-ish
• Written by a Rails Developer
Who is your daddy, and what does he do?
• Written by a Systems Administrator
• Luke Kanies – Reductive Labs
• Designed to manage server configuration
http://www.madstop.com/
http://en.wikipedia.org/wiki/Puppet
http://reductivelabs.com/projects/puppet/
• Written by a Rails Developer
• Jamis Buck – 37signals
• Designed to deploy web applications
http://weblog.jamisbuck.org/
http://en.wikipedia.org/wiki/Capistrano
http://www.capify.org/
![Page 9: Capistrano](https://reader033.vdocument.in/reader033/viewer/2022060108/5550d509b4c905e8318b4f8c/html5/thumbnails/9.jpg)
Why use Capistrano when we have Puppet?Heard during a Capistrano talk at OSCON
• Restart a particular service on multiple servers once
• Check the state of a service or resource (memory, cpu) that isn’t monitored
• Run a command on multiple servers AND monitor it’s output
• Systems deployment tasks: install puppet, build VMs, etc.
![Page 10: Capistrano](https://reader033.vdocument.in/reader033/viewer/2022060108/5550d509b4c905e8318b4f8c/html5/thumbnails/10.jpg)
Installing Capistrano
1. Install ruby
2. Install ruby gems
3. gem install capistrano
Wait, what’s a GEM?Yet another package manager
![Page 11: Capistrano](https://reader033.vdocument.in/reader033/viewer/2022060108/5550d509b4c905e8318b4f8c/html5/thumbnails/11.jpg)
Not Invented Here
?
http://www.flickr.com/photos/junewess/2111679056/http://www.flickr.com/photos/evdg/150116781/
?
![Page 12: Capistrano](https://reader033.vdocument.in/reader033/viewer/2022060108/5550d509b4c905e8318b4f8c/html5/thumbnails/12.jpg)
Not Invented Here
Not all package management systems are created equal.
Debian doesn’t need another package management system.
We have our own, it works quite well, thank you.
http://pkg-ruby-extras.alioth.debian.org/rubygems.htmlhttp://pkg-ruby-extras.alioth.debian.org/rubygems.html
PLEASE do not install unpackaged software on production
systems that someone else might have to inherit after your
very timely demise.
Also note that ‘gem update –system’ tends to break
Debian/Ubuntu ruby installations, and is disabled in
libgems-ruby 1.0.0-1
![Page 13: Capistrano](https://reader033.vdocument.in/reader033/viewer/2022060108/5550d509b4c905e8318b4f8c/html5/thumbnails/13.jpg)
Building a Capistrano deb
1. apt-get install build-essential fakeroot ruby-pkg-tools
2. svn checkout svn://svn.debian.org/pkg-ruby-extras/packages-wip/capistrano/trunk/
3. wget http://rubyforge.org/frs/download.php/33072/capistrano-2.2.0.tgz
4. tar -xvzf capistrano-2.2.0.tgz
5. mv trunk/* capistrano-2.2.0/
6. cd capistrano-2.2.0/
7. dch –v2.2.0
8. dpkg-buildpackage –rfakeroot
1. cd ..
2. sudo dpkg -i capistrano_2.1.0-1_all.deb
3. apt-get install -f
http://git.ninjr.org/?p=code.git;a=tree;f=debian/capistrano
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=428879
http://svn.debian.org/wsvn/pkg-ruby-extras/packages-wip/capistrano/trunk
![Page 14: Capistrano](https://reader033.vdocument.in/reader033/viewer/2022060108/5550d509b4c905e8318b4f8c/html5/thumbnails/14.jpg)
fastthread who?
$ cap –V
You are running Ruby 1.8.6, which has a bug in its
threading implementation. You are liable to encounter
deadlocks running Capistrano, unless you install the
fastthread library, which is available as a gem:
gem install fastthread
Wait, we’re installing a gem to fix a bug in ruby?
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=472702
This is fixed in ruby1.8 >= 1.8.6 p110 (1.8.6.111-2ubuntu1.1), no worries.
![Page 15: Capistrano](https://reader033.vdocument.in/reader033/viewer/2022060108/5550d509b4c905e8318b4f8c/html5/thumbnails/15.jpg)
Using Capistrano invoke
Assumptions:
• You can access your servers via SSH– There is some kind of proxy gateway functionality too
• You have the same password on all servers or PKI configured
$ cap HOSTS="ots01, ots02, ots03" COMMAND="whoami" invoke
* executing `invoke‘
* executing "whoami“* executing "whoami“
servers: ["ots01", "ots02", "ots03"]
[ots01] executing command
[ots02] executing command
[ots03] executing command
** [out :: ots01] bryanm
** [out :: ots02] bryanm
** [out :: ots03] bryanm
command finished
![Page 16: Capistrano](https://reader033.vdocument.in/reader033/viewer/2022060108/5550d509b4c905e8318b4f8c/html5/thumbnails/16.jpg)
Why use Capistrano when we have Puppet?Heard during a Capistrano talk at OSCON
• Restart a particular service on multiple servers once
$ cap HOSTS="ots01, ots02, ots03" COMMAND=“/etc/init.d/apache2 restart" invoke
• Check the state of a service or resource (memory, cpu) that isn’t monitored
$ cap HOSTS="ots01, ots02, ots03" COMMAND="grep MemTotal /proc/meminfo" invoke
• Run a command on multiple servers AND monitor it’s output
$ cap HOSTS="ots01, ots02, ots03" COMMAND=“tail –f /var/log/apache2/error.log" invoke
• Systems deployment tasks: install puppet, build VMs, etc.
$ cap -S recipe=debian_client -S client=newbox01 build
![Page 17: Capistrano](https://reader033.vdocument.in/reader033/viewer/2022060108/5550d509b4c905e8318b4f8c/html5/thumbnails/17.jpg)
Using Capistrano shell
$ cap HOSTS="ots01, ots02, ots03" shell * executing `invoke‘
cap> ls
[establishing connection(s) to ots01, ots02, ots03]
cap> ps
** [out :: ots01] PID TTY TIME CMD
** [out :: ots01] 19437 ? 00:00:00 sshd** [out :: ots01] 19437 ? 00:00:00 sshd
** [out :: ots01] 19445 ? 00:00:00 ps
** [out :: ots03] PID TTY TIME CMD
** [out :: ots03] 3222 ? 00:00:00 sshd
** [out :: ots03] 3231 ? 00:00:00 ps
** [out :: ots02] PID TTY TIME CMD
** [out :: ots02] 30751 ? 00:00:00 sshd
** [out :: ots02] 30756 ? 00:00:00 ps
![Page 18: Capistrano](https://reader033.vdocument.in/reader033/viewer/2022060108/5550d509b4c905e8318b4f8c/html5/thumbnails/18.jpg)
Using Capistrano shell
Sure, but I can do that with ClusterSSH, right?
How about on fifty hosts? Programmatically?
$ cap -S recipe=iclassify -S query="tag:ots-server" COMMAND="/etc/init.d/apache2
restart" SUDO=1 invokerestart" SUDO=1 invoke
$ cap -S recipe=iclassify -S query="tag:workstation" puppet
https://wiki.hjksolutions.com/display/IC/Capistrano+Task
![Page 19: Capistrano](https://reader033.vdocument.in/reader033/viewer/2022060108/5550d509b4c905e8318b4f8c/html5/thumbnails/19.jpg)
http://loftninjas.org
Andrew Shafer – Reductive Labs
http://stochasticresonance.wordpress.com
“Parallel to the ‘Developer’ tribe in most organizations, often with a semi-antagonistic
mutual dependence, there was always another tribe: ‘Sysadmin’. When Developers
and Sysadmins got together, it sometimes felt like the dwarfs and high elves forced to
work together by necessity. (I’ll let you workout which is which.)”