suitmymind-ubuntu-machine 0.3.1.2 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
data/README CHANGED
@@ -2,4 +2,8 @@
2
2
  http://suitmymind.github.com/ubuntu-machine
3
3
 
4
4
  = Changelog here :
5
- http://suitmymind.github.com/ubuntu-machine/#changelog
5
+ http://suitmymind.github.com/ubuntu-machine/#changelog
6
+
7
+ = Contributors :
8
+ - Joseph Glenn
9
+ - Ahume
@@ -37,15 +37,7 @@ namespace :aptitude do
37
37
  # if it must overwrite this file, since it has been modified by OVH. \
38
38
  # data =~ /^\*\*\*\sissue/ looks for the interactive prompt to enable you to answer
39
39
  sudo 'aptitude hold console-setup -y'
40
- sudo 'aptitude safe-upgrade -y', :pty => true do |ch, stream, data|
41
- if data =~ /^\*\*\*\sissue/
42
- # prompt, and then send the response to the remote process
43
- ch.send_data(Capistrano::CLI.password_prompt(data) + "\n")
44
- else
45
- # use the default handler for all other text
46
- Capistrano::Configuration.default_io_proc.call(ch, stream, data)
47
- end
48
- end
40
+ sudo_and_watch_prompt("aptitude safe-upgrade -y", /^\*\*\*\sissue/)
49
41
  end
50
42
 
51
43
  desc <<-DESC
@@ -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
+
@@ -5,26 +5,9 @@ namespace :machine do
5
5
  set :user_to_create , user
6
6
  set :user, 'root'
7
7
 
8
-
9
- run "passwd", :pty => true do |ch, stream, data|
10
- if data =~ /Enter new UNIX password/ || data=~ /Retype new UNIX password:/
11
- # prompt, and then send the response to the remote process
12
- ch.send_data(Capistrano::CLI.password_prompt(data) + "\n")
13
- else
14
- # use the default handler for all other text
15
- Capistrano::Configuration.default_io_proc.call(ch, stream, data)
16
- end
17
- end
18
-
19
- run "adduser #{user_to_create}", :pty => true do |ch, stream, data|
20
- if data =~ /Enter new UNIX password/ || data=~ /Retype new UNIX password:/ || data=~/\[\]\:/ || data=~/\[y\/N\]/i
21
- # prompt, and then send the response to the remote process
22
- ch.send_data(Capistrano::CLI.password_prompt(data) + "\n")
23
- else
24
- # use the default handler for all other text
25
- Capistrano::Configuration.default_io_proc.call(ch, stream, data)
26
- end
27
- end
8
+ run_and_watch_prompt("passwd", [/Enter new UNIX password/, /Retype new UNIX password:/])
9
+
10
+ run_and_watch_prompt("adduser #{user_to_create}", [/Enter new UNIX password/, /Retype new UNIX password:/, /\[\]\:/, /\[y\/N\]/i])
28
11
 
29
12
  run "echo '#{user_to_create} ALL=(ALL)ALL' >> /etc/sudoers"
30
13
  run "echo 'AllowUsers #{user_to_create}' >> /etc/ssh/sshd_config"
@@ -52,14 +35,6 @@ namespace :machine do
52
35
  task :change_password do
53
36
  user_to_update = Capistrano::CLI.ui.ask("Name of the user whose you want to update the password : ")
54
37
 
55
- sudo "passwd #{user_to_update}", :pty => true do |ch, stream, data|
56
- if data =~ /Enter new UNIX password/ || data=~ /Retype new UNIX password:/
57
- # prompt, and then send the response to the remote process
58
- ch.send_data(Capistrano::CLI.password_prompt(data) + "\n")
59
- else
60
- # use the default handler for all other text
61
- Capistrano::Configuration.default_io_proc.call(ch, stream, data)
62
- end
63
- end
38
+ run_and_watch_prompt("passwd #{user_to_update}", [/Enter new UNIX password/, /Retype new UNIX password:/])
64
39
  end
65
40
  end
@@ -19,16 +19,7 @@ namespace :mysql do
19
19
  desc "Export MySQL database"
20
20
  task :export, :roles => :db do
21
21
  database = Capistrano::CLI.ui.ask("Which database should we export: ")
22
- # sudo "mysqldump -u root -p #{database} > #{database}.sql", :pty => true
23
- sudo "mysqldump -u root -p #{database} > #{database}.sql", :pty => true do |ch, stream, data|
24
- if data =~ /Enter\spassword/
25
- # prompt, and then send the response to the remote process
26
- ch.send_data(Capistrano::CLI.password_prompt(data) + "\n")
27
- else
28
- # use the default handler for all other text
29
- Capistrano::Configuration.default_io_proc.call(ch, stream, data)
30
- end
31
- end
22
+ sudo_and_watch_prompt("mysqldump -u root -p #{database} > #{database}.sql", /Enter\spassword/)
32
23
  download "#{database}.sql", "#{default_local_files_path}/database.sql"
33
24
  run "rm #{database}.sql"
34
25
  end
@@ -58,7 +49,6 @@ namespace :mysql do
58
49
  task :install, :roles => :db do
59
50
  db_root_password = Capistrano::CLI.ui.ask("Choose a MySQL root password : ")
60
51
  sudo "aptitude install -y mysql-server mysql-client libmysqlclient15-dev"
61
- sudo "aptitude install -y libmysql-ruby1.8"
62
52
  run "mysqladmin -u root password #{db_root_password}"
63
53
  end
64
54
 
@@ -1,13 +1,25 @@
1
+ require 'net/http'
2
+
1
3
  namespace :ruby do
2
4
  desc "Install Ruby 1.8"
3
5
  task :install, :roles => :app do
4
6
  sudo "aptitude install -y ruby1.8-dev ruby1.8 ri1.8 rdoc1.8 irb1.8 libreadline-ruby1.8 libruby1.8 libopenssl-ruby sqlite3 libsqlite3-ruby1.8"
7
+ sudo "aptitude install -y libmysql-ruby1.8"
5
8
 
6
9
  sudo "ln -s /usr/bin/ruby1.8 /usr/bin/ruby"
7
10
  sudo "ln -s /usr/bin/ri1.8 /usr/bin/ri"
8
11
  sudo "ln -s /usr/bin/rdoc1.8 /usr/bin/rdoc"
9
12
  sudo "ln -s /usr/bin/irb1.8 /usr/bin/irb"
10
13
  end
14
+
15
+
16
+ set :ruby_enterprise_url do
17
+ Net::HTTP.get('www.rubyenterpriseedition.com', '/download.html').scan(/http:.*\.tar\.gz/).first
18
+ end
19
+
20
+ set :ruby_enterprise_version do
21
+ "#{ruby_enterprise_url[/(ruby-enterprise.*)(.tar.gz)/, 1]}"
22
+ end
11
23
 
12
24
  desc "Install Ruby Enterpise Edition"
13
25
  task :install_enterprise, :roles => :app do
@@ -15,7 +27,8 @@ namespace :ruby do
15
27
  sudo "apt-get install libreadline5-dev -y"
16
28
 
17
29
  run "test ! -d /opt/#{ruby_enterprise_version}"
18
- run "curl -LO http://rubyforge.org/frs/download.php/50087/#{ruby_enterprise_version}.tar.gz"
30
+ # run "curl -LO http://rubyforge.org/frs/download.php/50087/#{ruby_enterprise_version}.tar.gz"
31
+ run "curl -LO #{ruby_enterprise_url}"
19
32
  run "tar xzvf #{ruby_enterprise_version}.tar.gz"
20
33
  run "rm #{ruby_enterprise_version}.tar.gz"
21
34
  sudo "./#{ruby_enterprise_version}/installer --auto /opt/#{ruby_enterprise_version}"
@@ -33,16 +33,8 @@ namespace :utils do
33
33
 
34
34
  desc "Activate Phusion Passenger Enterprise Edition."
35
35
  task :passenger_enterprise, :roles => :gateway do
36
- # sudo "passenger-make-enterprisey"
37
- sudo '/opt/ruby-enterprise/bin/passenger-make-enterprisey', :pty => true do |ch, stream, data|
38
- if data =~ /Key\:/ || data =~ /again\:/
39
- # prompt, and then send the response to the remote process
40
- ch.send_data(Capistrano::CLI.password_prompt(data) + "\n")
41
- else
42
- # use the default handler for all other text
43
- Capistrano::Configuration.default_io_proc.call(ch, stream, data)
44
- end
45
- end
36
+
37
+ sudo_and_watch_prompt("/opt/ruby-enterprise/bin/passenger-make-enterprisey", [/Key\:/, /again\:/])
46
38
  end
47
39
 
48
40
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: suitmymind-ubuntu-machine
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.1.2
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Thomas Balthazar
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-01-31 00:00:00 -08:00
12
+ date: 2009-02-06 00:00:00 -08:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -34,6 +34,7 @@ files:
34
34
  - MIT-LICENSE
35
35
  - lib/capistrano/ext/ubuntu-machine.rb
36
36
  - lib/capistrano/ext/ubuntu-machine
37
+ - lib/capistrano/ext/ubuntu-machine/helpers.rb
37
38
  - lib/capistrano/ext/ubuntu-machine/ruby.rb
38
39
  - lib/capistrano/ext/ubuntu-machine/gems.rb
39
40
  - lib/capistrano/ext/ubuntu-machine/git.rb
@@ -41,7 +42,6 @@ files:
41
42
  - lib/capistrano/ext/ubuntu-machine/php.rb
42
43
  - lib/capistrano/ext/ubuntu-machine/ssh.rb
43
44
  - lib/capistrano/ext/ubuntu-machine/machine.rb
44
- - lib/capistrano/ext/ubuntu-machine/render.rb
45
45
  - lib/capistrano/ext/ubuntu-machine/apache.rb
46
46
  - lib/capistrano/ext/ubuntu-machine/iptables.rb
47
47
  - lib/capistrano/ext/ubuntu-machine/mysql.rb
@@ -1,6 +0,0 @@
1
- require 'erb'
2
-
3
- def render(file, binding)
4
- template = File.read("#{File.dirname(__FILE__)}/templates/#{file}.erb")
5
- result = ERB.new(template).result(binding)
6
- end