knife-nodefu 0.8.0 → 0.9.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.
- checksums.yaml +4 -4
- data/README.rdoc +4 -4
- data/lib/chef/knife/nodefu_base.rb +7 -7
- data/lib/chef/knife/nodefu_create.rb +23 -5
- data/lib/knife-nodefu/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a3ad8e8392d71ebeb845d8e9b51f4af596afb1e1
|
4
|
+
data.tar.gz: 9a278214eb9500715e6076b9c58b24ee755229df
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: '0459c7fb7576d7def3d3a4b5c83e6b0064268274c1afede64e69e922313f8ecbdce11661b305b5ebc3aed7103565def7a373e9a70416a844badab5a39bbf6087'
|
7
|
+
data.tar.gz: 53d748a9b6f26f6e1339f7acac1925536ed8e4f4bfe82a5d42d45620417903f2cd4f3fc1afb81842dd9942cf4c689668c84aff63650051d92b4777e21b8053b6
|
data/README.rdoc
CHANGED
@@ -25,7 +25,7 @@ nodefu_definitions "Path to directory"
|
|
25
25
|
|
26
26
|
Example definitions yml file:
|
27
27
|
|
28
|
-
default:
|
28
|
+
default:
|
29
29
|
domain: 'gf-svc.com'
|
30
30
|
|
31
31
|
vm_spec:
|
@@ -51,11 +51,11 @@ default:
|
|
51
51
|
elastic_ip_address: ###.###.###.###
|
52
52
|
group_ids:
|
53
53
|
- 'sg-00000000'
|
54
|
-
- 'sg-00000000'
|
54
|
+
- 'sg-00000000'
|
55
55
|
server_connect_attribute: public_ip_address
|
56
56
|
env:
|
57
57
|
production:
|
58
|
-
staging:
|
58
|
+
staging:
|
59
59
|
vm_spec:
|
60
60
|
m1.large:
|
61
61
|
ssh_key: 'other_key'
|
@@ -70,7 +70,7 @@ This plugin provides the following Knife subcommands. Specific command options
|
|
70
70
|
|
71
71
|
== knife nodefu create
|
72
72
|
|
73
|
-
This command expects an argument in the format of <hostname><id> or <hostname>[<start_range>-<end_range>] where id is an integer. It will automatically use the hostname as the node_spec unless you specify one with the -n option
|
73
|
+
This command expects an argument in the format of <hostname>, <hostname><id> or <hostname>[<start_range>-<end_range>] where id is an integer. It will automatically use the hostname as the node_spec unless you specify one with the -n option
|
74
74
|
|
75
75
|
options:
|
76
76
|
|
@@ -1,5 +1,5 @@
|
|
1
1
|
module NodefuBase
|
2
|
-
class ServerRangeError < StandardError; end
|
2
|
+
class ServerRangeError < StandardError; end
|
3
3
|
class NameFormatError < StandardError; end
|
4
4
|
|
5
5
|
def pretty_print_hash(hash,color=:magenta)
|
@@ -24,18 +24,18 @@ module NodefuBase
|
|
24
24
|
end
|
25
25
|
|
26
26
|
def parse_servers(servers_string)
|
27
|
-
raise ArgumentError if servers_string.nil?
|
28
|
-
results = /([a-zA-z\-\.^\s]*)\[(\d+)-(\d+)\]/.match(servers_string) || results = /([a-zA-z\-\.^\s]*)(\d
|
29
|
-
raise NameFormatError if results.nil?
|
27
|
+
raise ArgumentError if servers_string.nil?
|
28
|
+
results = /([a-zA-z\-\.^\s]*)\[(\d+)-(\d+)\]/.match(servers_string) || results = /([a-zA-z\-\.^\s]*)(\d*)/.match(servers_string)
|
29
|
+
raise NameFormatError if results.nil?
|
30
30
|
base_name = results[1]
|
31
|
-
start_range = results[2].to_i
|
32
|
-
end_range = results[3].nil? ? start_range
|
31
|
+
start_range = results[2].empty? ? nil : results[2].to_i
|
32
|
+
end_range = results[3].nil? ? start_range : results[3].to_i
|
33
33
|
raise ServerRangeError if end_range.to_i < start_range.to_i
|
34
34
|
return [base_name,start_range,end_range]
|
35
35
|
end
|
36
36
|
|
37
37
|
def failed_nodes(servers)
|
38
|
-
servers.select {|k,v| v['chef_node'].nil? || !v['failure'].nil? }
|
38
|
+
servers.select {|k,v| v['chef_node'].nil? || !v['failure'].nil? }
|
39
39
|
end
|
40
40
|
|
41
41
|
def successful_nodes(servers)
|
@@ -13,7 +13,7 @@ class NodefuCreate < Chef::Knife
|
|
13
13
|
|
14
14
|
include NodefuBase
|
15
15
|
|
16
|
-
banner "knife nodefu create <server
|
16
|
+
banner "knife nodefu create <server>[<range>] (OPTIONS)"
|
17
17
|
|
18
18
|
attr_reader :servers
|
19
19
|
|
@@ -102,7 +102,15 @@ class NodefuCreate < Chef::Knife
|
|
102
102
|
end
|
103
103
|
|
104
104
|
# Present the user with some totally rad visuals!!!
|
105
|
-
|
105
|
+
number_of_instances =
|
106
|
+
case start_range
|
107
|
+
when end_range
|
108
|
+
1
|
109
|
+
else
|
110
|
+
end_range - start_range + 1
|
111
|
+
end
|
112
|
+
|
113
|
+
ui.msg("#{ui.color('SHAZAM!',:red)} It looks like you want to launch #{ui.color((number_of_instances).to_s,:yellow)} of these:")
|
106
114
|
ui.msg("#{ui.color('Base Name',:cyan)}: #{base_name}")
|
107
115
|
ui.msg("#{ui.color('Node Spec',:cyan)}: #{node_spec_name}")
|
108
116
|
ui.msg("#{ui.color('VPC Mode',:cyan)}: #{is_vpc?(node_spec)}")
|
@@ -110,7 +118,16 @@ class NodefuCreate < Chef::Knife
|
|
110
118
|
pretty_print_hash(vm_spec)
|
111
119
|
|
112
120
|
unless config[:disable_default_groups] || is_vpc?(node_spec)
|
113
|
-
|
121
|
+
range_formatted =
|
122
|
+
case start_range
|
123
|
+
when nil
|
124
|
+
''
|
125
|
+
when end_range
|
126
|
+
"#{start_range}"
|
127
|
+
else
|
128
|
+
"#{start_range}-#{end_range}"
|
129
|
+
end
|
130
|
+
ui.msg("#{ui.color('Auto generated security groups',:cyan)}: #{generate_security_groups("#{base_name}#{range_formatted}",env,domain)}")
|
114
131
|
end
|
115
132
|
|
116
133
|
config[:yes] ? user_response = 'yes' : user_response = ui.ask_question("Does this seem right to you? [y/n] ").downcase
|
@@ -118,9 +135,10 @@ class NodefuCreate < Chef::Knife
|
|
118
135
|
|
119
136
|
threads = []
|
120
137
|
sema = Mutex.new
|
121
|
-
for i in (start_range..end_range)
|
138
|
+
for i in (start_range.to_i..end_range.to_i)
|
122
139
|
ec2_server_request = Ec2ServerCreate.new
|
123
|
-
node_name = "#{base_name}#{i}"
|
140
|
+
node_name = start_range.nil? ? "#{base_name}" : "#{base_name}#{i}"
|
141
|
+
|
124
142
|
full_node_name = "#{node_name}.#{env}.#{domain}"
|
125
143
|
security_groups = if config[:disable_default_groups]
|
126
144
|
aux_groups
|
data/lib/knife-nodefu/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: knife-nodefu
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.9.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Brian Bianco
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-09-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: knife-ec2
|
@@ -73,7 +73,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
73
73
|
version: '0'
|
74
74
|
requirements: []
|
75
75
|
rubyforge_project:
|
76
|
-
rubygems_version: 2.6.
|
76
|
+
rubygems_version: 2.6.13
|
77
77
|
signing_key:
|
78
78
|
specification_version: 4
|
79
79
|
summary: A knife plugin for simple node creation automation
|