SlideShare una empresa de Scribd logo
1 de 19
Descargar para leer sin conexión
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
Landing Page Optimization (LPO)
                                     by way of Secret Sauce with new
                                          SaaS Partner Platform




Debian Host Blades w/VMware Server                 Front end

 Debian Guests      Debian Guests
                                      F5 VIP Cluster       F5 VIP Cluster
w/Apace fronted    w/Apace fronted
 JBoss Clusters     JBoss Clusters



 Debian Guests      Debian Guests
w/Apace fronted    w/Apace fronted
 JBoss Clusters     JBoss Clusters
Landing Page Optimization (LPO)
                                     by way of Secret Sauce with new
                                          SaaS Partner Platform




Debian Host Blades w/VMware Server                 Front end

 Debian Guests      Debian Guests
                                      F5 VIP Cluster       F5 VIP Cluster
w/Apace fronted    w/Apace fronted
 JBoss Clusters     JBoss Clusters

                                              Database Backend

 Debian Guests      Debian Guests
w/Apace fronted    w/Apace fronted
                                      MSSQL Cluster        MSSQL Cluster
 JBoss Clusters     JBoss Clusters
Capistrano is Puppet for the Rails community
Not Invented Here


                                               ?

http://www.flickr.com/photos/evdg/150116781/       http://www.flickr.com/photos/junewess/2111679056/
Not Invented Here
       Who is your daddy, and what does he do?
                 Puppet                                      Capistrano
• Ruby / Ruby-ish                           • Ruby / Ruby-ish
• Written by a Systems Administrator        • Written by a Rails Developer
• Luke Kanies – Reductive Labs              • Jamis Buck – 37signals
• Designed to manage server configuration   • Designed to deploy web applications

http://www.madstop.com/                     http://weblog.jamisbuck.org/
http://en.wikipedia.org/wiki/Puppet         http://en.wikipedia.org/wiki/Capistrano
http://reductivelabs.com/projects/puppet/   http://www.capify.org/
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.
Installing Capistrano
1. Install ruby
2. Install ruby gems
3. gem install capistrano



Wait, what’s a GEM?
Yet another package manager
Not Invented Here


                                               ?

http://www.flickr.com/photos/evdg/150116781/       http://www.flickr.com/photos/junewess/2111679056/
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
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
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.
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=quot;ots01, ots02, ots03quot; COMMAND=quot;whoamiquot; invoke
 * executing `invoke‘
 * executing quot;whoami“
   servers: [quot;ots01quot;, quot;ots02quot;, quot;ots03quot;]
   [ots01] executing command
   [ots02] executing command
   [ots03] executing command
** [out :: ots01] bryanm
** [out :: ots02] bryanm
** [out :: ots03] bryanm
   command finished
Why use Capistrano when we have Puppet?
                         Heard during a Capistrano talk at OSCON



• Restart a particular service on multiple servers once
     $ cap HOSTS=quot;ots01, ots02, ots03quot; COMMAND=“/etc/init.d/apache2 restartquot; invoke

• Check the state of a service or resource (memory, cpu) that isn’t monitored
     $ cap HOSTS=quot;ots01, ots02, ots03quot; COMMAND=quot;grep MemTotal /proc/meminfoquot; invoke

• Run a command on multiple servers AND monitor it’s output
     $ cap HOSTS=quot;ots01, ots02, ots03quot; COMMAND=“tail –f /var/log/apache2/error.logquot; invoke

• Systems deployment tasks: install puppet, build VMs, etc.
      $ cap -S recipe=debian_client -S client=newbox01 build
Using Capistrano shell
$ cap HOSTS=quot;ots01, ots02, ots03quot; 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
Using Capistrano shell
Sure, but I can do that with ClusterSSH, right?

How about on fifty hosts? Programmatically?

$ cap -S recipe=iclassify -S query=quot;tag:ots-serverquot; COMMAND=quot;/etc/init.d/apache2
    restartquot; SUDO=1 invoke
$ cap -S recipe=iclassify -S query=quot;tag:workstationquot; puppet

https://wiki.hjksolutions.com/display/IC/Capistrano+Task
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

Más contenido relacionado

La actualidad más candente

Bfg Ploneconf Oct2008
Bfg Ploneconf Oct2008Bfg Ploneconf Oct2008
Bfg Ploneconf Oct2008
Jeffrey Clark
 
Deploying with Super Cow Powers (Hosting your own APT repository with reprepro)
Deploying with Super Cow Powers (Hosting your own APT repository with reprepro)Deploying with Super Cow Powers (Hosting your own APT repository with reprepro)
Deploying with Super Cow Powers (Hosting your own APT repository with reprepro)
Simon Boulet
 
An Express Guide ~ Zabbix for IT Monitoring
An Express Guide ~ Zabbix for IT Monitoring An Express Guide ~ Zabbix for IT Monitoring
An Express Guide ~ Zabbix for IT Monitoring
Abhishek Kumar
 

La actualidad más candente (20)

grate techniques
grate techniquesgrate techniques
grate techniques
 
Vagrant for real (codemotion rome 2016)
Vagrant for real (codemotion rome 2016)Vagrant for real (codemotion rome 2016)
Vagrant for real (codemotion rome 2016)
 
kubernetes practice
kubernetes practicekubernetes practice
kubernetes practice
 
Modern PHP Ch7 Provisioning Guide 導讀
Modern PHP Ch7 Provisioning Guide 導讀Modern PHP Ch7 Provisioning Guide 導讀
Modern PHP Ch7 Provisioning Guide 導讀
 
Mass-Migration of 5000 Servers to Foreman/Katello with bootstrap.py - Evgeni ...
Mass-Migration of 5000 Servers to Foreman/Katello with bootstrap.py - Evgeni ...Mass-Migration of 5000 Servers to Foreman/Katello with bootstrap.py - Evgeni ...
Mass-Migration of 5000 Servers to Foreman/Katello with bootstrap.py - Evgeni ...
 
Ansible best practices
Ansible best practicesAnsible best practices
Ansible best practices
 
Bfg Ploneconf Oct2008
Bfg Ploneconf Oct2008Bfg Ploneconf Oct2008
Bfg Ploneconf Oct2008
 
Deploying with Super Cow Powers (Hosting your own APT repository with reprepro)
Deploying with Super Cow Powers (Hosting your own APT repository with reprepro)Deploying with Super Cow Powers (Hosting your own APT repository with reprepro)
Deploying with Super Cow Powers (Hosting your own APT repository with reprepro)
 
An Express Guide ~ Zabbix for IT Monitoring
An Express Guide ~ Zabbix for IT Monitoring An Express Guide ~ Zabbix for IT Monitoring
An Express Guide ~ Zabbix for IT Monitoring
 
Ansible intro
Ansible introAnsible intro
Ansible intro
 
Converting Your Dev Environment to a Docker Stack - php[world]
Converting Your Dev Environment to a Docker Stack - php[world]Converting Your Dev Environment to a Docker Stack - php[world]
Converting Your Dev Environment to a Docker Stack - php[world]
 
Dockerizing WordPress
Dockerizing WordPressDockerizing WordPress
Dockerizing WordPress
 
Controlling multiple VMs with the power of Python
Controlling multiple VMs with the power of PythonControlling multiple VMs with the power of Python
Controlling multiple VMs with the power of Python
 
Cialug August 2021
Cialug August 2021Cialug August 2021
Cialug August 2021
 
Ansible for beginners
Ansible for beginnersAnsible for beginners
Ansible for beginners
 
Ansible : what's ansible & use case by REX
Ansible :  what's ansible & use case by REXAnsible :  what's ansible & use case by REX
Ansible : what's ansible & use case by REX
 
Writing & Sharing Great Modules on the Puppet Forge
Writing & Sharing Great Modules on the Puppet ForgeWriting & Sharing Great Modules on the Puppet Forge
Writing & Sharing Great Modules on the Puppet Forge
 
Troubleshooting the Puppet Enterprise Stack
Troubleshooting the Puppet Enterprise StackTroubleshooting the Puppet Enterprise Stack
Troubleshooting the Puppet Enterprise Stack
 
Forget MAMP and WAMP, Use Virtual Box to Have a Real Ubuntu Server
Forget MAMP and WAMP, Use Virtual Box to Have a Real Ubuntu ServerForget MAMP and WAMP, Use Virtual Box to Have a Real Ubuntu Server
Forget MAMP and WAMP, Use Virtual Box to Have a Real Ubuntu Server
 
Instruction: dev environment
Instruction: dev environmentInstruction: dev environment
Instruction: dev environment
 

Destacado (6)

Photos
PhotosPhotos
Photos
 
Capistrano
CapistranoCapistrano
Capistrano
 
Getting Started with Capistrano in Ten Easy Steps
Getting Started with Capistrano in Ten Easy StepsGetting Started with Capistrano in Ten Easy Steps
Getting Started with Capistrano in Ten Easy Steps
 
Getting Started with Capistrano
Getting Started with CapistranoGetting Started with Capistrano
Getting Started with Capistrano
 
Capistrano, Puppet, and Chef
Capistrano, Puppet, and ChefCapistrano, Puppet, and Chef
Capistrano, Puppet, and Chef
 
Chef vs. Puppet in the Cloud: How Telepictures and MoneySuperMarket Do It
Chef vs. Puppet in the Cloud: How Telepictures and MoneySuperMarket Do ItChef vs. Puppet in the Cloud: How Telepictures and MoneySuperMarket Do It
Chef vs. Puppet in the Cloud: How Telepictures and MoneySuperMarket Do It
 

Similar a Capistrano

Continuous Delivery with Maven, Puppet and Tomcat - ApacheCon NA 2013
Continuous Delivery with Maven, Puppet and Tomcat - ApacheCon NA 2013Continuous Delivery with Maven, Puppet and Tomcat - ApacheCon NA 2013
Continuous Delivery with Maven, Puppet and Tomcat - ApacheCon NA 2013
Carlos Sanchez
 
Python Deployment with Fabric
Python Deployment with FabricPython Deployment with Fabric
Python Deployment with Fabric
andymccurdy
 
Railsconf2011 deployment tips_for_slideshare
Railsconf2011 deployment tips_for_slideshareRailsconf2011 deployment tips_for_slideshare
Railsconf2011 deployment tips_for_slideshare
tomcopeland
 
Site Performance - From Pinto to Ferrari
Site Performance - From Pinto to FerrariSite Performance - From Pinto to Ferrari
Site Performance - From Pinto to Ferrari
Joseph Scott
 

Similar a Capistrano (20)

Continuous Delivery: The Next Frontier
Continuous Delivery: The Next FrontierContinuous Delivery: The Next Frontier
Continuous Delivery: The Next Frontier
 
infra-as-code
infra-as-codeinfra-as-code
infra-as-code
 
Control your deployments with Capistrano
Control your deployments with CapistranoControl your deployments with Capistrano
Control your deployments with Capistrano
 
Continuous Delivery with Maven, Puppet and Tomcat - ApacheCon NA 2013
Continuous Delivery with Maven, Puppet and Tomcat - ApacheCon NA 2013Continuous Delivery with Maven, Puppet and Tomcat - ApacheCon NA 2013
Continuous Delivery with Maven, Puppet and Tomcat - ApacheCon NA 2013
 
Python Deployment with Fabric
Python Deployment with FabricPython Deployment with Fabric
Python Deployment with Fabric
 
Bare Metal to OpenStack with Razor and Chef
Bare Metal to OpenStack with Razor and ChefBare Metal to OpenStack with Razor and Chef
Bare Metal to OpenStack with Razor and Chef
 
Deploying Symfony | symfony.cat
Deploying Symfony | symfony.catDeploying Symfony | symfony.cat
Deploying Symfony | symfony.cat
 
Instrumentación de entrega continua con Gitlab
Instrumentación de entrega continua con GitlabInstrumentación de entrega continua con Gitlab
Instrumentación de entrega continua con Gitlab
 
Fargate 를 이용한 ECS with VPC 1부
Fargate 를 이용한 ECS with VPC 1부Fargate 를 이용한 ECS with VPC 1부
Fargate 를 이용한 ECS with VPC 1부
 
Drupaljam 2017 - Deploying Drupal 8 onto Hosted Kubernetes in Google Cloud
Drupaljam 2017 - Deploying Drupal 8 onto Hosted Kubernetes in Google CloudDrupaljam 2017 - Deploying Drupal 8 onto Hosted Kubernetes in Google Cloud
Drupaljam 2017 - Deploying Drupal 8 onto Hosted Kubernetes in Google Cloud
 
(ARC402) Deployment Automation: From Developers' Keyboards to End Users' Scre...
(ARC402) Deployment Automation: From Developers' Keyboards to End Users' Scre...(ARC402) Deployment Automation: From Developers' Keyboards to End Users' Scre...
(ARC402) Deployment Automation: From Developers' Keyboards to End Users' Scre...
 
Dependencies Managers in C/C++. Using stdcpp 2014
Dependencies Managers in C/C++. Using stdcpp 2014Dependencies Managers in C/C++. Using stdcpp 2014
Dependencies Managers in C/C++. Using stdcpp 2014
 
Railsconf2011 deployment tips_for_slideshare
Railsconf2011 deployment tips_for_slideshareRailsconf2011 deployment tips_for_slideshare
Railsconf2011 deployment tips_for_slideshare
 
Kayobe_desc
Kayobe_descKayobe_desc
Kayobe_desc
 
Automated Java Deployments With Rpm
Automated Java Deployments With RpmAutomated Java Deployments With Rpm
Automated Java Deployments With Rpm
 
Converting Your Dev Environment to a Docker Stack - Cascadia
Converting Your Dev Environment to a Docker Stack - CascadiaConverting Your Dev Environment to a Docker Stack - Cascadia
Converting Your Dev Environment to a Docker Stack - Cascadia
 
OpenStack Tokyo Meeup - Gluster Storage Day
OpenStack Tokyo Meeup - Gluster Storage DayOpenStack Tokyo Meeup - Gluster Storage Day
OpenStack Tokyo Meeup - Gluster Storage Day
 
Virtual Infrastructure
Virtual InfrastructureVirtual Infrastructure
Virtual Infrastructure
 
Site Performance - From Pinto to Ferrari
Site Performance - From Pinto to FerrariSite Performance - From Pinto to Ferrari
Site Performance - From Pinto to Ferrari
 
JUDCon 2010 Boston : BoxGrinder
JUDCon 2010 Boston : BoxGrinderJUDCon 2010 Boston : BoxGrinder
JUDCon 2010 Boston : BoxGrinder
 

Último

Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 

Último (20)

WSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering DevelopersWSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering Developers
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot ModelMcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
 
Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with Milvus
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
Platformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityPlatformless Horizons for Digital Adaptability
Platformless Horizons for Digital Adaptability
 
Spring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUKSpring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUK
 
AI+A11Y 11MAY2024 HYDERBAD GAAD 2024 - HelloA11Y (11 May 2024)
AI+A11Y 11MAY2024 HYDERBAD GAAD 2024 - HelloA11Y (11 May 2024)AI+A11Y 11MAY2024 HYDERBAD GAAD 2024 - HelloA11Y (11 May 2024)
AI+A11Y 11MAY2024 HYDERBAD GAAD 2024 - HelloA11Y (11 May 2024)
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf
 
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 

Capistrano

  • 1. Capistrano for System 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 Debian Guests F5 VIP Cluster F5 VIP Cluster w/Apace fronted w/Apace fronted JBoss Clusters JBoss Clusters Debian Guests Debian Guests w/Apace fronted w/Apace fronted JBoss Clusters 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 Debian Guests F5 VIP Cluster F5 VIP Cluster w/Apace fronted w/Apace fronted JBoss Clusters JBoss Clusters Database Backend Debian Guests Debian Guests w/Apace fronted w/Apace fronted MSSQL Cluster MSSQL Cluster JBoss Clusters JBoss Clusters
  • 5.
  • 6. Capistrano is Puppet for the Rails community
  • 7. Not Invented Here ? http://www.flickr.com/photos/evdg/150116781/ http://www.flickr.com/photos/junewess/2111679056/
  • 8. Not Invented Here Who is your daddy, and what does he do? Puppet Capistrano • Ruby / Ruby-ish • Ruby / Ruby-ish • Written by a Systems Administrator • Written by a Rails Developer • Luke Kanies – Reductive Labs • Jamis Buck – 37signals • Designed to manage server configuration • Designed to deploy web applications http://www.madstop.com/ http://weblog.jamisbuck.org/ http://en.wikipedia.org/wiki/Puppet http://en.wikipedia.org/wiki/Capistrano http://reductivelabs.com/projects/puppet/ http://www.capify.org/
  • 9. 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.
  • 10. Installing Capistrano 1. Install ruby 2. Install ruby gems 3. gem install capistrano Wait, what’s a GEM? Yet another package manager
  • 11. Not Invented Here ? http://www.flickr.com/photos/evdg/150116781/ http://www.flickr.com/photos/junewess/2111679056/
  • 12. 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
  • 13. 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
  • 14. 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.
  • 15. 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=quot;ots01, ots02, ots03quot; COMMAND=quot;whoamiquot; invoke * executing `invoke‘ * executing quot;whoami“ servers: [quot;ots01quot;, quot;ots02quot;, quot;ots03quot;] [ots01] executing command [ots02] executing command [ots03] executing command ** [out :: ots01] bryanm ** [out :: ots02] bryanm ** [out :: ots03] bryanm command finished
  • 16. Why use Capistrano when we have Puppet? Heard during a Capistrano talk at OSCON • Restart a particular service on multiple servers once $ cap HOSTS=quot;ots01, ots02, ots03quot; COMMAND=“/etc/init.d/apache2 restartquot; invoke • Check the state of a service or resource (memory, cpu) that isn’t monitored $ cap HOSTS=quot;ots01, ots02, ots03quot; COMMAND=quot;grep MemTotal /proc/meminfoquot; invoke • Run a command on multiple servers AND monitor it’s output $ cap HOSTS=quot;ots01, ots02, ots03quot; COMMAND=“tail –f /var/log/apache2/error.logquot; invoke • Systems deployment tasks: install puppet, build VMs, etc. $ cap -S recipe=debian_client -S client=newbox01 build
  • 17. Using Capistrano shell $ cap HOSTS=quot;ots01, ots02, ots03quot; 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
  • 18. Using Capistrano shell Sure, but I can do that with ClusterSSH, right? How about on fifty hosts? Programmatically? $ cap -S recipe=iclassify -S query=quot;tag:ots-serverquot; COMMAND=quot;/etc/init.d/apache2 restartquot; SUDO=1 invoke $ cap -S recipe=iclassify -S query=quot;tag:workstationquot; puppet https://wiki.hjksolutions.com/display/IC/Capistrano+Task
  • 19. 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