String.class_eval do
def to_fqdn(domain = '.urgetopunt.com')
self + domain
end
end
default_run_options[:pty] = true
set :gateway, 'shell.speakeasy.net'
role :centos, *%w[kotuku hoiho].map {|h| h.to_fqdn }
role :ubuntu, *%w[moa kiwi taiko whio].map {|h| h.to_fqdn }
role :passenger, *%w[moa kiwi taiko whio].map {|h| h.to_fqdn }
# TODO: get centos using dotfiles
desc 'Deploy dotfiles'
task :deploy, :roles => [:ubuntu] do
run 'cd $HOME && git pull'
end
namespace :stat do
desc 'Output kernel version on all servers'
task :uname, :roles => [:centos, :ubuntu] do
run 'uname -r'
end
desc 'Check CPU load on all servers'
task :uptime, :roles => [:centos, :ubuntu] do
run 'uptime'
end
desc 'Check memory usage on all servers'
task :free, :roles => [:centos, :ubuntu] do
run '$HOME/bin/memory.sh'
# run %[free -m | awk '/cache:/ { printf "free: %dmb used: %dmb (%.0f%%)",$4,$3,$3/($3+$4)*100 }']
end
desc 'Check swap usage on all servers'
task :swap, :roles => [:centos, :ubuntu] do
run %[free -m | awk '/Swap:/ { printf "free: %dmb used: %dmb (%.0f%%)",$4,$3,$3/$2*100 }']
end
desc 'Check root volume usage on all servers'
task :df, :roles => [:centos, :ubuntu] do
run 'df -h /'
end
end
namespace :passenger do
desc 'Get passenger memory stats'
task :memory, :roles => :passenger do
sudo '/opt/ruby-enterprise/bin/passenger-memory-stats'
end
desc 'Get passenger status'
task :status, :roles => :passenger do
sudo '/opt/ruby-enterprise/bin/passenger-status'
end
end
namespace :centos do
desc 'Check for updates on centos servers'
task :check, :roles => :centos do
sudo 'yum -d0 check-update'
end
desc 'Apply updates to centos servers'
task :upgrade, :roles => :centos do
sudo 'yum -d0 -y update'
end
desc 'Clear yum cache on centos servers'
task :clean, :roles => :centos do
sudo 'yum clean all'
end
end
namespace :ubuntu do
desc 'Update apt cache on ubuntu servers'
task :update, :roles => :ubuntu do
sudo 'apt-get -qq update'
end
desc 'Check for updates on ubuntu servers'
task :check, :roles => :ubuntu do
ubuntu.update
sudo 'apt-get -q -s upgrade'
end
desc 'Apply updates to ubuntu servers'
task :upgrade, :roles => :ubuntu do
ubuntu.update
sudo 'apt-get -qq upgrade'
end
end