axtro-rubber 1.0.2.8 → 1.2.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 (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