rubber 2.2.0 → 2.2.1
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.
- data/.travis.yml +3 -2
- data/CHANGELOG +59 -76
- data/README.md +2 -2
- data/lib/rubber/commands/vulcanize.rb +11 -9
- data/lib/rubber/recipes/rubber.rb +4 -2
- data/lib/rubber/recipes/rubber/instances.rb +57 -45
- data/lib/rubber/recipes/rubber/tags.rb +1 -0
- data/lib/rubber/recipes/rubber/utils.rb +19 -24
- data/lib/rubber/util.rb +7 -3
- data/lib/rubber/version.rb +1 -1
- data/templates/base/config/rubber/rubber.yml +35 -2
- data/templates/complete_mongrel_mysql/config/rubber/rubber-complete.yml +0 -35
- data/templates/complete_passenger/config/rubber/rubber-complete.yml +0 -35
- data/templates/complete_passenger_nginx/config/rubber/rubber-complete.yml +0 -35
- data/templates/complete_unicorn_nginx/config/rubber/rubber-complete.yml +0 -35
- data/templates/minimal_passenger_nginx/config/rubber/rubber-complete.yml +0 -35
- data/test/test_helper.rb +1 -1
- metadata +6 -46
data/.travis.yml
CHANGED
|
@@ -3,11 +3,12 @@ rvm:
|
|
|
3
3
|
- 1.8.7
|
|
4
4
|
- 1.9.2
|
|
5
5
|
- 1.9.3
|
|
6
|
+
- ruby-head
|
|
6
7
|
- jruby-18mode
|
|
7
8
|
- jruby-19mode
|
|
8
9
|
- jruby-head
|
|
9
|
-
|
|
10
|
-
|
|
10
|
+
- rbx-18mode
|
|
11
|
+
- rbx-19mode
|
|
11
12
|
# script: bundle exec rspec spec
|
|
12
13
|
env:
|
|
13
14
|
- JAVA_OPTS="-server -Djruby.cext.enabled=false -Djruby.compile.invokedynamic=false"
|
data/CHANGELOG
CHANGED
|
@@ -1,100 +1,77 @@
|
|
|
1
|
+
|
|
2
|
+
2.2.1 (02/11/2013)
|
|
3
|
+
------------------
|
|
4
|
+
|
|
5
|
+
Improvements:
|
|
6
|
+
============
|
|
7
|
+
|
|
8
|
+
[core] Push alias changes in local instance.yml files to cloud tags <1adebd0>
|
|
9
|
+
[core] Namespaced capistrano role tasks <48fb78e>
|
|
10
|
+
[base] Moved security group configuration to rubber.yml <ccc9f3e>
|
|
11
|
+
|
|
12
|
+
Bug Fixes:
|
|
13
|
+
=========
|
|
14
|
+
[core] Added support for lambdas in role options for optional tasks <72ff4b9>
|
|
15
|
+
[core] Added support for lambdas in role options for serial tasks <35716a6>
|
|
16
|
+
|
|
17
|
+
|
|
1
18
|
2.2.0 (02/08/2013)
|
|
2
19
|
------------------
|
|
3
20
|
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
[core]
|
|
8
|
-
[
|
|
9
|
-
[
|
|
10
|
-
[
|
|
21
|
+
New Features:
|
|
22
|
+
============
|
|
23
|
+
|
|
24
|
+
[core] Switched license to Apache Software License version 2
|
|
25
|
+
[base] Replaced RVM with ruby-build.
|
|
26
|
+
[base] Add ability to obfuscate rubber secret file (MRI only) <c9d8aac>
|
|
27
|
+
[postgresql] basic slave promotion for postgresql <8b96f71>
|
|
28
|
+
[sidekiq] Added a sidekiq template. <bc31d00>
|
|
29
|
+
[solr] Added a Solr 4 template <8a5b041>
|
|
30
|
+
[torquebox] Added support for logging to Graylog2 from TorqueBox. <b2685d5>
|
|
31
|
+
|
|
32
|
+
Improvements:
|
|
33
|
+
============
|
|
34
|
+
|
|
35
|
+
[core] Upgraded to net-ssh 2.6, as it supposedly fixes all the connection problems we've been seeing with 2.5.x. <9b32ecb>
|
|
11
36
|
[core] Allow the rubber:start task to start multiple instances <432f95e>
|
|
12
|
-
[core] Fix syntax error in start_instances() <d23ad3c>
|
|
13
|
-
[core] Clean up broken method call <dd90c5f>
|
|
14
|
-
[core] Bugfix: net-ssh requires :keys to be an array, not string <74f10d3>
|
|
15
|
-
[core] Fix threading for start_instances() <a0c3930>
|
|
16
37
|
[core] Allow rubber:stop to manage multiple instances <7dd6ea2>
|
|
17
|
-
[core] Let's see if JRuby 1.8 mode is stable on Travis now. <d0de63a>
|
|
18
|
-
[core] Merge pull request #255 from zmillman/multiple_stop_start <42ac8e6>
|
|
19
|
-
[core] fix 1.8 issue <effd41e>
|
|
20
|
-
[core] Let's see if jruby-head is stable on Travis now. <4d32c6b>
|
|
21
38
|
[core] Improve logging and handling of instance validation <c3e5e9b>
|
|
22
|
-
[
|
|
23
|
-
[core] Moved validation to top of method. <39c3d4e>
|
|
24
|
-
[core] Marked encryption tests as pending in JRuby until we can figure out how to make that work reliably. <2134120>
|
|
25
|
-
[apache] Added missing packages to make SendFile work on Apache. <6c7f84e>
|
|
26
|
-
[base, collectd, mongrel, monit, munin, passenger, passenger_nginx] Replaced RVM with ruby-build. <d98c373>
|
|
27
|
-
[base] Add ability to obfuscate rubber secret file <c9d8aac>
|
|
28
|
-
[base] Bumped up to the latest Ruby 1.9.3 release. <140abd1>
|
|
29
|
-
[base] Fixed a typo. <6c42f11>
|
|
30
|
-
[base] Fixed ruby-build installation. <ddd4337>
|
|
31
|
-
[base] Fixed script name. <0a35524>
|
|
32
|
-
[base] I like punctuation. <c8d6c0f>
|
|
33
|
-
[base] Improved ruby-build stuff based on pull request review. <a07f73a>
|
|
34
|
-
[base] New ruby-build version to pull in a definition for JRuby 1.7.1. <730fc0e>
|
|
35
|
-
[base] Print out ruby compilation status to let the user know what's going on. <c281cf1>
|
|
36
|
-
[base] Removed old, unused RVM options. <bfaba8d>
|
|
37
|
-
[base] Updated ruby-build version and use Ruby 1.9.3-p385 as the default now. <75cb6f4>
|
|
38
|
-
[base] Updated ruby-build version. <00ea48c>
|
|
39
|
-
[base] Updated to the latest ruby-build. <cb38e6a>
|
|
40
|
-
[base] Upgraded ruby-build and use 1.9.3-p327 by default now. <d49d2d3>
|
|
41
|
-
[base] Use the latest ruby-build and bump to the latest MRI release. <430b113>
|
|
42
|
-
[base] bump ruby and ruby-build version <3a8176a>
|
|
43
|
-
[base] fix ruby version detection <ac7ae0b>
|
|
44
|
-
[base] fix ruby-build url <a4c8482>
|
|
45
|
-
[base] fix ruby-build ver <c85364c>
|
|
46
|
-
[base] quote account number to allow for leading 0s <b46b674>
|
|
47
|
-
[base] refactoring, fix jruby tests <0bec484>
|
|
48
|
-
[base] some fixes to ruby-build install <77e3e28>
|
|
39
|
+
[base] Bumped up to the latest Ruby 1.9.3-p385 release. <140abd1>
|
|
49
40
|
[base] update ubuntu ami to latest 12.04, make default instance size c1.medium to improve initial user experience <a270c7b>
|
|
50
|
-
[complete_passenger, complete_passenger_nginx, complete_unicorn_nginx] Merge pull request #233 from messick/remove_db <c5ff221>
|
|
51
41
|
[complete_passenger, complete_passenger_nginx, complete_unicorn_nginx] remove db template dependancy from complete_* templates <5be6300>
|
|
52
|
-
[complete_unicorn_nginx] Merge pull request #230 from messick/unicorn_template_fix <d8144bf>
|
|
53
42
|
[complete_unicorn_nginx] complete_unicorn_nginx template doesn't need haproxy <54faef3>
|
|
54
|
-
[complete_unicorn_nginx] unicorn_nginx template does not exist <52953fa>
|
|
55
43
|
[elasticsearch] Upgraded Elastic Search from 0.19.3 to 0.19.12. <96e5aa0>
|
|
56
|
-
[elasticsearch] new es download url <ed796b7>
|
|
57
44
|
[graphite] Added a monit file for graphite. <87eafab>
|
|
58
45
|
[graphite] Added more control to graphite config. <8a2b84e>
|
|
59
46
|
[graphite] Allow re-mounting the graphite storage directory elsewhere since it can fill the root store rather quickly. <80f5527>
|
|
60
|
-
[graphite] Bugfix: Graphite depends on collectd. <5f7de4a>
|
|
61
47
|
[graphite] Hook up ping data from collectd to graphite. <e8d466b>
|
|
62
|
-
[graphite] Merge pull request #225 from pushcx/master <977e800>
|
|
63
|
-
[graphite] Merge remote-tracking branch 'enthuseinc/feat/uwsgi_graphite' into test <6f6fa3f>
|
|
64
48
|
[graphite] Migrate graphite_web to uwsgi <aaebea8>
|
|
65
|
-
[graphite] Move graphite nginx config to nginx role <c92e8d3>
|
|
66
|
-
[graphite] Removed some obsoleted backport code for graphite setup. <afd7444>
|
|
67
49
|
[graphite] Upgraded graphite from 0.9.9 to 0.9.10. <733937f>
|
|
68
|
-
[graphite] forgot http plugin for uwsgi <a67587d>
|
|
69
|
-
[graphite] remove dependency on apache/nginx by using native http from uwsgi <abd0628>
|
|
70
|
-
[graphite] respawn conflicts with monit <9955657>
|
|
71
50
|
[passenger, torquebox] Be a bit safer about assets & CDNs by default. <197eb93>
|
|
72
|
-
[passenger, torquebox] Make sure the Sidekiq Web interface can load successfully on Apache. <b669c1e>
|
|
73
|
-
[passenger, torquebox] Updated the Sidekiq Web SendFile config to work with any Ruby. <86612de>
|
|
74
51
|
[passenger] bump passenger version <9fde4bf>
|
|
75
|
-
[passenger] passeneger needs to know where ruby is installed by ruby-build <dcb8934>
|
|
76
|
-
[passenger_nginx] fix for ruby-build <9f01743>
|
|
77
|
-
[postgresql] basic slave promotion for postgresql <8b96f71>
|
|
78
52
|
[redis] Upgrade redis from 2.4.16 to 2.4.18. <d1a9e06>
|
|
79
|
-
[resque] resque only has its own roles now, so fix to make sure resque_worker role gets vulcanized <7dbca27>
|
|
80
|
-
[sidekiq] Added a sidekiq template. <bc31d00>
|
|
81
|
-
[sidekiq] Cleanup Sidekiq monit configuration <deffcb7>
|
|
82
|
-
[sidekiq] Merge pull request #228 from enthuseinc/sidekiq <202fa4a>
|
|
83
|
-
[sidekiq] Update Sidekiq configuration <c14c4ee>
|
|
84
|
-
[solr] Merge pull request #246 from klclee/master <32369b0>
|
|
85
|
-
[solr] solr 4 template <8a5b041>
|
|
86
|
-
[sphinx] Merge pull request #235 from JMcG/master <e0663ef>
|
|
87
53
|
[sphinx] Updated sphinx custom_install task to use correct download url and changed version to latest stable release <b61df24>
|
|
88
|
-
[torquebox] Added some missing rubber config values. <31eac16>
|
|
89
|
-
[torquebox] Bootstrap Graylog JAR installation for TorqueBox. <a588cc0>
|
|
90
|
-
[torquebox] Fixed a2ensite command. <a3547c6>
|
|
91
|
-
[torquebox] Make it more evident that this is a junk username & password combo. <dc6067f>
|
|
92
|
-
[torquebox] TorqueBox should not reference Passenger at all. <9db2dff>
|
|
93
|
-
[torquebox] Upgraded from TorqueBox 2.2.0 to 2.3.0. <a95554c>
|
|
94
|
-
[torquebox] Upgraded to TorqueBox 2.2.0 and added support for logging to Graylog2. <b2685d5>
|
|
95
54
|
[torquebox] We no longer need to restart TorqueBox completely on deploy, since the memory leak & deploy race condition requiring it have been removed. <636c78f>
|
|
96
|
-
[
|
|
97
|
-
|
|
55
|
+
[torquebox] Upgraded from TorqueBox 2.2.0 to 2.3.0. <a95554c>
|
|
56
|
+
|
|
57
|
+
Bug Fixes:
|
|
58
|
+
=========
|
|
59
|
+
|
|
60
|
+
[core] Set up the elastic IP when it doesn't match the instance's current external IP <ea960c9>
|
|
61
|
+
[core] Fix reboot behavior so SSH connections are re-established upon reboot. <d77ce29>
|
|
62
|
+
[core] Fixed some Ruby 1.8.7 compatibility issues.
|
|
63
|
+
[core] Fix syntax error in start_instances() <d23ad3c>
|
|
64
|
+
[core] Clean up broken method call in stopping instances <dd90c5f>
|
|
65
|
+
[core] Bugfix: net-ssh requires :keys to be an array, not string <74f10d3>
|
|
66
|
+
[core] Fix threading for start_instances() <a0c3930>
|
|
67
|
+
[apache] Added missing packages to make SendFile work on Apache. <6c7f84e>
|
|
68
|
+
[base] quote account number to allow for leading 0s in rubber.yml<b46b674>
|
|
69
|
+
[complete_unicorn_nginx] unicorn_nginx template does not exist <52953fa>
|
|
70
|
+
[graphite] Bugfix: Graphite depends on collectd. <5f7de4a>
|
|
71
|
+
[graphite] Move graphite nginx config to nginx role <c92e8d3>
|
|
72
|
+
[resque] resque only has its own roles now, so fix to make sure resque_worker role gets vulcanized <7dbca27>
|
|
73
|
+
[torquebox] TorqueBox should not reference Passenger at all. <9db2dff>
|
|
74
|
+
|
|
98
75
|
|
|
99
76
|
2.1.2 (10/05/2012)
|
|
100
77
|
------------------
|
|
@@ -105,16 +82,19 @@ New Features:
|
|
|
105
82
|
[core] Allowing marking of a config variable as overriding the ones that come before it, so that non-scalar values (lists/maps) get overridden instead of combined <3d66fc8>
|
|
106
83
|
[core] Allow erb in rubber*.yml <60e6394>
|
|
107
84
|
|
|
85
|
+
|
|
108
86
|
2.1.1 (10/02/2012)
|
|
109
87
|
------------------
|
|
110
88
|
|
|
111
89
|
New Features:
|
|
112
90
|
============
|
|
91
|
+
|
|
113
92
|
[base] add ability to override by environment in rubber*.yml <f4c4af3>
|
|
114
93
|
[couchbase, monit] add couchbase template <550dff4>
|
|
115
94
|
|
|
116
95
|
Improvements:
|
|
117
96
|
============
|
|
97
|
+
|
|
118
98
|
[core] Updated sudo_script to sudo to any user. <288ef5d>
|
|
119
99
|
[apache, jenkins] create an apache bootstrap so jenkins template doesn't have to duplicate logic <5862791>
|
|
120
100
|
[complete_passenger, passenger] do a rolling passenger restart by tieing into apache rolling restart <065d757>
|
|
@@ -130,6 +110,7 @@ Improvements:
|
|
|
130
110
|
|
|
131
111
|
Bug Fixes:
|
|
132
112
|
=========
|
|
113
|
+
|
|
133
114
|
[core] fix merging of alias records <d314857>
|
|
134
115
|
[core] Refactor to avoid fog deprecation, fixes #222 <43ea42f>
|
|
135
116
|
[core] assign defaults for partial records in rubber-dns.yml when running setup_dns_records <a72a701>
|
|
@@ -137,6 +118,7 @@ Bug Fixes:
|
|
|
137
118
|
[mysql] Delete anonymous MySQL user when bootstrapping the db. Fixes #185 (pull request #212) <ce84ff2>
|
|
138
119
|
[torquebox] Always use the rubber system JRuby with Torquebox. <9c03a02>
|
|
139
120
|
|
|
121
|
+
|
|
140
122
|
2.1.0 (08/20/2012)
|
|
141
123
|
------------------
|
|
142
124
|
|
|
@@ -222,6 +204,7 @@ Bug Fixes:
|
|
|
222
204
|
|
|
223
205
|
New Features:
|
|
224
206
|
============
|
|
207
|
+
|
|
225
208
|
[torquebox] Initial work on a TorqueBox template. <160557b>
|
|
226
209
|
[torquebox] Merge pull request #154 from wr0ngway/add_torquebox <d750ecb>
|
|
227
210
|
[torquebox] [torquebox] Bumped to TorqueBox 2.0.3 from 2.0.2. <2851768>
|
data/README.md
CHANGED
|
@@ -2,6 +2,6 @@ The rubber plugin enables relatively complex multi-instance deployments of
|
|
|
2
2
|
RubyOnRails applications to Amazon's Elastic Compute Cloud (EC2).
|
|
3
3
|
|
|
4
4
|
See the documentation in the github wiki for more details:
|
|
5
|
-
http://github.com/
|
|
5
|
+
http://github.com/rubber/rubber/wiki
|
|
6
6
|
|
|
7
|
-
[](http://travis-ci.org/rubber/rubber)
|
|
@@ -17,17 +17,19 @@ module Rubber
|
|
|
17
17
|
end
|
|
18
18
|
|
|
19
19
|
def self.description
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
VulcanizeThor.valid_templates.each do |
|
|
23
|
-
line
|
|
24
|
-
line
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
line
|
|
20
|
+
# Format templates into comma-separated paragraph with limt of 70 characters per line
|
|
21
|
+
lines = ['']
|
|
22
|
+
VulcanizeThor.valid_templates.each do |template_name|
|
|
23
|
+
line = lines.last
|
|
24
|
+
if line.size == 0
|
|
25
|
+
line << template_name
|
|
26
|
+
elsif line.size + template_name.size > 68
|
|
27
|
+
line << ','
|
|
28
|
+
lines << template_name # new line
|
|
29
|
+
else
|
|
30
|
+
line << ", " + template_name
|
|
28
31
|
end
|
|
29
32
|
end
|
|
30
|
-
lines << line if line.size >0
|
|
31
33
|
|
|
32
34
|
Rubber::Util.clean_indent(<<-EOS
|
|
33
35
|
Prepares the rails application for deploying with rubber by installing a
|
|
@@ -28,8 +28,10 @@ namespace :rubber do
|
|
|
28
28
|
# Disable connecting to any Windows instance.
|
|
29
29
|
required_task(name, options.merge(:except => { :platform => 'windows' })) do
|
|
30
30
|
# define empty roles for the case when a task has a role that we don't define anywhere
|
|
31
|
-
|
|
32
|
-
roles
|
|
31
|
+
unless options[:roles].respond_to?(:call)
|
|
32
|
+
[*options[:roles]].each do |r|
|
|
33
|
+
top.roles[r] ||= []
|
|
34
|
+
end
|
|
33
35
|
end
|
|
34
36
|
|
|
35
37
|
if find_servers_for_task(current_task).empty?
|
|
@@ -97,57 +97,66 @@ namespace :rubber do
|
|
|
97
97
|
start_instances(aliases)
|
|
98
98
|
end
|
|
99
99
|
|
|
100
|
+
namespace :roles do
|
|
101
|
+
rubber.allow_optional_tasks(self)
|
|
102
|
+
|
|
103
|
+
desc <<-DESC
|
|
104
|
+
Adds the given ROLES to the instance named ALIAS
|
|
105
|
+
DESC
|
|
106
|
+
required_task :add do
|
|
107
|
+
instance_alias = get_env('ALIAS', "Instance alias (e.g. web01)", true)
|
|
108
|
+
roles_string = get_env('ROLES', "Instance roles (e.g. web,app,db:primary=true)", true)
|
|
109
|
+
|
|
110
|
+
instance = rubber_instances[instance_alias]
|
|
111
|
+
fatal "Instance does not exist: #{instance_alias}" unless instance
|
|
112
|
+
|
|
113
|
+
# Parse roles_string into an Array of roles
|
|
114
|
+
ir = roles_string.split(/\s*,\s*/).collect{|r| Rubber::Configuration::RoleItem.parse(r)}
|
|
115
|
+
|
|
116
|
+
# Add in roles that the given set of roles depends on
|
|
117
|
+
ir = Rubber::Configuration::RoleItem.expand_role_dependencies(ir, get_role_dependencies)
|
|
118
|
+
|
|
119
|
+
instance.roles = (instance.roles + ir).uniq
|
|
120
|
+
rubber_instances.save()
|
|
121
|
+
logger.info "Roles for #{instance_alias} are now:"
|
|
122
|
+
logger.info instance.roles.collect(&:to_s).sort.join("\n")
|
|
123
|
+
logger.info ''
|
|
124
|
+
logger.info "Run 'cap rubber:bootstrap' if done adding roles"
|
|
125
|
+
end
|
|
126
|
+
|
|
127
|
+
desc <<-DESC
|
|
128
|
+
Removes the given ROLES from the instance named ALIAS
|
|
129
|
+
DESC
|
|
130
|
+
required_task :remove do
|
|
131
|
+
instance_alias = get_env('ALIAS', "Instance alias (e.g. web01)", true)
|
|
132
|
+
roles_string = get_env('ROLES', "Instance roles (e.g. web,app,db:primary=true)", true)
|
|
133
|
+
|
|
134
|
+
instance = rubber_instances[instance_alias]
|
|
135
|
+
fatal "Instance does not exist: #{instance_alias}" unless instance
|
|
136
|
+
|
|
137
|
+
# Parse roles_string into an Array of roles
|
|
138
|
+
ir = roles_string.split(/\s*,\s*/).collect{|r| Rubber::Configuration::RoleItem.parse(r)}
|
|
139
|
+
|
|
140
|
+
instance.roles = (instance.roles - ir).uniq
|
|
141
|
+
rubber_instances.save()
|
|
142
|
+
logger.info "Roles for #{instance_alias} are now:"
|
|
143
|
+
logger.info instance.role_names.sort.join("\n")
|
|
144
|
+
end
|
|
145
|
+
end
|
|
146
|
+
|
|
147
|
+
# The :add_role and :remove_role tasks are for backwards-compatibility
|
|
100
148
|
desc <<-DESC
|
|
101
|
-
|
|
149
|
+
Alias for rubber:roles:add
|
|
102
150
|
DESC
|
|
103
151
|
required_task :add_role do
|
|
104
|
-
|
|
105
|
-
r = get_env('ROLES', "Instance roles (e.g. web,app,db:primary=true)", true)
|
|
106
|
-
|
|
107
|
-
instance_roles = r.split(/\s*,\s*/)
|
|
108
|
-
|
|
109
|
-
ir = []
|
|
110
|
-
instance_roles.each do |r|
|
|
111
|
-
role = Rubber::Configuration::RoleItem.parse(r)
|
|
112
|
-
ir << role
|
|
113
|
-
end
|
|
114
|
-
|
|
115
|
-
# Add in roles that the given set of roles depends on
|
|
116
|
-
ir = Rubber::Configuration::RoleItem.expand_role_dependencies(ir, get_role_dependencies)
|
|
117
|
-
|
|
118
|
-
instance = rubber_instances[instance_alias]
|
|
119
|
-
fatal "Instance does not exist: #{instance_alias}" unless instance
|
|
120
|
-
|
|
121
|
-
instance.roles = (instance.roles + ir).uniq
|
|
122
|
-
rubber_instances.save()
|
|
123
|
-
logger.info "Roles for #{instance_alias} are now:"
|
|
124
|
-
logger.info instance.role_names.sort.join("\n")
|
|
125
|
-
logger.info ''
|
|
126
|
-
logger.info "Run 'cap rubber:bootstrap' if done adding roles"
|
|
152
|
+
rubber.roles.add()
|
|
127
153
|
end
|
|
128
154
|
|
|
129
155
|
desc <<-DESC
|
|
130
|
-
|
|
156
|
+
Alias for rubber:roles:remove
|
|
131
157
|
DESC
|
|
132
158
|
required_task :remove_role do
|
|
133
|
-
|
|
134
|
-
r = get_env('ROLES', "Instance roles (e.g. web,app,db:primary=true)", true)
|
|
135
|
-
|
|
136
|
-
instance_roles = r.split(/\s*,\s*/)
|
|
137
|
-
|
|
138
|
-
ir = []
|
|
139
|
-
instance_roles.each do |r|
|
|
140
|
-
role = Rubber::Configuration::RoleItem.parse(r)
|
|
141
|
-
ir << role
|
|
142
|
-
end
|
|
143
|
-
|
|
144
|
-
instance = rubber_instances[instance_alias]
|
|
145
|
-
fatal "Instance does not exist: #{instance_alias}" unless instance
|
|
146
|
-
|
|
147
|
-
instance.roles = (instance.roles - ir).uniq
|
|
148
|
-
rubber_instances.save()
|
|
149
|
-
logger.info "Roles for #{instance_alias} are now:"
|
|
150
|
-
logger.info instance.role_names.sort.join("\n")
|
|
159
|
+
rubber.roles.remove()
|
|
151
160
|
end
|
|
152
161
|
|
|
153
162
|
desc <<-DESC
|
|
@@ -379,6 +388,9 @@ namespace :rubber do
|
|
|
379
388
|
def post_refresh
|
|
380
389
|
env = rubber_cfg.environment.bind(nil, nil)
|
|
381
390
|
|
|
391
|
+
# update the remote name/environment tags
|
|
392
|
+
update_tags
|
|
393
|
+
|
|
382
394
|
# setup amazon elastic ips if configured to do so
|
|
383
395
|
setup_static_ips
|
|
384
396
|
|
|
@@ -527,11 +539,11 @@ namespace :rubber do
|
|
|
527
539
|
|
|
528
540
|
instance_items = aliases.collect do |instance_alias|
|
|
529
541
|
instance_item = rubber_instances[instance_alias]
|
|
530
|
-
|
|
542
|
+
|
|
531
543
|
fatal "Instance does not exist: #{instance_alias}" if ! instance_item
|
|
532
544
|
fatal "Cannot start spot instances!" if ! instance_item.spot_instance_request_id.nil?
|
|
533
545
|
fatal "Cannot start instances with instance-store root device!" if (instance_item.root_device_type != 'ebs')
|
|
534
|
-
|
|
546
|
+
|
|
535
547
|
instance_item
|
|
536
548
|
end
|
|
537
549
|
|
|
@@ -81,48 +81,43 @@ namespace :rubber do
|
|
|
81
81
|
def serial_task(ns, name, options = {}, &block)
|
|
82
82
|
# first figure out server names for the passed in roles - when no roles
|
|
83
83
|
# are passed in, use all servers
|
|
84
|
-
|
|
84
|
+
|
|
85
|
+
serial_roles = Array(options[:roles].respond_to?(:call) ? options[:roles].call() : options[:roles])
|
|
85
86
|
servers = {}
|
|
86
87
|
if serial_roles.empty?
|
|
87
|
-
all_servers =
|
|
88
|
-
|
|
89
|
-
all_servers += serverdefs.collect {|server| server.host}
|
|
88
|
+
all_servers = top.roles.collect do |rolename, serverdefs|
|
|
89
|
+
serverdefs.collect(&:host)
|
|
90
90
|
end
|
|
91
|
-
servers[:_serial_all] = all_servers.uniq.sort
|
|
91
|
+
servers[:_serial_all] = all_servers.flatten.uniq.sort
|
|
92
92
|
else
|
|
93
|
-
#
|
|
94
|
-
|
|
93
|
+
# Get servers for each role
|
|
94
|
+
top.roles.each do |rolename, serverdefs|
|
|
95
95
|
if serial_roles.include?(rolename)
|
|
96
|
-
servers[rolename]
|
|
97
|
-
servers[rolename] += serverdefs.collect {|server| server.host}
|
|
96
|
+
servers[rolename] = serverdefs.collect(&:host)
|
|
98
97
|
end
|
|
99
98
|
end
|
|
100
99
|
|
|
101
100
|
# Remove duplication of servers - roles which come first in list
|
|
102
101
|
# have precedence, so the servers show up in that group
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
end
|
|
102
|
+
added_servers = []
|
|
103
|
+
serial_roles.each do |rolename|
|
|
104
|
+
servers[rolename] -= added_servers
|
|
105
|
+
added_servers << servers[rolename]
|
|
108
106
|
servers[rolename] = servers[rolename].uniq.sort
|
|
109
107
|
end
|
|
110
108
|
end
|
|
111
109
|
|
|
112
|
-
# group each role's servers into slices
|
|
110
|
+
# group each role's servers into slices and combine
|
|
113
111
|
slices = []
|
|
114
112
|
servers.each do |rolename, svrs|
|
|
115
|
-
next if svrs.size == 0
|
|
116
113
|
# figure out size of each slice by dividing server count by # of groups
|
|
117
|
-
slice_size = (
|
|
118
|
-
slice_size = 1 if slice_size
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
slices[slice_idx] += srv_slice
|
|
123
|
-
slice_idx += 1
|
|
124
|
-
end
|
|
114
|
+
slice_size = (svrs.size.to_f / (options.delete(:groups) || 2)).round
|
|
115
|
+
slice_size = 1 if slice_size < 1
|
|
116
|
+
|
|
117
|
+
# add servers to slices
|
|
118
|
+
slices += svrs.each_slice(slice_size).to_a
|
|
125
119
|
end
|
|
120
|
+
|
|
126
121
|
# for each slice, define a new task specific to the hosts in that slice
|
|
127
122
|
task_syms = []
|
|
128
123
|
slices.each do |server_group|
|
data/lib/rubber/util.rb
CHANGED
|
@@ -86,9 +86,13 @@ module Rubber
|
|
|
86
86
|
# remove leading whitespace from "here" strings so they look good in code
|
|
87
87
|
# skips empty lines
|
|
88
88
|
def clean_indent(str)
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
89
|
+
str.lines.collect do |line|
|
|
90
|
+
if line =~ /\S/ # line has at least one non-whitespace character
|
|
91
|
+
line.lstrip
|
|
92
|
+
else
|
|
93
|
+
line
|
|
94
|
+
end
|
|
95
|
+
end.join()
|
|
92
96
|
end
|
|
93
97
|
|
|
94
98
|
# execute the given block, retrying only when one of the given exceptions is raised
|
data/lib/rubber/version.rb
CHANGED
|
@@ -136,6 +136,12 @@ cloud_provider: aws
|
|
|
136
136
|
#
|
|
137
137
|
# instance_storage_backup: "storage:#{cloud_providers.aws.backup_bucket}/RubberInstances_#{app_name}/instance-#{Rubber.env}-#{Time.now.strftime('%Y%m%d-%H%M%S')}.yml"
|
|
138
138
|
|
|
139
|
+
# OPTIONAL: Default ports for security groups
|
|
140
|
+
web_port: 80
|
|
141
|
+
web_ssl_port: 443
|
|
142
|
+
web_tools_port: 8080
|
|
143
|
+
web_tools_ssl_port: 8443
|
|
144
|
+
|
|
139
145
|
# OPTIONAL: Define security groups
|
|
140
146
|
# Each security group is a name associated with a sequence of maps where the
|
|
141
147
|
# keys are the parameters to the ec2 AuthorizeSecurityGroupIngress API
|
|
@@ -166,9 +172,36 @@ security_groups:
|
|
|
166
172
|
from_port: 22
|
|
167
173
|
to_port: 22
|
|
168
174
|
source_ips: [0.0.0.0/0]
|
|
175
|
+
web:
|
|
176
|
+
description: "To open up port #{web_port}/#{web_ssl_port} for http server on web role"
|
|
177
|
+
rules:
|
|
178
|
+
- protocol: tcp
|
|
179
|
+
from_port: "#{web_port}"
|
|
180
|
+
to_port: "#{web_port}"
|
|
181
|
+
source_ips: [0.0.0.0/0]
|
|
182
|
+
- protocol: tcp
|
|
183
|
+
from_port: "#{web_ssl_port}"
|
|
184
|
+
to_port: "#{web_ssl_port}"
|
|
185
|
+
source_ips: [0.0.0.0/0]
|
|
186
|
+
web_tools:
|
|
187
|
+
description: "To open up port #{web_tools_port}/#{web_tools_ssl_port} for internal/tools http server"
|
|
188
|
+
rules:
|
|
189
|
+
- protocol: tcp
|
|
190
|
+
from_port: "#{web_tools_port}"
|
|
191
|
+
to_port: "#{web_tools_port}"
|
|
192
|
+
source_ips: [0.0.0.0/0]
|
|
193
|
+
- protocol: tcp
|
|
194
|
+
from_port: "#{web_tools_ssl_port}"
|
|
195
|
+
to_port: "#{web_tools_ssl_port}"
|
|
196
|
+
source_ips: [0.0.0.0/0]
|
|
169
197
|
|
|
170
198
|
# OPTIONAL: The default security groups to create instances with
|
|
171
199
|
assigned_security_groups: [default]
|
|
200
|
+
roles:
|
|
201
|
+
web:
|
|
202
|
+
assigned_security_groups: [web]
|
|
203
|
+
web_tools:
|
|
204
|
+
assigned_security_groups: [web_tools]
|
|
172
205
|
|
|
173
206
|
# OPTIONAL: Automatically create security groups for each host and role
|
|
174
207
|
# EC2 doesn't allow one to change what groups an instance belongs to after
|
|
@@ -229,10 +262,10 @@ stop_on_error_cmd: "function error_exit { exit 99; }; trap error_exit ERR"
|
|
|
229
262
|
# of zones
|
|
230
263
|
# availability_zone: us-east-1a
|
|
231
264
|
|
|
232
|
-
# OPTIONAL: If you want
|
|
265
|
+
# OPTIONAL: If you want to use Elastic Block Store (EBS) persistent
|
|
233
266
|
# volumes, add them to host specific overrides and they will get created
|
|
234
267
|
# and assigned to the instance. On initial creation, the volume will get
|
|
235
|
-
# attached _and_ formatted, but if your host
|
|
268
|
+
# attached _and_ formatted, but if your host disappears and you recreate
|
|
236
269
|
# it, the volume will only get remounted thereby preserving your data
|
|
237
270
|
#
|
|
238
271
|
# hosts:
|
|
@@ -1,41 +1,6 @@
|
|
|
1
|
-
|
|
2
1
|
role_dependencies:
|
|
3
2
|
web: [nginx, haproxy]
|
|
4
3
|
app: [mongrel]
|
|
5
4
|
web_tools: [nginx, graphite_server, graphite_web]
|
|
6
5
|
|
|
7
6
|
haproxy_listen_port: 9000
|
|
8
|
-
web_port: 80
|
|
9
|
-
web_ssl_port: 443
|
|
10
|
-
web_tools_port: 8080
|
|
11
|
-
web_tools_ssl_port: 8443
|
|
12
|
-
|
|
13
|
-
security_groups:
|
|
14
|
-
web:
|
|
15
|
-
description: "To open up port #{web_port}/#{web_ssl_port} for http server on web role"
|
|
16
|
-
rules:
|
|
17
|
-
- protocol: tcp
|
|
18
|
-
from_port: "#{web_port}"
|
|
19
|
-
to_port: "#{web_port}"
|
|
20
|
-
source_ips: [0.0.0.0/0]
|
|
21
|
-
- protocol: tcp
|
|
22
|
-
from_port: "#{web_ssl_port}"
|
|
23
|
-
to_port: "#{web_ssl_port}"
|
|
24
|
-
source_ips: [0.0.0.0/0]
|
|
25
|
-
web_tools:
|
|
26
|
-
description: "To open up port #{web_tools_port}/#{web_tools_ssl_port} for internal/tools http server"
|
|
27
|
-
rules:
|
|
28
|
-
- protocol: tcp
|
|
29
|
-
from_port: "#{web_tools_port}"
|
|
30
|
-
to_port: "#{web_tools_port}"
|
|
31
|
-
source_ips: [0.0.0.0/0]
|
|
32
|
-
- protocol: tcp
|
|
33
|
-
from_port: "#{web_tools_ssl_port}"
|
|
34
|
-
to_port: "#{web_tools_ssl_port}"
|
|
35
|
-
source_ips: [0.0.0.0/0]
|
|
36
|
-
|
|
37
|
-
roles:
|
|
38
|
-
web:
|
|
39
|
-
assigned_security_groups: [web]
|
|
40
|
-
web_tools:
|
|
41
|
-
assigned_security_groups: [web_tools]
|
|
@@ -1,40 +1,5 @@
|
|
|
1
|
-
|
|
2
1
|
role_dependencies:
|
|
3
2
|
web: [haproxy]
|
|
4
3
|
app: [passenger]
|
|
5
4
|
web_tools: [apache, graphite_server, graphite_web]
|
|
6
5
|
|
|
7
|
-
web_port: 80
|
|
8
|
-
web_ssl_port: 443
|
|
9
|
-
web_tools_port: 8080
|
|
10
|
-
web_tools_ssl_port: 8443
|
|
11
|
-
|
|
12
|
-
security_groups:
|
|
13
|
-
web:
|
|
14
|
-
description: "To open up port #{web_port}/#{web_ssl_port} for http server on web role"
|
|
15
|
-
rules:
|
|
16
|
-
- protocol: tcp
|
|
17
|
-
from_port: "#{web_port}"
|
|
18
|
-
to_port: "#{web_port}"
|
|
19
|
-
source_ips: [0.0.0.0/0]
|
|
20
|
-
- protocol: tcp
|
|
21
|
-
from_port: "#{web_ssl_port}"
|
|
22
|
-
to_port: "#{web_ssl_port}"
|
|
23
|
-
source_ips: [0.0.0.0/0]
|
|
24
|
-
web_tools:
|
|
25
|
-
description: "To open up port #{web_tools_port}/#{web_tools_ssl_port} for internal/tools http server"
|
|
26
|
-
rules:
|
|
27
|
-
- protocol: tcp
|
|
28
|
-
from_port: "#{web_tools_port}"
|
|
29
|
-
to_port: "#{web_tools_port}"
|
|
30
|
-
source_ips: [0.0.0.0/0]
|
|
31
|
-
- protocol: tcp
|
|
32
|
-
from_port: "#{web_tools_ssl_port}"
|
|
33
|
-
to_port: "#{web_tools_ssl_port}"
|
|
34
|
-
source_ips: [0.0.0.0/0]
|
|
35
|
-
|
|
36
|
-
roles:
|
|
37
|
-
web:
|
|
38
|
-
assigned_security_groups: [web]
|
|
39
|
-
web_tools:
|
|
40
|
-
assigned_security_groups: [web_tools]
|
|
@@ -2,38 +2,3 @@ role_dependencies:
|
|
|
2
2
|
web: [haproxy]
|
|
3
3
|
app: [passenger_nginx]
|
|
4
4
|
web_tools: [passenger_nginx]
|
|
5
|
-
|
|
6
|
-
web_port: 80
|
|
7
|
-
web_ssl_port: 443
|
|
8
|
-
web_tools_port: 8080
|
|
9
|
-
web_tools_ssl_port: 8443
|
|
10
|
-
|
|
11
|
-
security_groups:
|
|
12
|
-
web:
|
|
13
|
-
description: "To open up port #{web_port}/#{web_ssl_port} for http server on web role"
|
|
14
|
-
rules:
|
|
15
|
-
- protocol: tcp
|
|
16
|
-
from_port: "#{web_port}"
|
|
17
|
-
to_port: "#{web_port}"
|
|
18
|
-
source_ips: [0.0.0.0/0]
|
|
19
|
-
- protocol: tcp
|
|
20
|
-
from_port: "#{web_ssl_port}"
|
|
21
|
-
to_port: "#{web_ssl_port}"
|
|
22
|
-
source_ips: [0.0.0.0/0]
|
|
23
|
-
web_tools:
|
|
24
|
-
description: "To open up port #{web_tools_port}/#{web_tools_ssl_port} for internal/tools http server"
|
|
25
|
-
rules:
|
|
26
|
-
- protocol: tcp
|
|
27
|
-
from_port: "#{web_tools_port}"
|
|
28
|
-
to_port: "#{web_tools_port}"
|
|
29
|
-
source_ips: [0.0.0.0/0]
|
|
30
|
-
- protocol: tcp
|
|
31
|
-
from_port: "#{web_tools_ssl_port}"
|
|
32
|
-
to_port: "#{web_tools_ssl_port}"
|
|
33
|
-
source_ips: [0.0.0.0/0]
|
|
34
|
-
|
|
35
|
-
roles:
|
|
36
|
-
web:
|
|
37
|
-
assigned_security_groups: [web]
|
|
38
|
-
web_tools:
|
|
39
|
-
assigned_security_groups: [web_tools]
|
|
@@ -1,38 +1,3 @@
|
|
|
1
1
|
role_dependencies:
|
|
2
2
|
app: [unicorn]
|
|
3
3
|
web_tools: [nginx]
|
|
4
|
-
|
|
5
|
-
web_port: 80
|
|
6
|
-
web_ssl_port: 443
|
|
7
|
-
web_tools_port: 8080
|
|
8
|
-
web_tools_ssl_port: 8443
|
|
9
|
-
|
|
10
|
-
security_groups:
|
|
11
|
-
web:
|
|
12
|
-
description: "To open up port #{web_port}/#{web_ssl_port} for http server on web role"
|
|
13
|
-
rules:
|
|
14
|
-
- protocol: tcp
|
|
15
|
-
from_port: "#{web_port}"
|
|
16
|
-
to_port: "#{web_port}"
|
|
17
|
-
source_ips: [0.0.0.0/0]
|
|
18
|
-
- protocol: tcp
|
|
19
|
-
from_port: "#{web_ssl_port}"
|
|
20
|
-
to_port: "#{web_ssl_port}"
|
|
21
|
-
source_ips: [0.0.0.0/0]
|
|
22
|
-
web_tools:
|
|
23
|
-
description: "To open up port #{web_tools_port}/#{web_tools_ssl_port} for internal/tools http server"
|
|
24
|
-
rules:
|
|
25
|
-
- protocol: tcp
|
|
26
|
-
from_port: "#{web_tools_port}"
|
|
27
|
-
to_port: "#{web_tools_port}"
|
|
28
|
-
source_ips: [0.0.0.0/0]
|
|
29
|
-
- protocol: tcp
|
|
30
|
-
from_port: "#{web_tools_ssl_port}"
|
|
31
|
-
to_port: "#{web_tools_ssl_port}"
|
|
32
|
-
source_ips: [0.0.0.0/0]
|
|
33
|
-
|
|
34
|
-
roles:
|
|
35
|
-
web:
|
|
36
|
-
assigned_security_groups: [web]
|
|
37
|
-
web_tools:
|
|
38
|
-
assigned_security_groups: [web_tools]
|
|
@@ -1,37 +1,2 @@
|
|
|
1
1
|
role_dependencies:
|
|
2
2
|
app: [passenger_nginx]
|
|
3
|
-
|
|
4
|
-
web_port: 80
|
|
5
|
-
web_ssl_port: 443
|
|
6
|
-
web_tools_port: 8080
|
|
7
|
-
web_tools_ssl_port: 8443
|
|
8
|
-
|
|
9
|
-
security_groups:
|
|
10
|
-
web:
|
|
11
|
-
description: "To open up port #{web_port}/#{web_ssl_port} for http server on web role"
|
|
12
|
-
rules:
|
|
13
|
-
- protocol: tcp
|
|
14
|
-
from_port: "#{web_port}"
|
|
15
|
-
to_port: "#{web_port}"
|
|
16
|
-
source_ips: [0.0.0.0/0]
|
|
17
|
-
- protocol: tcp
|
|
18
|
-
from_port: "#{web_ssl_port}"
|
|
19
|
-
to_port: "#{web_ssl_port}"
|
|
20
|
-
source_ips: [0.0.0.0/0]
|
|
21
|
-
web_tools:
|
|
22
|
-
description: "To open up port #{web_tools_port}/#{web_tools_ssl_port} for internal/tools http server"
|
|
23
|
-
rules:
|
|
24
|
-
- protocol: tcp
|
|
25
|
-
from_port: "#{web_tools_port}"
|
|
26
|
-
to_port: "#{web_tools_port}"
|
|
27
|
-
source_ips: [0.0.0.0/0]
|
|
28
|
-
- protocol: tcp
|
|
29
|
-
from_port: "#{web_tools_ssl_port}"
|
|
30
|
-
to_port: "#{web_tools_ssl_port}"
|
|
31
|
-
source_ips: [0.0.0.0/0]
|
|
32
|
-
|
|
33
|
-
roles:
|
|
34
|
-
web:
|
|
35
|
-
assigned_security_groups: [web]
|
|
36
|
-
web_tools:
|
|
37
|
-
assigned_security_groups: [web_tools]
|
data/test/test_helper.rb
CHANGED
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: rubber
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 2.2.
|
|
4
|
+
version: 2.2.1
|
|
5
5
|
prerelease:
|
|
6
6
|
platform: ruby
|
|
7
7
|
authors:
|
|
@@ -10,7 +10,7 @@ authors:
|
|
|
10
10
|
autorequire:
|
|
11
11
|
bindir: bin
|
|
12
12
|
cert_chain: []
|
|
13
|
-
date: 2013-02-
|
|
13
|
+
date: 2013-02-12 00:00:00.000000000 Z
|
|
14
14
|
dependencies:
|
|
15
15
|
- !ruby/object:Gem::Dependency
|
|
16
16
|
name: capistrano
|
|
@@ -681,7 +681,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
681
681
|
version: '0'
|
|
682
682
|
segments:
|
|
683
683
|
- 0
|
|
684
|
-
hash: -
|
|
684
|
+
hash: -804077065696695776
|
|
685
685
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
686
686
|
none: false
|
|
687
687
|
requirements:
|
|
@@ -690,52 +690,12 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
690
690
|
version: '0'
|
|
691
691
|
segments:
|
|
692
692
|
- 0
|
|
693
|
-
hash: -
|
|
693
|
+
hash: -804077065696695776
|
|
694
694
|
requirements: []
|
|
695
695
|
rubyforge_project: rubber
|
|
696
|
-
rubygems_version: 1.8.
|
|
696
|
+
rubygems_version: 1.8.23
|
|
697
697
|
signing_key:
|
|
698
698
|
specification_version: 3
|
|
699
699
|
summary: A capistrano plugin for managing multi-instance deployments to the cloud
|
|
700
700
|
(ec2)
|
|
701
|
-
test_files:
|
|
702
|
-
- test/cloud/aws_table_store_test.rb
|
|
703
|
-
- test/cloud/aws_test.rb
|
|
704
|
-
- test/cloud/fog_storage_test.rb
|
|
705
|
-
- test/cloud/fog_test.rb
|
|
706
|
-
- test/command_test.rb
|
|
707
|
-
- test/commands/cron_test.rb
|
|
708
|
-
- test/commands/util_test.rb
|
|
709
|
-
- test/dns/aws_test.rb
|
|
710
|
-
- test/dns/zerigo_test.rb
|
|
711
|
-
- test/encryption_test.rb
|
|
712
|
-
- test/environment_test.rb
|
|
713
|
-
- test/fixtures/basic/common/bar.conf
|
|
714
|
-
- test/fixtures/basic/common/foo.conf
|
|
715
|
-
- test/fixtures/basic/host/host1/foo.conf
|
|
716
|
-
- test/fixtures/basic/host/host2/foo.conf
|
|
717
|
-
- test/fixtures/basic/role/role1/foo.conf
|
|
718
|
-
- test/fixtures/basic/role/role2/foo.conf
|
|
719
|
-
- test/fixtures/basic/rubber-extra.yml
|
|
720
|
-
- test/fixtures/basic/rubber.yml
|
|
721
|
-
- test/fixtures/expansion/rubber.yml
|
|
722
|
-
- test/fixtures/generator_order/common/a_first.conf
|
|
723
|
-
- test/fixtures/generator_order/common/z_last.conf
|
|
724
|
-
- test/fixtures/generator_order/host/host1/a_first.conf
|
|
725
|
-
- test/fixtures/generator_order/host/host1/z_last.conf
|
|
726
|
-
- test/fixtures/generator_order/role/role1/a_first.conf
|
|
727
|
-
- test/fixtures/generator_order/role/role1/z_last.conf
|
|
728
|
-
- test/fixtures/generator_order/role/role2/a_first.conf
|
|
729
|
-
- test/fixtures/generator_order/role/role2/z_last.conf
|
|
730
|
-
- test/fixtures/instance_expansion/instance-test.yml
|
|
731
|
-
- test/fixtures/instance_expansion/rubber.yml
|
|
732
|
-
- test/fixtures/nested/rubber.yml
|
|
733
|
-
- test/fixtures/obfuscated/rubber.yml
|
|
734
|
-
- test/fixtures/obfuscated/secret.yml
|
|
735
|
-
- test/fixtures/secret/rubber.yml
|
|
736
|
-
- test/fixtures/secret/secret.yml
|
|
737
|
-
- test/generator_test.rb
|
|
738
|
-
- test/instance_test.rb
|
|
739
|
-
- test/test-rails-template.rb
|
|
740
|
-
- test/test_helper.rb
|
|
741
|
-
- test/util_test.rb
|
|
701
|
+
test_files: []
|