Loading…

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

Like this presentation? Why not share!

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
    Be the first to like this
No Downloads

Views

Total Views
888
On Slideshare
888
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
2
Comments
0
Likes
0

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. 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.
  • 6. Capistrano is Puppet for the Rails community
  • 7. Not Invented Here
    ?
    http://www.flickr.com/photos/junewess/2111679056/
    http://www.flickr.com/photos/evdg/150116781/
  • 8. Not Invented Here
    Who is your daddy, and what does he do?
    Puppet
    • Ruby / Ruby-ish
    • 9. Written by a Systems Administrator
    • 10. Luke Kanies – Reductive Labs
    • 11. Designed to manage server configuration
    http://www.madstop.com/
    http://en.wikipedia.org/wiki/Puppet
    http://reductivelabs.com/projects/puppet/
    Capistrano
    • Ruby / Ruby-ish
    • 12. Written by a Rails Developer
    • 13. Jamis Buck – 37signals
    • 14. Designed to deploy web applications
    http://weblog.jamisbuck.org/
    http://en.wikipedia.org/wiki/Capistrano
    http://www.capify.org/
  • 15. Why use Capistrano when we have Puppet?
    Heard during a Capistrano talk at OSCON
    • Restart a particular service on multiple servers once
    • 16. Check the state of a service or resource (memory, cpu) that isn’t monitored
    • 17. Run a command on multiple servers AND monitor it’s output
    • 18. Systems deployment tasks: install puppet, build VMs, etc.
  • Installing Capistrano
    Install ruby
    Install ruby gems
    gem install capistrano
    Wait, what’s a GEM?
    Yet another package manager
  • 19. Not Invented Here
    ?
    http://www.flickr.com/photos/junewess/2111679056/
    http://www.flickr.com/photos/evdg/150116781/
  • 20. 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
  • 21. 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
  • 22. 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.
  • 23. 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
  • 24. 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
  • 25. 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
  • 26. 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
  • 27. 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