spiceweasel 0.9.0 → 0.9.1

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -36,6 +36,7 @@ environments:
36
36
 
37
37
  roles:
38
38
  - base:
39
+ - iisserver:
39
40
  - monitoring:
40
41
  - webserver:
41
42
 
@@ -64,6 +65,12 @@ nodes:
64
65
  - rackspace 3:
65
66
  - recipe[mysql],role[monitoring]
66
67
  - --image 49 --flavor 2
68
+ - windows_winrm winboxA:
69
+ - role[base],role[iisserver]
70
+ - -x Administrator -P 'super_secret_password'
71
+ - windows_ssh winboxB winboxC:
72
+ - role[base],role[iisserver]
73
+ - -x Administrator -P 'super_secret_password'
67
74
  ```
68
75
 
69
76
  JSON
@@ -91,6 +98,7 @@ From the `example.json`:
91
98
  "roles":
92
99
  [
93
100
  {"base":[]},
101
+ {"iisserver":[]},
94
102
  {"monitoring":[]},
95
103
  {"webserver":[]}
96
104
  ],
@@ -141,6 +149,18 @@ From the `example.json`:
141
149
  "recipe[mysql],role[monitoring]",
142
150
  "--image 49 --flavor 2"
143
151
  ]
152
+ },
153
+ {"windows_winrm winboxA":
154
+ [
155
+ "role[base],role[iisserver]",
156
+ "-x Administrator -P 'super_secret_password'"
157
+ ]
158
+ },
159
+ {"windows_ssh winboxB winboxC":
160
+ [
161
+ "role[base],role[iisserver]",
162
+ "-x Administrator -P 'super_secret_password'"
163
+ ]
144
164
  }
145
165
  ]
146
166
  }
@@ -148,7 +168,7 @@ From the `example.json`:
148
168
 
149
169
  Cookbooks
150
170
  ---------
151
- The `cookbooks` section of the JSON or YAML file currently supports `knife cookbook upload FOO` where `FOO` is the name of the cookbook in the `cookbooks` directory. The default behavior is to download the cookbook as a tarball, untar it and remove the tarball. The `--siteinstall` option will allow for use of `knife cookbook site install` with the cookbook and the creation of a vendor branch if git is the underlying version control. If a version is passed, it is validated against the existing cookbook `metadata.rb` and it must match the `metadata.rb` string exactly. You may pass any additional arguments if necessary. The YAML snippet
171
+ The `cookbooks` section of the JSON or YAML file currently supports `knife cookbook upload FOO` where `FOO` is the name of the cookbook in the `cookbooks` directory. The default behavior is to download the cookbook as a tarball, untar it and remove the tarball. The `--siteinstall` option will allow for use of `knife cookbook site install` with the cookbook and the creation of a vendor branch if git is the underlying version control. If a version is passed, it is validated against the existing cookbook `metadata.rb` and it must match the `metadata.rb` string exactly. You may pass any additional arguments if necessary. The example YAML snippet
152
172
 
153
173
  ``` yaml
154
174
  cookbooks:
@@ -171,7 +191,7 @@ knife cookbook upload mysql
171
191
 
172
192
  Environments
173
193
  ------------
174
- The `environments` section of the JSON or YAML file currently supports `knife environment from file FOO` where `FOO` is the name of the environment file ending in `.rb` in the `environments` directory. The YAML snippet
194
+ The `environments` section of the JSON or YAML file currently supports `knife environment from file FOO` where `FOO` is the name of the environment file ending in `.rb` in the `environments` directory. The example YAML snippet
175
195
 
176
196
  ``` yaml
177
197
  environments:
@@ -190,7 +210,7 @@ knife environment from file production.rb
190
210
 
191
211
  Roles
192
212
  -----
193
- The `roles` section of the JSON or YAML file currently supports `knife role from file FOO` where `FOO` is the name of the role file ending in `.rb` in the `roles` directory. The YAML snippet
213
+ The `roles` section of the JSON or YAML file currently supports `knife role from file FOO` where `FOO` is the name of the role file ending in `.rb` in the `roles` directory. The example YAML snippet
194
214
 
195
215
  ``` yaml
196
216
  roles:
@@ -242,7 +262,7 @@ knife data bag from file passwords data_bags/passwords/rabbitmq.json --secret-fi
242
262
 
243
263
  Nodes
244
264
  -----
245
- The `nodes` section of the JSON or YAML file bootstraps a node for each entry where the entry is a hostname or provider and count. Each node requires 2 items after it in a sequence. The first item is the run_list and the second the CLI options used. The run_list may be space or comma-delimited. Validation is performed on the run_list components to ensure that only recipes and roles listed in the file are used. A shortcut syntax for bulk-creating nodes with various providers where the line starts with the provider and ends with the number of nodes to be provisioned. The YAML snippet
265
+ The `nodes` section of the JSON or YAML file bootstraps a node for each entry where the entry is a hostname or provider and count. Each node requires 2 items after it in a sequence. The first item is the run_list and the second the CLI options used. The run_list may be space or comma-delimited. Validation is performed on the run_list components to ensure that only recipes and roles listed in the file are used. You may specify multiple nodes to have the same configuration by listing them separated by a space. A shortcut syntax for bulk-creating nodes with various providers where the line starts with the provider and ends with the number of nodes to be provisioned. Windows nodes need to specify either `windows_winrm` or `windows_ssh` depending on the protocol used, followed by the name of the node(s). The example YAML snippet
246
266
 
247
267
  ``` yaml
248
268
  nodes:
@@ -258,6 +278,12 @@ nodes:
258
278
  - rackspace 3:
259
279
  - recipe[mysql],role[monitoring]
260
280
  - --image 49 --flavor 2
281
+ - windows_winrm winboxA:
282
+ - role[base],role[iisserver]
283
+ - -x Administrator -P 'super_secret_password'
284
+ - windows_ssh winboxB winboxC:
285
+ - role[base],role[iisserver]
286
+ - -x Administrator -P 'super_secret_password'
261
287
  ```
262
288
 
263
289
  produces the knife commands
@@ -272,6 +298,9 @@ knife ec2 server create 'role[webserver],recipe[mysql::client]' -S mray -i ~/.ss
272
298
  knife rackspace server create 'recipe[mysql],role[monitoring]' --image 49 --flavor 2
273
299
  knife rackspace server create 'recipe[mysql],role[monitoring]' --image 49 --flavor 2
274
300
  knife rackspace server create 'recipe[mysql],role[monitoring]' --image 49 --flavor 2
301
+ knife bootstrap windows winrm winboxA -x Administrator -P 'super_secret_password' -r 'role[base],role[iisserver]'
302
+ knife bootstrap windows ssh winboxB -x Administrator -P 'super_secret_password' -r 'role[base],role[iisserver]'
303
+ knife bootstrap windows ssh winboxC -x Administrator -P 'super_secret_password' -r 'role[base],role[iisserver]'
275
304
  ```
276
305
 
277
306
  Usage
@@ -31,6 +31,17 @@ class Spiceweasel::NodeList
31
31
  end
32
32
  end
33
33
  @delete += "knife node#{options['knife_options']} list | xargs knife #{provider[0]} server delete -y\n"
34
+ elsif node.keys[0].start_with?("windows") #windows node bootstrap support
35
+ nodeline = node.keys[0].split()
36
+ provider = nodeline.shift.split('_') #split on 'windows_ssh' etc
37
+ nodeline.each do |server|
38
+ @create += "knife bootstrap #{provider[0]} #{provider[1]}#{options['knife_options']} #{server} #{node[node.keys[0]][1]}"
39
+ if run_list.length > 0
40
+ @create += " -r '#{node[node.keys[0]][0].gsub(/ /,',')}'\n"
41
+ end
42
+ @delete += "knife node#{options['knife_options']} delete #{server} -y\n"
43
+ end
44
+ @delete += "knife node#{options['knife_options']} list | xargs knife #{provider[0]} server delete -y\n"
34
45
  else #node bootstrap support
35
46
  node.keys[0].split.each do |server|
36
47
  @create += "knife bootstrap#{options['knife_options']} #{server} #{node[node.keys[0]][1]}"
@@ -0,0 +1,40 @@
1
+ #
2
+ # Author:: Matt Ray (<matt@opscode.com>)
3
+ #
4
+ # Copyright:: 2011, Opscode, Inc <legal@opscode.com>
5
+ #
6
+ # Licensed under the Apache License, Version 2.0 (the "License");
7
+ # you may not use this file except in compliance with the License.
8
+ # You may obtain a copy of the License at
9
+ #
10
+ # http://www.apache.org/licenses/LICENSE-2.0
11
+ #
12
+ # Unless required by applicable law or agreed to in writing, software
13
+ # distributed under the License is distributed on an "AS IS" BASIS,
14
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ # See the License for the specific language governing permissions and
16
+ # limitations under the License.
17
+ #
18
+
19
+ #find a list of all the recipes provided by the included cookbooks for validation
20
+ class Spiceweasel::RecipeList
21
+ def initialize(cookbooks = [], options = {})
22
+ @recipes = []
23
+ if NOVALIDATION
24
+ STDOUT.puts "DEBUG: Skipping validation of recipes" if DEBUG
25
+ else
26
+ if cookbooks
27
+ cookbooks.each do |cookbook|
28
+ #check contents of each cookbook and pull out the recipes
29
+ #store in recipes in the form cookbook::recipe
30
+ end
31
+ end
32
+ end
33
+ end
34
+
35
+ attr_reader :recipes, :create, :delete
36
+
37
+ def member?(recipe)
38
+ recipes.include?(recipe)
39
+ end
40
+ end
@@ -1,3 +1,3 @@
1
1
  module Spiceweasel
2
- VERSION = "0.9.0"
2
+ VERSION = "0.9.1"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: spiceweasel
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.0
4
+ version: 0.9.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -10,12 +10,12 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2011-11-17 00:00:00.000000000 -06:00
13
+ date: 2011-12-14 00:00:00.000000000 -06:00
14
14
  default_executable:
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: chef
18
- requirement: &2151797000 !ruby/object:Gem::Requirement
18
+ requirement: &2164297640 !ruby/object:Gem::Requirement
19
19
  none: false
20
20
  requirements:
21
21
  - - ! '>='
@@ -23,10 +23,10 @@ dependencies:
23
23
  version: '0'
24
24
  type: :runtime
25
25
  prerelease: false
26
- version_requirements: *2151797000
26
+ version_requirements: *2164297640
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: json
29
- requirement: &2151795080 !ruby/object:Gem::Requirement
29
+ requirement: &2164297040 !ruby/object:Gem::Requirement
30
30
  none: false
31
31
  requirements:
32
32
  - - ! '>='
@@ -34,10 +34,10 @@ dependencies:
34
34
  version: '0'
35
35
  type: :runtime
36
36
  prerelease: false
37
- version_requirements: *2151795080
37
+ version_requirements: *2164297040
38
38
  - !ruby/object:Gem::Dependency
39
39
  name: mixlib-cli
40
- requirement: &2151793020 !ruby/object:Gem::Requirement
40
+ requirement: &2164296500 !ruby/object:Gem::Requirement
41
41
  none: false
42
42
  requirements:
43
43
  - - ! '>='
@@ -45,10 +45,10 @@ dependencies:
45
45
  version: '0'
46
46
  type: :runtime
47
47
  prerelease: false
48
- version_requirements: *2151793020
48
+ version_requirements: *2164296500
49
49
  - !ruby/object:Gem::Dependency
50
50
  name: rspec
51
- requirement: &2151791600 !ruby/object:Gem::Requirement
51
+ requirement: &2164295960 !ruby/object:Gem::Requirement
52
52
  none: false
53
53
  requirements:
54
54
  - - ! '>='
@@ -56,7 +56,7 @@ dependencies:
56
56
  version: '0'
57
57
  type: :development
58
58
  prerelease: false
59
- version_requirements: *2151791600
59
+ version_requirements: *2164295960
60
60
  description: This provides a CLI for generating knife commands to build Chef-managed
61
61
  infrastructure from a simple YAML file.
62
62
  email:
@@ -73,6 +73,7 @@ files:
73
73
  - lib/spiceweasel/data_bag_list.rb
74
74
  - lib/spiceweasel/environment_list.rb
75
75
  - lib/spiceweasel/node_list.rb
76
+ - lib/spiceweasel/recipe_list.rb
76
77
  - lib/spiceweasel/role_list.rb
77
78
  - lib/spiceweasel/run_list.rb
78
79
  - lib/spiceweasel/version.rb