stack-kicker 0.0.16 → 0.0.18
Sign up to get free protection for your applications and to get access to all the features.
- data/README.md +6 -0
- data/bin/stack-kicker +2 -0
- data/lib/stack-kicker/version.rb +1 -1
- data/lib/stack.rb +27 -3
- metadata +2 -2
data/README.md
CHANGED
@@ -28,6 +28,12 @@ So hostnames will be myapp-az1-chef0001, myapp-az1-web0001, myapp-az1-web0002 et
|
|
28
28
|
|
29
29
|
post-install scripts are executed from the same host as stack-kicker is being used, using the same credentials as the current user. They are can be used to retrieve information from a freshly built node (like certificates from a chef server), so block progress until the chef-client run has completed (we use this to block percona/galera & rabbitmq cluster builds so that the first node is up & running correctly before we try and add another node to the cluster)
|
30
30
|
|
31
|
+
### [Global Attributes](id:Global_attributes)
|
32
|
+
TODO
|
33
|
+
#### :find_file_paths
|
34
|
+
An optional array that extends were the find_file fucntion searches for files (find file defaults to ., Stackhome & the gem lib (for shipped templates), the elements of find_file_paths are
|
35
|
+
appended to Stackhome
|
36
|
+
|
31
37
|
### [Role Attributes](id:role_attributes)
|
32
38
|
Roles have several attributes, which control how & how many nodes are created, and how they are created. Below shows the default values for these attributes, which can all be overridden.
|
33
39
|
|
data/bin/stack-kicker
CHANGED
data/lib/stack-kicker/version.rb
CHANGED
data/lib/stack.rb
CHANGED
@@ -342,6 +342,13 @@ cookbook_path [ '<%=config[:stackhome]%>/cookbooks' ]
|
|
342
342
|
config[:site_template] = 'UNKNOWN'
|
343
343
|
end
|
344
344
|
|
345
|
+
if config[:metadata].nil?
|
346
|
+
config[:metadata] = Hash.new
|
347
|
+
end
|
348
|
+
|
349
|
+
if config[:find_file_paths].nil?
|
350
|
+
config[:find_file_paths] = Array.new
|
351
|
+
end
|
345
352
|
|
346
353
|
if config[:node_details].nil?
|
347
354
|
Logger.debug { "Initializing config[:node_details] and config[:azs]" }
|
@@ -779,8 +786,22 @@ cookbook_path [ '<%=config[:stackhome]%>/cookbooks' ]
|
|
779
786
|
|
780
787
|
Logger.info "Creating #{hostname} in #{node_details[hostname][:az]} with role #{role}"
|
781
788
|
|
782
|
-
# this will get put in /meta.js
|
783
|
-
|
789
|
+
# this will get put in /meta.js - should look like this:
|
790
|
+
# {"region": "az-2.region-a.geo-1", "area": "aw2", "az": "az2", "continent": "dev"}
|
791
|
+
metadata = {
|
792
|
+
'region' => node_details[hostname][:az],
|
793
|
+
'continent' => 'unknown', # we could infer this from the region, or default to 'dev'
|
794
|
+
'area' => 'unknown', # we could infer this from the region-a/region-b
|
795
|
+
'az' => node_details[hostname][:az].split('.')[0].sub(/-/, ''),
|
796
|
+
'chef_role' => role
|
797
|
+
}
|
798
|
+
|
799
|
+
Logger.debug "Generated metadata: #{metadata}"
|
800
|
+
Logger.debug "Supplied metadata: #{config[:metadata]}"
|
801
|
+
# merge with the supplied data, which will override our generated data
|
802
|
+
|
803
|
+
metadata.merge!(config[:metadata])
|
804
|
+
Logger.info "Final metadata: #{metadata}"
|
784
805
|
|
785
806
|
os = Stack.connect(config, node_details[hostname][:az])
|
786
807
|
newserver = os.create_server(:name => hostname,
|
@@ -848,10 +869,13 @@ cookbook_path [ '<%=config[:stackhome]%>/cookbooks' ]
|
|
848
869
|
# find a file, using the standard path precedence
|
849
870
|
# 1) cwd
|
850
871
|
# 2) stackhome
|
872
|
+
# 2) stackhome + find_file_paths
|
851
873
|
# 3) gemhome/lib
|
852
874
|
dirs = [ './' ]
|
853
875
|
dirs.push(config[:stackhome])
|
854
|
-
dirs.push(
|
876
|
+
config[:find_file_paths].each { |fp| dirs.push(File.join(config[:stackhome], fp)) }
|
877
|
+
dirs.push(File.join(@@gemhome, 'lib'))
|
878
|
+
dirs.flatten!
|
855
879
|
|
856
880
|
Logger.debug "find_file, looking for #{filename} in #{dirs}"
|
857
881
|
filename_fqp = ''
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: stack-kicker
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.18
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-
|
12
|
+
date: 2013-06-14 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rdoc
|