axtro-rubber 1.0.2.8 → 1.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (67) hide show
  1. data/CHANGELOG +124 -0
  2. data/VERSION +1 -1
  3. data/generators/vulcanize/templates/apache/config/rubber/role/web_tools/tools-apache-vhost.conf +4 -0
  4. data/generators/vulcanize/templates/apache/config/rubber/role/web_tools/tools-index.html +6 -2
  5. data/generators/vulcanize/templates/apache/config/rubber/rubber-apache.yml +0 -1
  6. data/generators/vulcanize/templates/base/config/rubber/common/crontab +2 -1
  7. data/generators/vulcanize/templates/base/config/rubber/common/monit-postfix.conf +8 -0
  8. data/generators/vulcanize/templates/base/config/rubber/common/rubber.profile +14 -0
  9. data/generators/vulcanize/templates/base/config/rubber/deploy-setup.rb +21 -41
  10. data/generators/vulcanize/templates/base/config/rubber/rubber-dns.yml +79 -0
  11. data/generators/vulcanize/templates/base/config/rubber/rubber.yml +29 -30
  12. data/generators/vulcanize/templates/complete_passenger_mysql/config/rubber/role/haproxy/haproxy-passenger.conf +2 -0
  13. data/generators/vulcanize/templates/jetty/config/rubber/deploy-jetty.rb +59 -0
  14. data/generators/vulcanize/templates/jetty/config/rubber/role/jetty/jetty.sh +589 -0
  15. data/generators/vulcanize/templates/jetty/config/rubber/role/jetty/jetty.xml +199 -0
  16. data/generators/vulcanize/templates/jetty/config/rubber/role/jetty/monit-jetty.conf +9 -0
  17. data/generators/vulcanize/templates/jetty/config/rubber/rubber-jetty.yml +10 -0
  18. data/generators/vulcanize/templates/jetty/templates.yml +1 -0
  19. data/generators/vulcanize/templates/mongrel/config/rubber/role/mongrel/monit-mongrel.conf +2 -2
  20. data/generators/vulcanize/templates/munin/config/rubber/common/munin-plugins.conf +9 -0
  21. data/generators/vulcanize/templates/munin/config/rubber/rubber-munin.yml +1 -1
  22. data/generators/vulcanize/templates/munin/script/munin/example_mysql_query.rb +3 -3
  23. data/generators/vulcanize/templates/mysql/config/rubber/rubber-mysql.yml +1 -0
  24. data/generators/vulcanize/templates/passenger/config/rubber/deploy-passenger.rb +1 -1
  25. data/generators/vulcanize/templates/passenger/config/rubber/role/passenger/munin-passenger-memory.conf +34 -0
  26. data/generators/vulcanize/templates/passenger/config/rubber/role/passenger/munin-passenger-sudoers.conf +2 -1
  27. data/generators/vulcanize/templates/passenger/config/rubber/role/passenger/munin-passenger.conf +1 -1
  28. data/generators/vulcanize/templates/passenger/config/rubber/role/passenger/passenger.conf +3 -3
  29. data/generators/vulcanize/templates/passenger/config/rubber/rubber-passenger.yml +5 -2
  30. data/generators/vulcanize/templates/passenger/templates.yml +3 -1
  31. data/generators/vulcanize/templates/redis/config/rubber/deploy-redis.rb +36 -0
  32. data/generators/vulcanize/templates/redis/config/rubber/role/redis/crontab +8 -0
  33. data/generators/vulcanize/templates/redis/config/rubber/role/redis/monit-redis.conf +9 -0
  34. data/generators/vulcanize/templates/redis/config/rubber/role/redis/redis.conf +141 -0
  35. data/generators/vulcanize/templates/redis/config/rubber/rubber-redis.yml +4 -0
  36. data/generators/vulcanize/templates/redis/templates.yml +1 -0
  37. data/generators/vulcanize/templates/resque/config/rubber/deploy-resque-worker-default.rb +38 -0
  38. data/generators/vulcanize/templates/resque/config/rubber/deploy-resque.rb +39 -0
  39. data/generators/vulcanize/templates/resque/config/rubber/role/resque_worker_default/monit-resque_worker_default.conf +19 -0
  40. data/generators/vulcanize/templates/resque/config/rubber/rubber-resque.yml +10 -0
  41. data/generators/vulcanize/templates/resque/templates.yml +3 -0
  42. data/generators/vulcanize/templates/sphinx/config/rubber/role/sphinx/crontab +2 -2
  43. data/generators/vulcanize/templates/sphinx/config/rubber/role/sphinx/monit-sphinx.conf +2 -2
  44. data/lib/rubber/cloud/aws.rb +32 -2
  45. data/lib/rubber/dns/base.rb +41 -26
  46. data/lib/rubber/dns/dyndns.rb +25 -10
  47. data/lib/rubber/dns/nettica.rb +75 -31
  48. data/lib/rubber/dns/zerigo.rb +96 -53
  49. data/lib/rubber/environment.rb +11 -3
  50. data/lib/rubber/instance.rb +11 -0
  51. data/lib/rubber/recipes/rubber/instances.rb +59 -6
  52. data/lib/rubber/recipes/rubber/security_groups.rb +1 -1
  53. data/lib/rubber/recipes/rubber/setup.rb +155 -52
  54. data/lib/rubber/recipes/rubber/spot_requests.rb +23 -0
  55. data/lib/rubber/recipes/rubber/static_ips.rb +83 -0
  56. data/lib/rubber/recipes/rubber/utils.rb +2 -2
  57. data/lib/rubber/recipes/rubber.rb +10 -3
  58. data/lib/rubber/tasks/rubber.rb +64 -6
  59. data/lib/rubber.rb +1 -1
  60. data/rails/init.rb +9 -0
  61. data/test/environment_test.rb +18 -0
  62. data/test/generator_test.rb +3 -0
  63. data/test/instance_test.rb +3 -0
  64. data/test/test_helper.rb +4 -0
  65. data/test/util_test.rb +3 -0
  66. metadata +28 -4
  67. data/generators/vulcanize/templates/base/config/rubber/common/profile.rc +0 -9
data/CHANGELOG CHANGED
@@ -1,3 +1,127 @@
1
+ 1.2.0
2
+ -----
3
+
4
+ Added Windows support. <e3c883e> [Kevin Menard]
5
+ The libmysql-ruby package seems to not work with the latest Ruby enterprise edition, so re-install the gem to be safe. <931b19d> [Kevin Menard]
6
+ Bumped to the latest ruby enterprise edition. <0ab3557> [Kevin Menard]
7
+ Added example spot instance request configuration. <239b2f4> [Kevin Menard]
8
+ Updated to the latest version of redis. <9723864> [Kevin Menard]
9
+ Updated to the latest version of passenger. <5f152fc> [Kevin Menard]
10
+ Fixed rake failing due to Test::Unit 2.0 being installed. <a579dc2> [Kevin Menard]
11
+ Jeweler is available on gemcutter. <b5539b5> [Kevin Menard]
12
+ Merge branch 'master' of github.com:wr0ngway/rubber <5efd21d> [Kevin Menard]
13
+ Added support for spot instances. <a995d14> [Kevin Menard]
14
+ Task to move around static IP addresses. <9612eb9> [Matt Conway]
15
+ Merge branch 'master' of github.com:wr0ngway/rubber <3d66204> [Kevin Menard]
16
+ Make it easier to override jetty options. <96d566e> [Kevin Menard]
17
+
18
+ 1.1.7
19
+ -----
20
+
21
+ Merge branch 'master' of github.com:wr0ngway/rubber <cb39353> [Matt Conway]
22
+ fix for new security group param name in amazon-ec2 <a9f9b19> [Matt Conway]
23
+ Only raise an exception if there's a problem. <890837b> [nirvdrum]
24
+ Merge remote branch 'nirvdrum/resque2' <09fd5b8> [Matt Conway]
25
+ Merge remote branch 'nirvdrum/master' <0c99d7d> [Matt Conway]
26
+ use rubygems for crontab too <08d1d51> [Matt Conway]
27
+ munin needs a mailer for notifications <d933a8c> [Matt Conway]
28
+ Switched to the Jetty Hightide distribution to get JSP, JTA, and a few other niceties. <6d1b1a9> [Kevin Menard]
29
+ Bumped passenger version. <79feda0> [Kevin Menard]
30
+ Allow a configurable number of resque workers. <0587b40> [Kevin Menard]
31
+ Added support for resque. <67ae003> [Kevin Menard]
32
+
33
+ 1.1.6
34
+ -----
35
+
36
+ stop using helper method to install ree as it uses different path for 64bit pkg <fbdeab3> [Matt Conway]
37
+ remind about bootstrap <fd2e593> [Matt Conway]
38
+ fix setting of rails vars <cd7206d> [Matt Conway]
39
+ Merge remote branch 'nirvdrum/master' into pull <b902618> [Matt Conway]
40
+ add passenger memory stats munin plugin <de6bb9a> [Matt Conway]
41
+ setup path so that we select correct ruby globally <8365a70> [Matt Conway]
42
+ sort display order of tools <4a7a9a0> [Matt Conway]
43
+ fix arithmetic for server slicing in serial_task <4bbd9e7> [Matt Conway]
44
+ Upgraded to the latest version of redis. <a62955f> [Kevin Menard]
45
+ Merge branch 'wr0ngway/master' <09046af> [Kevin Menard]
46
+ escape percents in crontab <a299c3b> [Matt Conway]
47
+ fix ruby prefix path for passenger munin plugin <af9488d> [Matt Conway]
48
+ fix config reference in munin example <50e563d> [Matt Conway]
49
+ enable rubygems at system level for munin plugins <df32e3e> [Matt Conway]
50
+ env should use rubygems by default <c2467cc> [Matt Conway]
51
+ make default bucket name be dns friendly <b58fbbe> [Matt Conway]
52
+ fix sphinx crontab to sudo using configured user <3fe8b6f> [Matt Conway]
53
+ fix being able to reference cluster config (instance.yml) from within rubber.yml <08fecec> [Matt Conway]
54
+ Fixed monit conf file. <d84d287> [Kevin Menard]
55
+ git-core is fine on modern Ubuntu AMIs. <16eda00> [Kevin Menard]
56
+ Added a jetty generator. <5c18774> [Kevin Menard]
57
+
58
+ 1.1.5
59
+ -----
60
+
61
+ strip out blank security_groups to make it easier to conditionally define them in rubber.yml <f75f1a3> [Matt Conway]
62
+ add some feedback for add/remove role <bafe1bb> [Matt Conway]
63
+ prevent backup from sometimes trying to upload a directory to s3 <f8c7951> [Matt Conway]
64
+ make passenger template depend on apache <b970183> [Matt Conway]
65
+
66
+ 1.1.4
67
+ -----
68
+
69
+ role should be passenger, role dependencies handle the association from app -> passenger <fc9472f> [Matt Conway]
70
+ new version of REE <e347a82> [Matt Conway]
71
+
72
+ 1.1.3
73
+ -----
74
+
75
+ use correct path for passenger when using enterprise ruby or not <20a8542> [Matt Conway]
76
+ add ability to grab default roles from rubber.yml at instance creation time <8817d78> [Matt Conway]
77
+ add gemcutter, simplify changelog <44d989b> [Matt Conway]
78
+ update to latest 9.04 ami <5043937> [Matt Conway]
79
+ initial redis module <bb3a6b2> [Matt Conway]
80
+ monitor postfix <6303745> [Matt Conway]
81
+ switch to gemcutter <aead58a> [Matt Conway]
82
+ add changelog generation <06475d9> [Matt Conway]
83
+
84
+ 1.1.2
85
+ -----
86
+
87
+ fix ver <e32a665> [Matt Conway]
88
+ fix ver <f5c5172> [Matt Conway]
89
+ remove bad code <16306dc> [Matt Conway]
90
+
91
+ 1.1.1
92
+ -----
93
+
94
+ prevent reading from env before it is created (infinite loop) <b3255cb> [Matt Conway]
95
+ fix gemcutter task <7372e7b> [Matt Conway]
96
+ ignore gems <a879638> [Matt Conway]
97
+
98
+ 1.1.0
99
+ -----
100
+
101
+ add setup of arbitrary dns records via nettica or zerigo apis <61ca87e> [Matt Conway]
102
+ command for backing up arbitrary directories <d984451> [Matt Conway]
103
+ helper for installing rubber gems locally <51e926b> [Matt Conway]
104
+ add lib for rails initiliazer, fix bad char in description for gemcutter, add task for pushing to gemcutter <0ab8d80> [Matt Conway]
105
+ refactor dns classes to allow setting up other dns records from rubber.yml <937629c> [Matt Conway]
106
+ add rails/init.rb to gemspec, automate gemcutter gem creation <c9c3e52> [Matt Conway]
107
+ update REE to 1.8.7-20090928 <59888ec> [Matt Conway]
108
+ add gemcutter source <ae8aabb> [Matt Conway]
109
+ add forwarded ip address <735c9c7> [Matt Conway]
110
+ Merge branch 'master' of git@github.com:wr0ngway/rubber <4b1159b> [Matt Conway]
111
+ fix apache roles <83f602c> [Matt Conway]
112
+ better error message for missing image on destroy <53e8cf2> [Matt Conway]
113
+ don't check status when getting single host <d01a79c> [Matt Conway]
114
+ fix bad encoding char for gemcutter <c5290c2> [Matt Conway]
115
+
116
+ 1.0.2
117
+ -----
118
+
119
+ add some error checking <ad2c6a3> [Matt Conway]
120
+ add error msg for auth failure <7ca7bec> [Matt Conway]
121
+ fix setting of ip in zerigo <8ca947a> [Matt Conway]
122
+ more todos <a13e97a> [Matt Conway]
123
+ version bump <6c80a34> [Matt Conway]
124
+
1
125
  1.0.1
2
126
  -----
3
127
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.0.2
1
+ 1.2.0
@@ -59,4 +59,8 @@ Listen <%= rubber_env.web_tools_ssl_port %>
59
59
  ProxyHTMLURLMap / /monit_<%= ic.name %>/
60
60
  <% end %>
61
61
 
62
+ <% if resque_host = rubber_instances.for_role('resque').first %>
63
+ RackBaseURI /resque
64
+ <% end %>
65
+
62
66
  </VirtualHost>
@@ -17,13 +17,17 @@
17
17
  <li><a href="http://<%= cruise_host %>/cruise/">CruiseControl</a></li>
18
18
  <% end %>
19
19
 
20
- <% rubber_instances.for_role('haproxy').each do |ic| %>
20
+ <% rubber_instances.for_role('haproxy').sort {|a,b| a.name <=> b.name }.each do |ic| %>
21
21
  <li><a href="/haproxy_<%= ic.name %>/">HAProxy <%= ic.name %></a></li>
22
22
  <% end %>
23
23
 
24
- <% rubber_instances.each do |ic| %>
24
+ <% rubber_instances.sort {|a,b| a.name <=> b.name }.each do |ic| %>
25
25
  <li><a href="/monit_<%= ic.name %>/">Monit <%= ic.name %></a></li>
26
26
  <% end %>
27
+
28
+ <% if resque_host = rubber_instances.for_role('resque').first %>
29
+ <li><a href="/resque/">Resque</a></li>
30
+ <% end %>
27
31
 
28
32
  </ul>
29
33
  </body>
@@ -2,6 +2,5 @@
2
2
  roles:
3
3
  apache:
4
4
  packages: [apache2]
5
- roles:
6
5
  web_tools:
7
6
  packages: [libapache2-mod-proxy-html]
@@ -3,11 +3,12 @@
3
3
  @write_cmd = 'crontab -'
4
4
  %>
5
5
 
6
- PATH=/usr/local/bin:/usr/local/sbin:/usr/local/mysql/bin:/usr/bin:/bin:/sbin:/usr/sbin
6
+ PATH=/sbin:/usr/sbin:/usr/local/sbin:<%= rubber_env.ruby_prefix %>/bin:/usr/local/bin:/usr/bin:/bin
7
7
  MAILTO=<%= rubber_env.admin_email %>
8
8
  # don't need to set RUBBER_ENV for each script since we set it for all cron here
9
9
  RUBBER_ENV=<%= RUBBER_ENV %>
10
10
  RAILS_ENV=<%= RUBBER_ENV %>
11
+ RUBYOPT=rubygems
11
12
 
12
13
  # Roll all rails logs at midnight
13
14
  0 0 * * * LOG_DIR=<%= RUBBER_ROOT %>/log <%= RUBBER_ROOT %>/script/cron-rake rubber:rotate_logs
@@ -0,0 +1,8 @@
1
+ <%
2
+ @path = '/etc/monit/monit.d/monit-postfix.conf'
3
+ %>
4
+
5
+ check process postfix with pidfile /var/spool/postfix/pid/master.pid
6
+ start program "/etc/init.d/postfix start"
7
+ stop program "/etc/init.d/postfix stop"
8
+ if 5 restarts within 5 cycles then timeout
@@ -0,0 +1,14 @@
1
+ <%
2
+ @path = "/etc/profile.d/rubber.sh"
3
+ %>
4
+
5
+ # convenience to simply running rails console, etc with correct env
6
+ export RUBBER_ENV=<%= RUBBER_ENV %>
7
+ export RAILS_ENV=<%= RUBBER_ENV %>
8
+ alias current="cd <%= RUBBER_ROOT %>"
9
+
10
+ # make sure we use the right ruby since REE installs into /usr/local
11
+ export PATH=<%= rubber_env.ruby_prefix %>/bin:$PATH
12
+
13
+ # Always use rubygems
14
+ export RUBYOPT="rubygems"
@@ -13,33 +13,26 @@ namespace :rubber do
13
13
  rubber_instances.filtered.each do |ic|
14
14
  env = rubber_cfg.environment.bind(ic.role_names, ic.name)
15
15
  if env.use_enterprise_ruby
16
- ent_ruby_hosts << ic.full_name
16
+ ent_ruby_hosts << ic.full_name unless ic.windows?
17
17
  end
18
18
  end
19
19
 
20
20
  if ent_ruby_hosts.size > 0
21
-
22
21
  task :_install_enterprise_ruby, :hosts => ent_ruby_hosts do
23
-
24
- # preferences to pick up specific Ruby packages from brightbox
25
- prefs = <<-DATA
26
- Package: *
27
- Pin: release l=brightbox
28
- Pin-Priority: 1001
29
-
30
- Package: ruby1.8-elisp
31
- Pin: release l=Ubuntu
32
- Pin-Priority: 1001
33
- DATA
34
-
35
- prefs.gsub!(/^ */, '') # remove leading whitespace
36
- put(prefs, '/etc/apt/preferences')
37
-
38
- rubber.sudo_script 'install_enterprise_ruby', <<-ENDSCRIPT
39
- wget http://apt.brightbox.net/release.asc -O - | apt-key add -
40
- echo "deb http://apt.brightbox.net/ hardy rubyee" > /etc/apt/sources.list.d/brightbox-rubyee.list
22
+ ver = "1.8.7-2010.01"
23
+ rubber.run_script "install_ruby-enterprise", <<-ENDSCRIPT
24
+ if [[ ! `ruby --version 2> /dev/null` =~ "Ruby Enterprise Edition 2010.01" ]]; then
25
+ arch=`uname -m`
26
+ if [ "$arch" = "x86_64" ]; then
27
+ src="http://rubyforge.org/frs/download.php/68720/ruby-enterprise_#{ver}_amd64.deb"
28
+ else
29
+ src="http://rubyforge.org/frs/download.php/68718/ruby-enterprise_#{ver}_i386.deb"
30
+ fi
31
+ src_file="${src##*/}"
32
+ wget -qP /tmp ${src}
33
+ dpkg -i /tmp/${src_file}
34
+ fi
41
35
  ENDSCRIPT
42
-
43
36
  end
44
37
 
45
38
  _install_enterprise_ruby
@@ -64,26 +57,13 @@ namespace :rubber do
64
57
  ENDSCRIPT
65
58
  end
66
59
 
67
- # git in ubuntu 7.0.4 is very out of date and doesn't work well with capistrano
68
- after "rubber:install_packages", "rubber:base:install_git" if scm == "git"
69
- task :install_git do
70
- rubber.run_script 'install_git', <<-ENDSCRIPT
71
- if ! git --version &> /dev/null; then
72
- arch=`uname -m`
73
- if [ "$arch" = "x86_64" ]; then
74
- src="http://mirrors.kernel.org/ubuntu/pool/main/g/git-core/git-core_1.5.4.5-1~dapper1_amd64.deb"
75
- else
76
- src="http://mirrors.kernel.org/ubuntu/pool/main/g/git-core/git-core_1.5.4.5-1~dapper1_i386.deb"
77
- fi
78
- apt-get install liberror-perl libdigest-sha1-perl
79
- wget -qO /tmp/git.deb ${src}
80
- dpkg -i /tmp/git.deb
81
-
82
- if [[ "#{repository}" =~ "@" ]]; then
83
- # Get host key for src machine to prevent ssh from failing
84
- rm -f ~/.ssh/known_hosts
85
- ! ssh -o 'StrictHostKeyChecking=no' #{repository.gsub(/:.*/, '')} &> /dev/null
86
- fi
60
+ after "rubber:install_packages", "rubber:base:configure_git" if scm == "git"
61
+ task :configure_git do
62
+ rubber.run_script 'configure_git', <<-ENDSCRIPT
63
+ if [[ "#{repository}" =~ "@" ]]; then
64
+ # Get host key for src machine to prevent ssh from failing
65
+ rm -f ~/.ssh/known_hosts
66
+ ! ssh -o 'StrictHostKeyChecking=no' #{repository.gsub(/:.*/, '')} &> /dev/null
87
67
  fi
88
68
  ENDSCRIPT
89
69
  end
@@ -0,0 +1,79 @@
1
+ # OPTIONAL: The dns provider to use. Need to exist in dns_providers below
2
+ # dns_provider: nettica
3
+
4
+ # OPTIONAL: The configuration for each dns provider (nettica|zerigo|dyndns)
5
+ # This lets rubber update a dynamic dns service with the instance alias and ip
6
+ #
7
+ dns_providers:
8
+ nettica:
9
+ user: joe
10
+ password: sekret
11
+ type: A
12
+ ttl: 300
13
+ zerigo:
14
+ customer_id: 1234
15
+ email: foo@bar.com
16
+ token: hexxy
17
+ type: A
18
+ ttl: 300
19
+ dyndns:
20
+ user: joe
21
+ password: sekret
22
+ update_url: https://members.dyndns.org/nic/update?hostname=%host%&myip=%ip%'
23
+
24
+ # OPTIONAL: Lets you configure your dns service, for example to add other CNAMES
25
+ # or setup dns round robin, etc. Run "cap rubber:setup_dns_records"
26
+ # to apply them as rubber only sets up instance aliases as part of
27
+ # the standard lifecycle
28
+ #
29
+ # dns_records:
30
+ # # simple A record
31
+ # - host: bar
32
+ # data: 1.1.1.1
33
+ #
34
+ # # more detailed A record
35
+ # - host: bar
36
+ # domain: otherdomain.com
37
+ # data: 1.1.1.1
38
+ # type: A
39
+ # ttl: 300
40
+ #
41
+ # # tld A record
42
+ # - host: ''
43
+ # data: 1.1.1.1
44
+ # type: A
45
+ #
46
+ # # simple CNAME record
47
+ # - host: otherbar
48
+ # domain: foo.com
49
+ # data: bar.foo.com
50
+ # type: CNAME
51
+ # ttl: 300
52
+ #
53
+ # # 2 of the same A records is a round robin dns
54
+ # - host: rr
55
+ # domain: foo.com
56
+ # data: 1.1.1.1
57
+ # type: A
58
+ # ttl: 300
59
+ # - host: rr
60
+ # domain: foo.com
61
+ # data: 1.1.1.2
62
+ # type: A
63
+ # ttl: 300
64
+ #
65
+ # # A record, grabbing ip from instance config
66
+ # - host: baz
67
+ # domain: foo.com
68
+ # data: "#{rubber_instances.for_role('web').first.external_ip}"
69
+ # type: A
70
+ # ttl: 300
71
+ #
72
+ # # MX record
73
+ # - host: ''
74
+ # domain: foo.com
75
+ # data: mail.foo.com
76
+ # type: MX
77
+ # ttl: 300
78
+ # priority: 10
79
+
@@ -32,28 +32,10 @@ timezone: US/Eastern
32
32
  #
33
33
  domain: foo.com
34
34
 
35
- # OPTIONAL: The configuration for each dns provider (nettica|zerigo|dyndns)
36
- # This lets rubber updatea dynamic dns service with the instance alias and ip
37
- #
38
- dns_providers:
39
- nettica:
40
- user: joe
41
- password: sekret
42
- record_type: A
43
- ttl: 300
44
- zerigo:
45
- customer_id: 1234
46
- email: foo@bar.com
47
- token: hexxy
48
- record_type: A
49
- ttl: 300
50
- dyndns:
51
- user: joe
52
- password: sekret
53
- update_url: https://members.dyndns.org/nic/update?hostname=%host%&myip=%ip%'
54
-
55
- # OPTIONAL: The dns provider to use
56
- # dns_provider: nettica
35
+ # OPTIONAL: See rubber-dns.yml for dns configuration
36
+ # This lets rubber update a dynamic dns service with the instance alias
37
+ # and ip when they are created. It also allows setting up arbitrary
38
+ # dns records (CNAME, MX, Round Robin DNS, etc)
57
39
 
58
40
  # OPTIONAL: Additional rubber file to pull config from if it exists. This file will
59
41
  # also be pushed to remote host at RUBBER_ROOT/config/rubber/rubber-secret.yml
@@ -86,20 +68,33 @@ cloud_providers:
86
68
  #
87
69
  # pk_file: "#{Dir[(File.expand_path('~') rescue '/root') + '/.ec2/pk-*'].first}"
88
70
  # cert_file: "#{Dir[(File.expand_path('~') rescue '/root') + '/.ec2/cert-*'].first}"
89
- # image_bucket: "#{app_name}_images"
71
+ # image_bucket: "#{app_name}-images"
90
72
 
91
73
  # OPTIONAL: Needed for backing up database to s3
92
- # backup_bucket: "#{app_name}_backups"
74
+ # backup_bucket: "#{app_name}-backups"
93
75
 
94
76
  # REQUIRED: the ami and instance type for creating instances
95
77
  # The Ubuntu images at http://alestic.com/ work well
96
- # Ubuntu 9.04 Jaunty base install 32-bit 2.6.21.7-2.fc8xen ami-ed46a784
97
- # Ubuntu 9.04 Jaunty base install 64-bit 2.6.21.7-2.fc8xen ami-5b46a732
78
+ # Ubuntu 9.04 Jaunty base install 32-bit 2.6.21.7-2.fc8xen ami-ccf615a5
79
+ # Ubuntu 9.04 Jaunty base install 64-bit 2.6.21.7-2.fc8xen ami-eef61587
98
80
  #
99
- image_id: ami-ed46a784
81
+ image_id: ami-ccf615a5
100
82
  # m1.small or m1.large or m1.xlarge
101
83
  image_type: m1.small
102
84
 
85
+ # OPTIONAL: EC2 spot instance request support.
86
+ #
87
+ # Enables the creation of spot instance requests. Rubber will wait synchronously until the request is fulfilled,
88
+ # at which point it will begin initializing the instance, unless spot_instance_request_timeout is set.
89
+ # spot_instance: true
90
+ #
91
+ # The maximum price you would like to pay for your spot instance.
92
+ # spot_price: "0.085"
93
+ #
94
+ # If a spot instance request can't be fulfilled in 3 minutes, fallback to on-demand instance creation. If not set,
95
+ # the default is infinite.
96
+ # spot_instance_request_timeout: 180
97
+
103
98
  # REQUIRED the cloud provider to use
104
99
  #
105
100
  cloud_provider: aws
@@ -138,18 +133,22 @@ isolate_security_groups: true
138
133
  # OPTIONAL: Set if you want to use Ruby Enterprise Edition instead of the standard ubuntu one
139
134
  use_enterprise_ruby: false
140
135
 
136
+ # REE installs into /usr/local, so this lets us setup environment to use it globally
137
+ # instead of system ruby
138
+ ruby_prefix: "#{use_enterprise_ruby ? '/usr/local' : '/usr'}"
139
+
141
140
  # OPTIONAL: The packages to install on all instances
142
141
  # You can install a specific version of a package by using a sub-array of pkg, version
143
142
  # For example, packages: [[rake, 0.7.1], irb]
144
- packages: [postfix, build-essential, ruby-full, ruby1.8-dev, rake, irb]
143
+ packages: [postfix, build-essential, ruby-full, ruby1.8-dev, rake, irb, git-core]
145
144
 
146
145
  # OPTIONAL: gem sources to setup for rubygems
147
- gemsources: ["http://gems.rubyforge.org/", "http://gems.github.com"]
146
+ gemsources: ["http://gemcutter.org", "http://gems.rubyforge.org/", "http://gems.github.com"]
148
147
 
149
148
  # OPTIONAL: The gems to install on all instances
150
149
  # You can install a specific version of a gem by using a sub-array of gem, version
151
150
  # For example, gem: [[rails, 2.2.2], open4, aws-s3]
152
- gems: [wr0ngway-rubber, rails, open4, aws-s3]
151
+ gems: [rubber, rails, open4, aws-s3]
153
152
 
154
153
  # OPTIONAL: A string prepended to shell command strings that cause multi
155
154
  # statement shell commands to fail fast. You may need to comment this out
@@ -8,12 +8,14 @@
8
8
  %>
9
9
 
10
10
  listen passenger_proxy 0.0.0.0:<%= rubber_env.web_port %>
11
+ option forwardfor
11
12
  <% backend_hosts.each do |server| %>
12
13
  server <%= server %> <%= server %>:<%= rubber_env.passenger_listen_port %> maxconn <%= rubber_env.max_app_connections %> check
13
14
  <% end %>
14
15
 
15
16
  listen passenger_proxy 0.0.0.0:<%= rubber_env.web_ssl_port %>
16
17
  mode tcp
18
+ option forwardfor
17
19
  <% backend_hosts.each do |server| %>
18
20
  server <%= server %> <%= server %>:<%= rubber_env.passenger_listen_ssl_port %> maxconn <%= rubber_env.max_app_connections %> check
19
21
  <% end %>
@@ -0,0 +1,59 @@
1
+
2
+ namespace :rubber do
3
+
4
+ namespace :jetty do
5
+
6
+ rubber.allow_optional_tasks(self)
7
+
8
+ after "rubber:install_packages", "rubber:jetty:custom_install"
9
+
10
+ task :custom_install, :roles => :jetty do
11
+ rubber.sudo_script 'install_jetty', <<-ENDSCRIPT
12
+ if [[ -z `ls #{rubber_env.jetty_prefix}/jetty-hightide-#{rubber_env.jetty_version} 2> /dev/null` ]]; then
13
+ wget -q http://dist.codehaus.org/jetty/jetty-hightide-7.0.0/jetty-hightide-#{rubber_env.jetty_version}.tar.gz
14
+ tar -zxf jetty-hightide-#{rubber_env.jetty_version}.tar.gz
15
+
16
+ # Install to appropriate location.
17
+ mv jetty-hightide-#{rubber_env.jetty_version} #{rubber_env.jetty_prefix}
18
+ rm -f #{rubber_env.jetty_dir}
19
+ ln -s #{rubber_env.jetty_prefix}/jetty-hightide-#{rubber_env.jetty_version} #{rubber_env.jetty_dir}
20
+ chmod 744 #{rubber_env.jetty_dir}/bin/*.sh
21
+
22
+ # Cleanup the jetty distribution
23
+ rm -r #{rubber_env.jetty_dir}/webapps/*
24
+ rm -r #{rubber_env.jetty_dir}/contexts/test.d/
25
+
26
+ for file in #{rubber_env.jetty_dir}/contexts/*.xml; do
27
+ mv $file $file.example
28
+ done
29
+
30
+ # Cleanup after ourselves.
31
+ rm jetty-hightide-#{rubber_env.jetty_version}.tar.gz
32
+ fi
33
+ ENDSCRIPT
34
+ end
35
+
36
+ after "rubber:setup_app_permissions", "rubber:jetty:setup_jetty_permissions"
37
+
38
+ task :setup_jetty_permissions, :roles => :jetty do
39
+ run "chown -R #{rubber_env.app_user}:#{rubber_env.app_user} #{rubber_env.jetty_dir}"
40
+ end
41
+
42
+ before "deploy:stop", "rubber:jetty:stop"
43
+ after "deploy:start", "rubber:jetty:start"
44
+ after "deploy:restart", "rubber:jetty:restart"
45
+
46
+ task :restart, :roles => :jetty do
47
+ run "#{rubber_env.jetty_dir}/bin/jetty.sh restart"
48
+ end
49
+
50
+ task :stop, :roles => :jetty do
51
+ run "#{rubber_env.jetty_dir}/bin/jetty.sh stop"
52
+ end
53
+
54
+ task :start, :roles => :jetty do
55
+ run "#{rubber_env.jetty_dir}/bin/jetty.sh start"
56
+ end
57
+
58
+ end
59
+ end