bcalloway-slicehost 0.0.2.6 → 0.0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (30) hide show
  1. data/MIT-LICENSE +20 -0
  2. data/README +99 -0
  3. data/lib/capistrano/ext/slicehost.rb +7 -0
  4. data/lib/capistrano/ext/slicehost/apache.rb +90 -0
  5. data/lib/capistrano/ext/slicehost/aptitude.rb +94 -0
  6. data/lib/capistrano/ext/slicehost/disk.rb +13 -0
  7. data/lib/capistrano/ext/slicehost/gems.rb +41 -0
  8. data/lib/capistrano/ext/slicehost/git.rb +6 -0
  9. data/lib/capistrano/ext/slicehost/iptables.rb +21 -0
  10. data/lib/capistrano/ext/slicehost/mysql.rb +36 -0
  11. data/lib/capistrano/ext/slicehost/nginx.rb +70 -0
  12. data/lib/capistrano/ext/slicehost/postgresql.rb +37 -0
  13. data/lib/capistrano/ext/slicehost/profile.rb +11 -0
  14. data/lib/capistrano/ext/slicehost/render.rb +6 -0
  15. data/lib/capistrano/ext/slicehost/ruby.rb +59 -0
  16. data/lib/capistrano/ext/slicehost/slice.rb +10 -0
  17. data/lib/capistrano/ext/slicehost/ssh.rb +59 -0
  18. data/lib/capistrano/ext/slicehost/templates/bashrc.erb +93 -0
  19. data/lib/capistrano/ext/slicehost/templates/iptables.erb +42 -0
  20. data/lib/capistrano/ext/slicehost/templates/mydircolors.erb +170 -0
  21. data/lib/capistrano/ext/slicehost/templates/nanorc.erb +260 -0
  22. data/lib/capistrano/ext/slicehost/templates/passenger.conf.erb +2 -0
  23. data/lib/capistrano/ext/slicehost/templates/passenger.load.erb +1 -0
  24. data/lib/capistrano/ext/slicehost/templates/sshd_config.erb +81 -0
  25. data/lib/capistrano/ext/slicehost/templates/vhost.erb +8 -0
  26. data/lib/capistrano/ext/slicehost/templates/vhost_nginx.erb +23 -0
  27. data/lib/capistrano/ext/slicehost/templates/vimrc.erb +4 -0
  28. data/lib/capistrano/ext/slicehost/useradd.rb +68 -0
  29. data/lib/capistrano/ext/slicehost/vim.rb +19 -0
  30. metadata +39 -10
data/MIT-LICENSE ADDED
@@ -0,0 +1,20 @@
1
+ Copyright (c) 2009 Joshua Peek
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,99 @@
1
+ Slicehost Recipes
2
+ =================
3
+
4
+ Note: This is a fork of the original slicehost Capistrano recipies by Joshua Peek
5
+
6
+ Slicehost Capistrano recipes for configuring and managing your slice. Require Capistrano >2.5.0
7
+
8
+ Setup
9
+ =======
10
+
11
+ The recipes are designed to work stand alone apart from the standard set of Capistrano deploy recipes.
12
+
13
+ require 'capistrano/ext/slicehost' in your deploy.rb file
14
+
15
+ Slice setup recipies
16
+ ====================
17
+
18
+ Commonly used setup recipies. Check the source for more.
19
+
20
+ Setup ssh, iptables and aptitude
21
+ cap slice:configure
22
+
23
+ Setup mysql
24
+ cap mysql:install
25
+
26
+ Install Apache
27
+ cap apache:install
28
+
29
+ Install ruby 1.8
30
+ cap ruby:setup_18
31
+
32
+ Install ruby enterprise
33
+ cap ruby:install_enterprise
34
+
35
+ Install ruby gems
36
+ cap gems:install_rubygems
37
+
38
+ Install passenger
39
+ cap ruby:install_passenger
40
+
41
+ Upload vhost template
42
+ cap apache:upload_vhost
43
+
44
+ Install git
45
+ cap git:install
46
+
47
+ Maintenance recipies
48
+ ====================
49
+
50
+ Commonly used maitenance recipies. Check the source for more.
51
+
52
+ Show disk space
53
+ cap disk:free
54
+
55
+ Show free memory
56
+ cap disk:memory
57
+
58
+ Update aptitude
59
+ cap aptitude:update
60
+
61
+ Upgrade aptitude
62
+ cap aptitude:upgrade
63
+
64
+ Install package (it will ask you which)
65
+ cap aptitude:install
66
+
67
+ Reload SSH
68
+ cap ssh:reload
69
+
70
+ Install a gem (it will ask you which)
71
+ cap gems:intall
72
+
73
+ List gems
74
+ cap gems:list
75
+
76
+ Restart apache
77
+ cap apache:restart
78
+
79
+ Reload apache
80
+ cap apache:reload
81
+
82
+ Force reload apache
83
+ cap apache:force_reload
84
+
85
+
86
+ Contributors
87
+ ============
88
+
89
+ * Oleg Zhurbiy
90
+ * Thomas Balthazar
91
+ * Fran Diéguez
92
+ * Stephen Lumenta
93
+ * Jared Giles
94
+ * John Nunemaker
95
+ * Eloy Duran
96
+ * Mischa Fierer
97
+ * Kurt Schrader
98
+
99
+ Copyright (c) 2009 Joshua Peek, released under the MIT license
@@ -0,0 +1,7 @@
1
+ unless Capistrano::Configuration.respond_to?(:instance)
2
+ abort "Requires Capistrano 2"
3
+ end
4
+
5
+ Dir["#{File.dirname(__FILE__)}/slicehost/*.rb"].each { |lib|
6
+ Capistrano::Configuration.instance.load {load(lib)}
7
+ }
@@ -0,0 +1,90 @@
1
+ set(:domain) do
2
+ Capistrano::CLI.ui.ask "Which domain should we use? "
3
+ end
4
+
5
+ namespace :apache do
6
+ desc "Restarts Apache webserver"
7
+ task :restart, :roles => :web do
8
+ sudo "/etc/init.d/apache2 restart"
9
+ end
10
+
11
+ desc "Starts Apache webserver"
12
+ task :start, :roles => :web do
13
+ sudo "/etc/init.d/apache2 start"
14
+ end
15
+
16
+ desc "Stops Apache webserver"
17
+ task :stop, :roles => :web do
18
+ sudo "/etc/init.d/apache2 stop"
19
+ end
20
+
21
+ desc "Reload Apache webserver"
22
+ task :reload, :roles => :web do
23
+ sudo "/etc/init.d/apache2 reload"
24
+ end
25
+
26
+ desc "Force reload Apache webserver"
27
+ task :force_reload, :roles => :web do
28
+ sudo "/etc/init.d/apache2 force-reload"
29
+ end
30
+
31
+ desc "List enabled Apache sites"
32
+ task :enabled_sites, :roles => :web do
33
+ run "ls /etc/apache2/sites-enabled"
34
+ end
35
+
36
+ desc "List available Apache sites"
37
+ task :available_sites, :roles => :web do
38
+ run "ls /etc/apache2/sites-available"
39
+ end
40
+
41
+ desc "List enabled Apache modules"
42
+ task :enabled_modules, :roles => :web do
43
+ run "ls /etc/apache2/mods-enabled"
44
+ end
45
+
46
+ desc "List available Apache modules"
47
+ task :available_modules, :roles => :web do
48
+ run "ls /etc/apache2/mods-available"
49
+ end
50
+
51
+ desc "Disable Apache site"
52
+ task :disable_site, :roles => :web do
53
+ site = Capistrano::CLI.ui.ask("Which site should we disable: ")
54
+ sudo "sudo a2dissite #{site}"
55
+ reload
56
+ end
57
+
58
+ desc "Enable Apache site"
59
+ task :enable_site, :roles => :web do
60
+ site = Capistrano::CLI.ui.ask("Which site should we enable: ")
61
+ sudo "sudo a2ensite #{site}"
62
+ reload
63
+ end
64
+
65
+ desc "Disable Apache module"
66
+ task :disable_module, :roles => :web do
67
+ mod = Capistrano::CLI.ui.ask("Which module should we disable: ")
68
+ sudo "sudo a2dismod #{mod}"
69
+ force_reload
70
+ end
71
+
72
+ desc "Enable Apache module"
73
+ task :enable_module, :roles => :web do
74
+ mod = Capistrano::CLI.ui.ask("Which module should we enable: ")
75
+ sudo "sudo a2enmod #{mod}"
76
+ force_reload
77
+ end
78
+
79
+ desc "Upload Apache virtual host"
80
+ task :upload_vhost, :roles => :web do
81
+ put render("vhost", binding), application
82
+ sudo "mv #{application} /etc/apache2/sites-available/#{application}"
83
+ end
84
+
85
+ desc "Install Apache"
86
+ task :install, :roles => :web do
87
+ sudo "aptitude install -y apache2 apache2.2-common apache2-mpm-prefork apache2-utils libexpat1 ssl-cert"
88
+ end
89
+
90
+ end
@@ -0,0 +1,94 @@
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 "aptitude 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
+ sudo "aptitude safe-upgrade -y"
35
+ end
36
+
37
+ desc <<-DESC
38
+ Upgrades your installed software packages.
39
+
40
+ From the aptitude man pages:
41
+
42
+ Like safe-upgrade, this command will attempt to upgrade packages, but it is \
43
+ more aggressive about solving dependency problems: it will install and \
44
+ remove packages until all dependencies are satisfied. Because of the nature \
45
+ of this command, it is possible that it will do undesirable things, and so \
46
+ you should be careful when using it.
47
+
48
+ See "Upgrade" section on \
49
+ http://articles.slicehost.com/2007/11/6/ubuntu-gutsy-setup-page-2
50
+ DESC
51
+ task :full_upgrade, :roles => :app do
52
+ sudo "aptitude full-upgrade -y"
53
+ end
54
+
55
+ desc <<-DESC
56
+ Installs a software package via aptitude. You will be prompted for the \
57
+ package name after running this commmand.
58
+ DESC
59
+ task :install, :roles => :app do
60
+ package = Capistrano::CLI.ui.ask("Which package should we install: ")
61
+ sudo "aptitude install -y #{package}"
62
+ end
63
+
64
+ desc <<-DESC
65
+ Uninstalls a software package via aptitude. You will be prompted for the \
66
+ package name after running this commmand.
67
+ DESC
68
+ task :uninstall, :roles => :app do
69
+ package = Capistrano::CLI.ui.ask("Which package should we uninstall: ")
70
+ sudo "aptitude remove #{package}"
71
+ end
72
+
73
+ desc <<-DESC
74
+ Updates software packages and creates "a solid base for the 'meat' of the \
75
+ server". This task should be run only once when you are first setting up your \
76
+ new slice.
77
+
78
+ For set another language different from en_GB.UTF-8, just set the LANG \
79
+ environment variable to your favorite language.
80
+ Ex. LANG="gl_ES.UTF-8"; cap aptitude:setup
81
+
82
+ See "Update", "locales", "Upgrade" and "build essentials" sections on \
83
+ http://articles.slicehost.com/2007/11/6/ubuntu-gutsy-setup-page-2
84
+ DESC
85
+ task :setup, :roles => :app do
86
+ update
87
+ language = ENV["LANG"] || "en_GB.UTF-8"
88
+ # sudo "locale-gen language"
89
+ # sudo "/usr/sbin/update-locale LANG=#{language}"
90
+ safe_upgrade
91
+ full_upgrade
92
+ sudo "aptitude install -y build-essential"
93
+ end
94
+ end
@@ -0,0 +1,13 @@
1
+ namespace :disk do
2
+
3
+ desc "Show the amount of free disk space."
4
+ task :free, :roles => :files do
5
+ run "df -h /"
6
+ end
7
+
8
+ desc "Show free memory"
9
+ task :memory, :roles => :files do
10
+ run "free -m"
11
+ end
12
+
13
+ end
@@ -0,0 +1,41 @@
1
+ namespace :gems do
2
+ desc "Install the gem package system"
3
+ task :install_rubygems, :roles => :app do
4
+ rubygems_url = "http://rubyforge.org/" + Net::HTTP.get( URI.parse('http://rubyforge.org/frs/?group_id=126') ).scan(/frs\/.*\.tgz/).first.split('"')[0]
5
+ rubygems_version = rubygems_url[/(rubygems.*)(.tgz)/, 1]
6
+ run "test ! -f /usr/bin/gem"
7
+ run "wget -q #{rubygems_url}"
8
+ run "tar xzvf #{rubygems_version}.tgz"
9
+ run "rm #{rubygems_version}.tgz"
10
+ run "cd /home/#{user}/#{rubygems_version} && sudo /usr/bin/ruby ./setup.rb"
11
+ sudo "ln -s /usr/bin/gem1.8 /usr/bin/gem"
12
+ sudo "rm -rf #{rubygems_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} --no-rdoc --no-ri"
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,6 @@
1
+ namespace :git do
2
+ desc "Install git"
3
+ task :install, :roles => :app do
4
+ sudo "aptitude install -y git-core"
5
+ end
6
+ end
@@ -0,0 +1,21 @@
1
+ namespace :iptables do
2
+ desc <<-DESC
3
+ Harden iptables configuration. Only allows ssh, http, and https connections.
4
+
5
+ See "iptables" section on \
6
+ http://articles.slicehost.com/2008/4/25/ubuntu-hardy-setup-page-1
7
+ DESC
8
+ task :configure, :roles => :gateway do
9
+ put render("iptables", binding), "iptables.up.rules"
10
+ sudo "mv iptables.up.rules /etc/iptables.up.rules"
11
+
12
+ if capture("cat /etc/network/interfaces").grep(/iptables/).empty?
13
+ run %(cat /etc/network/interfaces |
14
+ sed '/iface lo inet loopback/G' |
15
+ sed -e '6s/.*/pre-up iptables-restore < \\/etc\\\/iptables.up.rules/' >
16
+ interfaces
17
+ )
18
+ sudo "mv interfaces /etc/network/interfaces"
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,36 @@
1
+ namespace :mysql do
2
+ desc "Restarts MySQL database server"
3
+ task :restart, :roles => :db do
4
+ sudo "/etc/init.d/mysql restart"
5
+ end
6
+
7
+ desc "Starts MySQL database server"
8
+ task :start, :roles => :db do
9
+ sudo "/etc/init.d/mysql start"
10
+ end
11
+
12
+ desc "Stops MySQL database server"
13
+ task :stop, :roles => :db do
14
+ sudo "/etc/init.d/mysql stop"
15
+ end
16
+
17
+ desc "Export MySQL database"
18
+ task :export, :roles => :db do
19
+ database = Capistrano::CLI.ui.ask("Which database should we export: ")
20
+ sudo "mysqldump -u root -p #{database} > #{database}.sql"
21
+ end
22
+
23
+ desc "Import MySQL database"
24
+ task :import, :roles => :db do
25
+ database = Capistrano::CLI.ui.ask("Which database should we create: ")
26
+ file = Capistrano::CLI.ui.ask("Which database file should we import: ")
27
+ sudo "mysqladmin -u root -p create #{database}"
28
+ sudo "mysql -u root -p #{database} < #{file}"
29
+ end
30
+
31
+ desc "Install MySQL"
32
+ task :install, :roles => :db do
33
+ sudo "aptitude install -y mysql-server mysql-client libmysqlclient15-dev"
34
+ sudo "aptitude install -y libmysql-ruby1.8"
35
+ end
36
+ end
@@ -0,0 +1,70 @@
1
+ set(:domain) do
2
+ Capistrano::CLI.ui.ask "Which domain should we use? "
3
+ end
4
+
5
+ set :nginx_path, "/opt/nginx"
6
+
7
+ namespace :nginx do
8
+ desc "Restarts Nginx webserver"
9
+ task :restart, :roles => :web do
10
+ sudo "/etc/init.d/nginx restart"
11
+ end
12
+
13
+ desc "Starts Nginx webserver"
14
+ task :start, :roles => :web do
15
+ sudo "/etc/init.d/nginx start"
16
+ end
17
+
18
+ desc "Stops Nginx webserver"
19
+ task :stop, :roles => :web do
20
+ sudo "/etc/init.d/nginx stop"
21
+ end
22
+
23
+ desc "Reload Nginx webserver"
24
+ task :reload, :roles => :web do
25
+ sudo "/etc/init.d/nginx reload"
26
+ end
27
+
28
+ desc "Force reload Nginx webserver"
29
+ task :force_reload, :roles => :web do
30
+ sudo "/etc/init.d/nginx force-reload"
31
+ end
32
+
33
+ desc "List enabled Nginx sites"
34
+ task :enabled_sites, :roles => :web do
35
+ run "ls #{nginx_path}/sites-enabled"
36
+ end
37
+
38
+ desc "List available Nginx sites"
39
+ task :available_sites, :roles => :web do
40
+ run "ls #{nginx_path}/sites-available"
41
+ end
42
+
43
+ desc "Disable Nginx site"
44
+ task :disable_site, :roles => :web do
45
+ site = Capistrano::CLI.ui.ask("Which site should we disable: ")
46
+ sudo "rm #{nginx_path}/sites-enabled/#{site}"
47
+ reload
48
+ end
49
+
50
+ desc "Enable Nginx site"
51
+ task :enable_site, :roles => :web do
52
+ site = Capistrano::CLI.ui.ask("Which site should we enable: ")
53
+ sudo "ln -s #{nginx_path}/sites-available/#{site} #{nginx_path}/sites-enabled/#{site}"
54
+ reload
55
+ end
56
+
57
+ desc "Upload Nginx virtual host"
58
+ task :upload_vhost, :roles => :web do
59
+ put render("vhost_nginx", binding), application
60
+ sudo "mv #{application} #{nginx_path}/sites-available/#{application}"
61
+ end
62
+
63
+ desc "Install Nginx"
64
+ task :install, :roles => :web do
65
+ sudo "passenger-install-nginx-module --auto --auto-download --prefix #{nginx_path} "
66
+ sudo "mkdir #{nginx_path}/sites-available"
67
+ sudo "mkdir #{nginx_path}/sites-enabled"
68
+ end
69
+
70
+ end