ubuntu-machine 0.5.3.2.25

Sign up to get free protection for your applications and to get access to all the features.
Files changed (44) hide show
  1. data/MIT-LICENSE +20 -0
  2. data/README +15 -0
  3. data/lib/capistrano/ext/ubuntu-machine.rb +30 -0
  4. data/lib/capistrano/ext/ubuntu-machine/apache.rb +118 -0
  5. data/lib/capistrano/ext/ubuntu-machine/aptitude.rb +99 -0
  6. data/lib/capistrano/ext/ubuntu-machine/extras.rb +39 -0
  7. data/lib/capistrano/ext/ubuntu-machine/ffmpeg.rb +43 -0
  8. data/lib/capistrano/ext/ubuntu-machine/gems.rb +41 -0
  9. data/lib/capistrano/ext/ubuntu-machine/git.rb +15 -0
  10. data/lib/capistrano/ext/ubuntu-machine/helpers.rb +36 -0
  11. data/lib/capistrano/ext/ubuntu-machine/iptables.rb +20 -0
  12. data/lib/capistrano/ext/ubuntu-machine/lmsensors.rb +26 -0
  13. data/lib/capistrano/ext/ubuntu-machine/machine.rb +50 -0
  14. data/lib/capistrano/ext/ubuntu-machine/mysql.rb +64 -0
  15. data/lib/capistrano/ext/ubuntu-machine/network.rb +42 -0
  16. data/lib/capistrano/ext/ubuntu-machine/ntp.rb +37 -0
  17. data/lib/capistrano/ext/ubuntu-machine/odbc.rb +44 -0
  18. data/lib/capistrano/ext/ubuntu-machine/php.rb +8 -0
  19. data/lib/capistrano/ext/ubuntu-machine/postfix.rb +7 -0
  20. data/lib/capistrano/ext/ubuntu-machine/rails3.rb +7 -0
  21. data/lib/capistrano/ext/ubuntu-machine/ruby.rb +86 -0
  22. data/lib/capistrano/ext/ubuntu-machine/ssh.rb +64 -0
  23. data/lib/capistrano/ext/ubuntu-machine/templates/apache2.erb +7 -0
  24. data/lib/capistrano/ext/ubuntu-machine/templates/deflate.conf.erb +3 -0
  25. data/lib/capistrano/ext/ubuntu-machine/templates/freetds.conf.erb +8 -0
  26. data/lib/capistrano/ext/ubuntu-machine/templates/iptables.erb +46 -0
  27. data/lib/capistrano/ext/ubuntu-machine/templates/my.cnf.erb +3 -0
  28. data/lib/capistrano/ext/ubuntu-machine/templates/new_db.erb +5 -0
  29. data/lib/capistrano/ext/ubuntu-machine/templates/ntp.conf.erb +16 -0
  30. data/lib/capistrano/ext/ubuntu-machine/templates/ntpdate.erb +13 -0
  31. data/lib/capistrano/ext/ubuntu-machine/templates/odbc.ini.erb +8 -0
  32. data/lib/capistrano/ext/ubuntu-machine/templates/odbcinst.ini.erb +7 -0
  33. data/lib/capistrano/ext/ubuntu-machine/templates/passenger.conf.erb +2 -0
  34. data/lib/capistrano/ext/ubuntu-machine/templates/passenger.load.erb +1 -0
  35. data/lib/capistrano/ext/ubuntu-machine/templates/sources.jaunty.erb +55 -0
  36. data/lib/capistrano/ext/ubuntu-machine/templates/sources.lucid.erb +22 -0
  37. data/lib/capistrano/ext/ubuntu-machine/templates/sshd_config.erb +80 -0
  38. data/lib/capistrano/ext/ubuntu-machine/templates/vhost.erb +17 -0
  39. data/lib/capistrano/ext/ubuntu-machine/templates/vsftpd.conf.erb +158 -0
  40. data/lib/capistrano/ext/ubuntu-machine/templates/xsendfile.load.erb +1 -0
  41. data/lib/capistrano/ext/ubuntu-machine/tmpfs.rb +17 -0
  42. data/lib/capistrano/ext/ubuntu-machine/utils.rb +49 -0
  43. data/lib/capistrano/ext/ubuntu-machine/vsftpd.rb +63 -0
  44. metadata +130 -0
@@ -0,0 +1,20 @@
1
+ Copyright (c) 2008 Thomas Balthazar
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README ADDED
@@ -0,0 +1,15 @@
1
+ = View doc here :
2
+ http://suitmymind.github.com/ubuntu-machine
3
+
4
+ = Changelog here :
5
+ http://suitmymind.github.com/ubuntu-machine/#changelog
6
+
7
+ (Note: the above links belong to the official ubuntu-machine; not my fork.)
8
+
9
+ = Contributors :
10
+ - Joseph Glenn
11
+ - Ahume
12
+ - Tarik Alkasab
13
+ - Filip H.F. "FiXato" Slagter
14
+ - Wes "Narnach" Oldenbeuving
15
+ - Rachid Al Maach
@@ -0,0 +1,30 @@
1
+ unless Capistrano::Configuration.respond_to?(:instance)
2
+ abort "Requires Capistrano 2"
3
+ end
4
+
5
+ # Dir["#{File.dirname(__FILE__)}/ubuntu-machine/*.rb"].each { |lib|
6
+ # Capistrano::Configuration.instance.load {load(lib)}
7
+ # }
8
+
9
+ Capistrano::Configuration.instance.load {load("#{File.dirname(__FILE__)}/ubuntu-machine/apache.rb")}
10
+ Capistrano::Configuration.instance.load {load("#{File.dirname(__FILE__)}/ubuntu-machine/aptitude.rb")}
11
+ Capistrano::Configuration.instance.load {load("#{File.dirname(__FILE__)}/ubuntu-machine/extras.rb")}
12
+ Capistrano::Configuration.instance.load {load("#{File.dirname(__FILE__)}/ubuntu-machine/ffmpeg.rb")}
13
+ Capistrano::Configuration.instance.load {load("#{File.dirname(__FILE__)}/ubuntu-machine/gems.rb")}
14
+ Capistrano::Configuration.instance.load {load("#{File.dirname(__FILE__)}/ubuntu-machine/git.rb")}
15
+ Capistrano::Configuration.instance.load {load("#{File.dirname(__FILE__)}/ubuntu-machine/odbc.rb")}
16
+ Capistrano::Configuration.instance.load {load("#{File.dirname(__FILE__)}/ubuntu-machine/helpers.rb")}
17
+ Capistrano::Configuration.instance.load {load("#{File.dirname(__FILE__)}/ubuntu-machine/iptables.rb")}
18
+ Capistrano::Configuration.instance.load {load("#{File.dirname(__FILE__)}/ubuntu-machine/lmsensors.rb")}
19
+ Capistrano::Configuration.instance.load {load("#{File.dirname(__FILE__)}/ubuntu-machine/machine.rb")}
20
+ Capistrano::Configuration.instance.load {load("#{File.dirname(__FILE__)}/ubuntu-machine/mysql.rb")}
21
+ Capistrano::Configuration.instance.load {load("#{File.dirname(__FILE__)}/ubuntu-machine/network.rb")}
22
+ Capistrano::Configuration.instance.load {load("#{File.dirname(__FILE__)}/ubuntu-machine/ntp.rb")}
23
+ Capistrano::Configuration.instance.load {load("#{File.dirname(__FILE__)}/ubuntu-machine/php.rb")}
24
+ Capistrano::Configuration.instance.load {load("#{File.dirname(__FILE__)}/ubuntu-machine/postfix.rb")}
25
+ Capistrano::Configuration.instance.load {load("#{File.dirname(__FILE__)}/ubuntu-machine/ruby.rb")}
26
+ Capistrano::Configuration.instance.load {load("#{File.dirname(__FILE__)}/ubuntu-machine/ssh.rb")}
27
+ Capistrano::Configuration.instance.load {load("#{File.dirname(__FILE__)}/ubuntu-machine/tmpfs.rb")}
28
+ Capistrano::Configuration.instance.load {load("#{File.dirname(__FILE__)}/ubuntu-machine/utils.rb")}
29
+ Capistrano::Configuration.instance.load {load("#{File.dirname(__FILE__)}/ubuntu-machine/vsftpd.rb")}
30
+ Capistrano::Configuration.instance.load {load("#{File.dirname(__FILE__)}/ubuntu-machine/rails3.rb")}
@@ -0,0 +1,118 @@
1
+ namespace :apache do
2
+ desc "Install Apache"
3
+ task :install, :roles => :web do
4
+ sudo "apt-get install apache2 apache2.2-common apache2-mpm-prefork apache2-utils libexpat1 ssl-cert -y"
5
+
6
+ run "cat /etc/apache2/apache2.conf > ~/apache2.conf.tmp"
7
+ put render("apache2", binding), "apache2.append.conf.tmp"
8
+ run "cat apache2.append.conf.tmp >> ~/apache2.conf.tmp"
9
+ sudo "mv ~/apache2.conf.tmp /etc/apache2/apache2.conf"
10
+ run "rm apache2.append.conf.tmp"
11
+ restart
12
+ end
13
+
14
+ desc "Restarts Apache webserver"
15
+ task :restart, :roles => :web do
16
+ sudo "/etc/init.d/apache2 restart"
17
+ end
18
+
19
+ desc "Starts Apache webserver"
20
+ task :start, :roles => :web do
21
+ sudo "/etc/init.d/apache2 start"
22
+ end
23
+
24
+ desc "Stops Apache webserver"
25
+ task :stop, :roles => :web do
26
+ sudo "/etc/init.d/apache2 stop"
27
+ end
28
+
29
+ desc "Reload Apache webserver"
30
+ task :reload, :roles => :web do
31
+ sudo "/etc/init.d/apache2 reload"
32
+ end
33
+
34
+ desc "Force reload Apache webserver"
35
+ task :force_reload, :roles => :web do
36
+ sudo "/etc/init.d/apache2 force-reload"
37
+ end
38
+
39
+ desc "List enabled Apache sites"
40
+ task :enabled_sites, :roles => :web do
41
+ run "ls /etc/apache2/sites-enabled"
42
+ end
43
+
44
+ desc "List available Apache sites"
45
+ task :available_sites, :roles => :web do
46
+ run "ls /etc/apache2/sites-available"
47
+ end
48
+
49
+ desc "List enabled Apache modules"
50
+ task :enabled_modules, :roles => :web do
51
+ run "ls /etc/apache2/mods-enabled"
52
+ end
53
+
54
+ desc "List available Apache modules"
55
+ task :available_modules, :roles => :web do
56
+ run "ls /etc/apache2/mods-available"
57
+ end
58
+
59
+ desc "Disable Apache site"
60
+ task :disable_site, :roles => :web do
61
+ site = Capistrano::CLI.ui.ask("Which site should we disable: ")
62
+ sudo "sudo a2dissite #{site}"
63
+ reload
64
+ end
65
+
66
+ desc "Enable Apache site"
67
+ task :enable_site, :roles => :web do
68
+ site = Capistrano::CLI.ui.ask("Which site should we enable: ")
69
+ sudo "sudo a2ensite #{site}"
70
+ reload
71
+ end
72
+
73
+ desc "Disable Apache module"
74
+ task :disable_module, :roles => :web do
75
+ mod = Capistrano::CLI.ui.ask("Which module should we disable: ")
76
+ sudo "sudo a2dismod #{mod}"
77
+ force_reload
78
+ end
79
+
80
+ desc "Enable Apache module"
81
+ task :enable_module, :roles => :web do
82
+ mod = Capistrano::CLI.ui.ask("Which module should we enable: ")
83
+ sudo "sudo a2enmod #{mod}"
84
+ force_reload
85
+ end
86
+
87
+ desc "Create a new website"
88
+ task :create_website, :roles => :web do
89
+ server_admin = Capistrano::CLI.ui.ask("Server admin (#{default_server_admin}) if blank : ")
90
+ server_admin = default_server_admin if server_admin.empty?
91
+ server_name = Capistrano::CLI.ui.ask("Server name : ")
92
+ server_alias = Capistrano::CLI.ui.ask("Server alias : ")
93
+ directory_index = Capistrano::CLI.ui.ask("Directory index (#{default_directory_index}) if blank : ")
94
+ directory_index = default_directory_index if directory_index.empty?
95
+
96
+ # Website skeleton
97
+ %w{backup cap cgi-bin logs private public tmp}.each { |d|
98
+ run "mkdir -p /home/#{user}/websites/#{server_name}/#{d}"
99
+ }
100
+
101
+ put render("vhost", binding), server_name
102
+ sudo "mv #{server_name} /etc/apache2/sites-available/#{server_name}"
103
+ sudo "sudo a2ensite #{server_name}"
104
+ reload
105
+ end
106
+
107
+ desc "Delete a website (! delete all file and folders)"
108
+ task :delete_website, :roles => :web do
109
+ server_name = Capistrano::CLI.ui.ask("Server name you want to delete : ")
110
+ sure = Capistrano::CLI.ui.ask("Are you sure you want to delete #{server_name} and all its files? (y/n) : ")
111
+ if sure=="y"
112
+ sudo "sudo a2dissite #{server_name}"
113
+ sudo "rm /etc/apache2/sites-available/#{server_name}"
114
+ sudo "rm -Rf /home/#{user}/websites/#{server_name}"
115
+ reload
116
+ end
117
+ end
118
+ end
@@ -0,0 +1,99 @@
1
+ namespace :aptitude do
2
+ desc <<-DESC
3
+ Updates your software package list. This will not "upgrade" any of your \
4
+ installed software.
5
+
6
+ See "Update" section on \
7
+ http://articles.slicehost.com/2007/11/6/ubuntu-gutsy-setup-page-2
8
+ DESC
9
+ task :update, :roles => :app do
10
+ sudo "apt-get update"
11
+ end
12
+
13
+ desc "Alias for 'aptitude:safe_upgrade'"
14
+ task :upgrade, :roles => :app do
15
+ safe_upgrade
16
+ end
17
+
18
+ desc <<-DESC
19
+ Upgrades your installed software packages.
20
+
21
+ From the aptitude man pages:
22
+
23
+ This command will upgrade as many packages as it can upgrade without \
24
+ removing existing packages or installing new ones.
25
+
26
+ It is sometimes necessary to remove or install one package in order to \
27
+ upgrade another; this command is not able to upgrade packages in such \
28
+ situations. Use the full-upgrade to upgrade those packages as well.
29
+
30
+ See "Upgrade" section on \
31
+ http://articles.slicehost.com/2007/11/6/ubuntu-gutsy-setup-page-2
32
+ DESC
33
+ task :safe_upgrade, :roles => :app do
34
+
35
+ # to prevent interactive mode to block the install script
36
+ sudo 'aptitude hold console-setup -y'
37
+
38
+ # By default, OVH replace the original /etc/issue. The safe_upgrade will then ask \
39
+ # if it must overwrite this file, since it has been modified by OVH. \
40
+ # data =~ /^\*\*\*\sissue/ looks for the interactive prompt to enable you to answer
41
+ sudo_and_watch_prompt("aptitude safe-upgrade -y", /^\*\*\*\sissue/)
42
+ end
43
+
44
+ desc <<-DESC
45
+ Upgrades your installed software packages.
46
+
47
+ From the aptitude man pages:
48
+
49
+ Like safe-upgrade, this command will attempt to upgrade packages, but it is \
50
+ more aggressive about solving dependency problems: it will install and \
51
+ remove packages until all dependencies are satisfied. Because of the nature \
52
+ of this command, it is possible that it will do undesirable things, and so \
53
+ you should be careful when using it.
54
+
55
+ See "Upgrade" section on \
56
+ http://articles.slicehost.com/2007/11/6/ubuntu-gutsy-setup-page-2
57
+ DESC
58
+ task :full_upgrade, :roles => :app do
59
+ sudo "aptitude full-upgrade -y"
60
+ end
61
+
62
+ desc <<-DESC
63
+ Installs a software package via aptitude. You will be prompted for the \
64
+ package name after running this commmand.
65
+ DESC
66
+ task :install, :roles => :app do
67
+ package = Capistrano::CLI.ui.ask("Which package should we install: ")
68
+ sudo "apt-get install #{package}"
69
+ end
70
+
71
+ desc <<-DESC
72
+ Uninstalls a software package via aptitude. You will be prompted for the \
73
+ package name after running this commmand.
74
+ DESC
75
+ task :uninstall, :roles => :app do
76
+ package = Capistrano::CLI.ui.ask("Which package should we uninstall: ")
77
+ sudo "apt-get remove #{package}"
78
+ end
79
+
80
+ desc <<-DESC
81
+ Updates software packages and creates "a solid base for the 'meat' of the \
82
+ server". This task should be run only once when you are first setting up your \
83
+ new slice.
84
+
85
+ See "Update", "locales", "Upgrade" and "build essentials" sections on \
86
+ http://articles.slicehost.com/2007/11/6/ubuntu-gutsy-setup-page-2
87
+ DESC
88
+ task :setup, :roles => :app do
89
+ put render("sources.lucid", binding), "sources.list"
90
+ sudo "mv sources.list /etc/apt/sources.list"
91
+ sudo "apt-get update"
92
+ update
93
+ sudo "locale-gen en_GB.UTF-8"
94
+ sudo "/usr/sbin/update-locale LANG=en_GB.UTF-8"
95
+ safe_upgrade
96
+ full_upgrade
97
+ sudo "apt-get install -y build-essential"
98
+ end
99
+ end
@@ -0,0 +1,39 @@
1
+ namespace :extras do
2
+ desc "Installs extra utils: curl, lynx, mailutils, munin, imagemagick"
3
+ task :install_all do
4
+ install_curl
5
+ install_lynx
6
+ install_mailutils
7
+ install_munin
8
+ install_imagemagick
9
+ end
10
+
11
+ desc "Installs extra util curl"
12
+ task :install_curl do
13
+ sudo "aptitude install -y curl"
14
+ end
15
+
16
+ desc "Installs extra util lynx"
17
+ task :install_lynx do
18
+ sudo "aptitude install -y lynx"
19
+ end
20
+
21
+ desc "Installs extra util mailutils"
22
+ task :install_mailutils do
23
+ sudo "aptitude install -y mailutils"
24
+ end
25
+
26
+ desc "Installs extra util munin"
27
+ task :install_munin do
28
+ sudo "aptitude install -y munin"
29
+ end
30
+
31
+ desc "Installs extra util imagemagick"
32
+ task :install_imagemagick do
33
+ sudo "apt-get install libmagick9-dev librmagick-ruby1.8 librmagick-ruby libmagickcore-dev msttcorefonts imagemagick libmagickwand-dev"
34
+ sudo "ldconfig"
35
+ sudo "gem install rmagick"
36
+ end
37
+ end
38
+
39
+ #
@@ -0,0 +1,43 @@
1
+ namespace :ffmpeg do
2
+ # FFmpeg install has been tested in June 2009 as working with these settings:
3
+ # set :x264_commit_hash, '2c597171d5126c3ccae7546f6699d6c4d8ec5e3a'
4
+ # set :ffmpeg_commit_hash, 'cc32213534573a127e01a0e2ed4962eb4b1939fd'
5
+ # set :libswscale_commit_hash, '0fa4ae3fc08f75277e2c1f225561053243f18576'
6
+ _cset :x264_commit_hash, ''
7
+ _cset :ffmpeg_commit_hash, ''
8
+ _cset :libswscale_commit_hash, ''
9
+
10
+ desc 'Install FFmpeg dependencies'
11
+ task :install_dependencies, :roles => :app do
12
+ #TODO: Ensure that the multiverse repositories/sources are available and being used by aptitude \
13
+ # otherwise add them to /etc/apt/sources.list since they are needed for libraries such as libmp3lame-dev
14
+ sudo "aptitude install -y ccache checkinstall fakeroot liba52-0.7.4-dev liba52-dev libfaac-dev libfaad-dev libfreetype6-dev libgpac-dev libjpeg62-dev liblame-dev liblame0 libmp3lame-dev libogg-dev libpng12-dev libtheora-dev libtiff4-dev libvorbis-dev libxvidcore4-dev"
15
+ run "wget http://www.tortall.net/projects/yasm/releases/yasm-0.7.1.tar.gz -O yasm-0.7.1.tar.gz && tar -xzf yasm-0.7.1.tar.gz && cd yasm-0.7.1 && ./configure && make && sudo checkinstall -y"
16
+ sudo "ldconfig"
17
+ run "if test -x x264; then cd x264 && git checkout master && git pull; else git clone git://git.videolan.org/x264.git; fi"
18
+ if x264_commit_hash.size > 0
19
+ run "cd x264 && git checkout #{x264_commit_hash}"
20
+ end
21
+ run "cd x264 && ./configure --enable-pthread --enable-mp4-output --enable-shared --enable-pic --extra-asflags='-fPIC' --extra-cflags='-march=k8 -mtune=k8 -pipe -fomit-frame-pointer' && make && sudo checkinstall -y"
22
+ sudo "ldconfig"
23
+ run "wget http://ftp.penguin.cz/pub/users/utx/amr/amrnb-7.0.0.2.tar.bz2 -O amrnb-7.0.0.2.tar.bz2 && tar -xjf amrnb-7.0.0.2.tar.bz2 && cd amrnb-7.0.0.2 && ./configure && make && sudo make install"
24
+ run "wget http://ftp.penguin.cz/pub/users/utx/amr/amrwb-7.0.0.3.tar.bz2 -O amrwb-7.0.0.3.tar.bz2 && tar -xjf amrwb-7.0.0.3.tar.bz2 && cd amrwb-7.0.0.3 && ./configure && make && sudo make install"
25
+ sudo "ldconfig"
26
+ end
27
+
28
+ desc 'Install FFmpeg'
29
+ task :install, :roles => :app do
30
+ install_dependencies
31
+ run "if test -x ffmpeg; then cd ffmpeg && git checkout master && git pull; else git clone git://git.ffmpeg.org/ffmpeg; fi"
32
+ run "if test -x ffmpeg/libswscale; then cd ffmpeg/libswscale && git checkout master && git pull; else cd ffmpeg && git clone git://git.ffmpeg.org/libswscale; fi"
33
+ if ffmpeg_commit_hash.size > 0
34
+ run "cd ffmpeg && git checkout #{ffmpeg_commit_hash}"
35
+ end
36
+ if libswscale_commit_hash.size > 0
37
+ run "cd ffmpeg/libswscale && git checkout #{libswscale_commit_hash}"
38
+ end
39
+ sudo "ldconfig"
40
+ run "cd ffmpeg && ./configure --enable-gpl --enable-shared --enable-nonfree --enable-libfaadbin --enable-libamr-nb --enable-libamr-wb --enable-libfaac --enable-libfaad --enable-libmp3lame --enable-libx264 --enable-pthreads --enable-libxvid --disable-liba52 --disable-libvorbis --disable-libtheora --disable-libgsm --disable-postproc --disable-swscale --disable-debug --cc='ccache gcc' && make && sudo checkinstall -y"
41
+ sudo "ldconfig"
42
+ end
43
+ end
@@ -0,0 +1,41 @@
1
+ namespace :gems do
2
+ desc "Install RubyGems"
3
+ task :install_rubygems, :roles => :app do
4
+ sudo "apt-get install wget"
5
+
6
+ run "wget http://production.cf.rubygems.org/rubygems/rubygems-#{rubygem_version}.tgz"
7
+ run "tar xvzf rubygems-#{rubygem_version}.tgz"
8
+ run "cd rubygems-#{rubygem_version} && sudo ruby setup.rb"
9
+ sudo "ln -s /usr/bin/gem1.8 /usr/bin/gem"
10
+ sudo "gem update"
11
+ sudo "gem update --system"
12
+ run "rm -Rf rubygems-#{rubygem_version}*"
13
+ end
14
+
15
+ desc "List gems on remote server"
16
+ task :list, :roles => :app do
17
+ stream "gem list"
18
+ end
19
+
20
+ desc "Update gems on remote server"
21
+ task :update, :roles => :app do
22
+ sudo "gem update"
23
+ end
24
+
25
+ desc "Update gem system on remote server"
26
+ task :update_system, :roles => :app do
27
+ sudo "gem update --system"
28
+ end
29
+
30
+ desc "Install a gem on the remote server"
31
+ task :install, :roles => :app do
32
+ name = Capistrano::CLI.ui.ask("Which gem should we install: ")
33
+ sudo "gem install #{name}"
34
+ end
35
+
36
+ desc "Uninstall a gem on the remote server"
37
+ task :uninstall, :roles => :app do
38
+ name = Capistrano::CLI.ui.ask("Which gem should we uninstall: ")
39
+ sudo "gem uninstall #{name}"
40
+ end
41
+ end
@@ -0,0 +1,15 @@
1
+ namespace :git do
2
+ desc "Install git"
3
+ task :install, :roles => :app do
4
+ sudo "sudo apt-get build-dep git-core -y"
5
+ run "wget http://kernel.org/pub/software/scm/git/#{git_version}.tar.gz"
6
+ run "tar xvzf #{git_version}.tar.gz"
7
+ run "cd #{git_version}"
8
+ run "cd #{git_version} && ./configure"
9
+ run "cd #{git_version} && make"
10
+ run "cd #{git_version} && sudo make install"
11
+ run "rm #{git_version}.tar.gz"
12
+ run "rm -Rf #{git_version}"
13
+ end
14
+
15
+ end
@@ -0,0 +1,36 @@
1
+ require 'erb'
2
+
3
+ # render a template
4
+ def render(file, binding)
5
+ template = File.read("#{File.dirname(__FILE__)}/templates/#{file}.erb")
6
+ result = ERB.new(template).result(binding)
7
+ end
8
+
9
+ # allows to sudo a command which require the user input via the prompt
10
+ def sudo_and_watch_prompt(cmd, regex_to_watch)
11
+ sudo cmd, :pty => true do |ch, stream, data|
12
+ watch_prompt(ch, stream, data, regex_to_watch)
13
+ end
14
+ end
15
+
16
+ # allows to run a command which require the user input via the prompt
17
+ def run_and_watch_prompt(cmd, regex_to_watch)
18
+ run cmd, :pty => true do |ch, stream, data|
19
+ watch_prompt(ch, stream, data, regex_to_watch)
20
+ end
21
+ end
22
+
23
+ # utility method called by sudo_and_watch_prompt and run_and_watch_prompt
24
+ def watch_prompt(ch, stream, data, regex_to_watch)
25
+
26
+ # the regex can be an array or a single regex -> we force it to always be an array with [*xx]
27
+ if [*regex_to_watch].find { |regex| data =~ regex}
28
+ # prompt, and then send the response to the remote process
29
+ ch.send_data(Capistrano::CLI.password_prompt(data) + "\n")
30
+ else
31
+ # use the default handler for all other text
32
+ Capistrano::Configuration.default_io_proc.call(ch, stream, data)
33
+ end
34
+ end
35
+
36
+