1 / 19

Capistrano for System Administrators (not rails developers)

Capistrano for System Administrators (not rails developers). Bryan McLellan http://loftninjas.org btm@loftninjas.org Senior Systems Administrator Widemile. Landing Page Optimization (LPO) by way of Secret Sauce with new SaaS Partner Platform. Front end . F5 VIP Cluster. F5 VIP Cluster.

ted
Download Presentation

Capistrano for System Administrators (not rails developers)

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Capistrano forSystem Administrators(not rails developers) Bryan McLellan http://loftninjas.org btm@loftninjas.org Senior Systems Administrator Widemile

  2. Landing Page Optimization (LPO) by way of Secret Sauce with new SaaS Partner Platform Front end F5 VIP Cluster F5 VIP Cluster

  3. Landing Page Optimization (LPO) by way of Secret Sauce with new SaaS Partner Platform Debian Host Blades w/VMware Server Front end Debian Guests w/Apace fronted JBoss Clusters Debian Guests w/Apace fronted JBoss Clusters F5 VIP Cluster F5 VIP Cluster Debian Guests w/Apace fronted JBoss Clusters Debian Guests w/Apace fronted JBoss Clusters

  4. Landing Page Optimization (LPO) by way of Secret Sauce with new SaaS Partner Platform Debian Host Blades w/VMware Server Front end Debian Guests w/Apace fronted JBoss Clusters Debian Guests w/Apace fronted JBoss Clusters F5 VIP Cluster F5 VIP Cluster Database Backend Debian Guests w/Apace fronted JBoss Clusters Debian Guests w/Apace fronted JBoss Clusters MSSQL Cluster MSSQL Cluster

  5. Capistrano is Puppet for the Rails community

  6. Not Invented Here ? http://www.flickr.com/photos/evdg/150116781/ http://www.flickr.com/photos/junewess/2111679056/

  7. Not Invented Here Who is your daddy, and what does he do? • Puppet • Ruby / Ruby-ish • 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/ • Capistrano • Ruby / Ruby-ish • 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/

  8. 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.

  9. Installing Capistrano • Install ruby • Install ruby gems • gem install capistrano Wait, what’s a GEM? Yet another package manager

  10. Not Invented Here ? http://www.flickr.com/photos/evdg/150116781/ http://www.flickr.com/photos/junewess/2111679056/

  11. 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.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

  12. Building a Capistrano deb • apt-get install build-essential fakeroot ruby-pkg-tools • svn checkout svn://svn.debian.org/pkg-ruby-extras/packages-wip/capistrano/trunk/ • wget http://rubyforge.org/frs/download.php/33072/capistrano-2.2.0.tgz • tar -xvzf capistrano-2.2.0.tgz • mv trunk/* capistrano-2.2.0/ • cd capistrano-2.2.0/ • dch –v2.2.0 • dpkg-buildpackage –rfakeroot • cd .. • sudodpkg -i capistrano_2.1.0-1_all.deb • 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

  13. 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.

  14. 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“ servers: ["ots01", "ots02", "ots03"] [ots01] executing command [ots02] executing command [ots03] executing command ** [out :: ots01] bryanm ** [out :: ots02] bryanm ** [out :: ots03] bryanm command finished

  15. 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="grepMemTotal /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

  16. 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] 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

  17. 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 invoke $ cap -S recipe=iclassify -S query="tag:workstation" puppet https://wiki.hjksolutions.com/display/IC/Capistrano+Task

  18. http://loftninjas.org “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.)” Andrew Shafer – Reductive Labs http://stochasticresonance.wordpress.com

More Related