sfn 2.0.6 → 2.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +4 -0
- data/README.md +3 -299
- data/lib/sfn/command_module/template.rb +1 -3
- data/lib/sfn/version.rb +1 -1
- data/sfn.gemspec +1 -1
- metadata +11 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4dc5791789b8e7f511712d9d81e8352f8e4780db
|
4
|
+
data.tar.gz: e98faf54dde7e50b2677e6cd8eb11cb5f07c55b1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e6d304c36c90b3776397d17a940a3e3a8eab174c9492f84151f6f96f2a78b8d176b3db05a204bf08c447603ed39ea5af65a7d4f1ef54ac6230e6c69312967ff7
|
7
|
+
data.tar.gz: 1d25448614c1252fd5d66644e33d028c9b4eef596347ea7c373758ca0bfebf68dcec906424d83b06083c7253abd8efda1b280e37716531e234065679f80a15af
|
data/CHANGELOG.md
CHANGED
data/README.md
CHANGED
@@ -5,312 +5,16 @@
|
|
5
5
|
SparkleFormation command line interface for interacting
|
6
6
|
with orchestration APIs.
|
7
7
|
|
8
|
-
## Extra Documentation
|
9
|
-
|
10
|
-
* [User Documentation](http://www.sparkleformation.io/docs/sfn/)
|
11
|
-
|
12
8
|
## API Compatibility
|
13
9
|
|
14
10
|
* AWS
|
15
11
|
* Rackspace
|
16
12
|
* OpenStack
|
13
|
+
* Azure
|
17
14
|
|
18
|
-
##
|
19
|
-
|
20
|
-
Configuration is defined within a `.sfn` file. The
|
21
|
-
`sfn` command will start from the current working
|
22
|
-
directory and work up to the root of the file system
|
23
|
-
to discover this file.
|
24
|
-
|
25
|
-
### Configuration formats
|
26
|
-
|
27
|
-
The configuration file can be provided in a variety of
|
28
|
-
formats:
|
29
|
-
|
30
|
-
#### JSON
|
31
|
-
|
32
|
-
```json
|
33
|
-
{
|
34
|
-
"credentials": {
|
35
|
-
MIASMA_CREDENTIALS
|
36
|
-
},
|
37
|
-
"options": {
|
38
|
-
"disable_rollback": true
|
39
|
-
}
|
40
|
-
}
|
41
|
-
```
|
42
|
-
|
43
|
-
#### YAML
|
44
|
-
|
45
|
-
```yaml
|
46
|
-
---
|
47
|
-
:credentials:
|
48
|
-
:fubar: true
|
49
|
-
:options:
|
50
|
-
:disable_rollback: true
|
51
|
-
```
|
52
|
-
|
53
|
-
#### XML
|
54
|
-
|
55
|
-
```xml
|
56
|
-
<configuration>
|
57
|
-
<credentials>
|
58
|
-
MIASMA_CREDENTIALS
|
59
|
-
</credentials>
|
60
|
-
<options>
|
61
|
-
<disable_rollback>
|
62
|
-
true
|
63
|
-
</disable_rollback>
|
64
|
-
</options>
|
65
|
-
</configuration>
|
66
|
-
```
|
67
|
-
|
68
|
-
#### Ruby
|
69
|
-
|
70
|
-
```ruby
|
71
|
-
Configuration.new do
|
72
|
-
credentials do
|
73
|
-
MIASMA_CREDENTIALS
|
74
|
-
end
|
75
|
-
options.on_failure 'nothing'
|
76
|
-
end
|
77
|
-
```
|
78
|
-
|
79
|
-
|
80
|
-
## Commands
|
81
|
-
|
82
|
-
* `sfn list`
|
83
|
-
* `sfn create`
|
84
|
-
* `sfn update`
|
85
|
-
* `sfn destroy`
|
86
|
-
* `sfn events`
|
87
|
-
* `sfn describe`
|
88
|
-
* `sfn inspect`
|
89
|
-
* `sfn validate`
|
90
|
-
* `sfn diff`
|
91
|
-
|
92
|
-
_NOTE: All commands respond to `--help` and will provide a full list of valid options._
|
93
|
-
|
94
|
-
### `sfn list`
|
95
|
-
|
96
|
-
Provides listing of current stacks and state of each stack.
|
97
|
-
|
98
|
-
### `sfn validate`
|
99
|
-
|
100
|
-
Validates template with API
|
101
|
-
|
102
|
-
### `sfn create NAME`
|
103
|
-
|
104
|
-
Creates a new stack with the provided name (`NAME`).
|
105
|
-
|
106
|
-
|
107
|
-
#### Processing
|
108
|
-
|
109
|
-
The default behavior of this plugin assumes templates will be
|
110
|
-
in JSON format. The `--processing` flag will allow providing Ruby
|
111
|
-
files to dynamically generate templates using the SparkleFormation
|
112
|
-
library.
|
113
|
-
|
114
|
-
_NOTE: [SparkleFormation Usage Documentation](http://www.sparkleformation.io/docs/sparkle_formation/)._
|
115
|
-
|
116
|
-
This plugin supports the advanced stack nesting feature provided by
|
117
|
-
the SparkleFormation library.
|
118
|
-
|
119
|
-
#### Translations
|
120
|
-
|
121
|
-
Translations are currently an `alpha` feature and only a subset of
|
122
|
-
resources are supported.
|
123
|
-
|
124
|
-
### `sfn update STACK`
|
125
|
-
|
126
|
-
Update an existing stack.
|
127
|
-
|
128
|
-
### `sfn diff STACK`
|
129
|
-
|
130
|
-
View resources differences that would be applied to a running stack
|
131
|
-
on update.
|
132
|
-
|
133
|
-
### `sfn destroy STACK`
|
134
|
-
|
135
|
-
Destroy an existing stack.
|
136
|
-
|
137
|
-
#### Name globs
|
138
|
-
|
139
|
-
The destroy command supports globbing for performing multiple
|
140
|
-
destructions based on glob match. For example, given existing
|
141
|
-
stacks:
|
142
|
-
|
143
|
-
* TestStack1
|
144
|
-
* TestStack2
|
145
|
-
* Production
|
146
|
-
|
147
|
-
running the following command:
|
148
|
-
|
149
|
-
```
|
150
|
-
$ sfn destroy Test*
|
151
|
-
```
|
152
|
-
|
153
|
-
will destroy the `TestStack1` and `TestStack2`
|
15
|
+
## Documentation
|
154
16
|
|
155
|
-
|
156
|
-
|
157
|
-
Display the event listing of given stack. If the state of the
|
158
|
-
stack is "in progress", the polling option will result in
|
159
|
-
polling and displaying new events until the stack reaches a
|
160
|
-
completed state.
|
161
|
-
|
162
|
-
### `sfn describe STACK`
|
163
|
-
|
164
|
-
Display resources and outputs of give stack.
|
165
|
-
|
166
|
-
|
167
|
-
### `sfn inspect STACK`
|
168
|
-
|
169
|
-
The stack inspection command simply provides a proxy to the
|
170
|
-
underlying resource modeling objects provided via the
|
171
|
-
[miasma][miasma] library. It also provides extra helpers for
|
172
|
-
running common inspection commands.
|
173
|
-
|
174
|
-
### Interesting `inspect` options
|
175
|
-
|
176
|
-
* `--nodes` list node addresses within stack
|
177
|
-
* `--instance-failure [LOG_FILE]` print log file from failed instance
|
178
|
-
* `--attribute ATTR` print stack attribute
|
179
|
-
|
180
|
-
#### `--nodes`
|
181
|
-
|
182
|
-
This option will return a list of compute instance IDs and
|
183
|
-
their addresses. The result will be a complete list including
|
184
|
-
direct compute resources within the stack as well as compute
|
185
|
-
resources that are part of auto scaling group resouces.
|
186
|
-
|
187
|
-
#### `--instance-failure [LOG_FILE]`
|
188
|
-
|
189
|
-
If the stack create or update failed due to a compute instance,
|
190
|
-
this option will attempt to locate the instance, connect to
|
191
|
-
it and download the defined log file. The default log file
|
192
|
-
is set to: `/var/log/chef/client.log`
|
193
|
-
|
194
|
-
#### `--attribute ATTR`
|
195
|
-
|
196
|
-
The attribute option is what provides the proxy to the underlying
|
197
|
-
[miasma][miasma] resource modeling. The value of `ATTR` is what should be
|
198
|
-
called on the `Miasma::Models::Orchestration::Stack` instance.
|
199
|
-
For example, to display the JSON template of a stack:
|
200
|
-
|
201
|
-
```
|
202
|
-
$ sfn inspect STACK -a template
|
203
|
-
```
|
204
|
-
|
205
|
-
To display the resource collection of the stack:
|
206
|
-
|
207
|
-
```
|
208
|
-
$ sfn inspect STACK -a resources
|
209
|
-
```
|
210
|
-
|
211
|
-
This will provide a list of resources. Now, to make this more
|
212
|
-
useful, we can start inspect specific resources. Lets assume
|
213
|
-
that the 3rd resource in the collection is an auto scaling
|
214
|
-
group resource. We can isolate that resource for display:
|
215
|
-
|
216
|
-
```
|
217
|
-
$ sfn inspect STACK -a "resources.all.at(2)"
|
218
|
-
```
|
219
|
-
|
220
|
-
Note that the resources are an array, and we are using a zero
|
221
|
-
based index. Now, this simply provides us with the information
|
222
|
-
we already have seen. One of the handy features within the
|
223
|
-
[miasma][miasma] library is the ability to expand supported resources.
|
224
|
-
So, we can expand this resource:
|
225
|
-
|
226
|
-
```
|
227
|
-
$ sfn inspect STACK -a "resources.all.at(2).expand"
|
228
|
-
```
|
229
|
-
|
230
|
-
This will expand the resource instance and return the actual
|
231
|
-
auto scaling group resource. The result will provide more detailed
|
232
|
-
information about the scaling group. But, perhaps we are looking
|
233
|
-
for the instances in this scaling group. The model instance we
|
234
|
-
now have (`Miasma::Orchestration::Models::AutoScale::Group`)
|
235
|
-
contains a `servers` attribute. The output lists the IDs of the
|
236
|
-
instances, but we can expand those as well:
|
237
|
-
|
238
|
-
```
|
239
|
-
$ sfn inspect STACK -a "resources.all.at(2).expand.servers.map(&:expand)"
|
240
|
-
```
|
241
|
-
|
242
|
-
The attribute string will be minimally processed when proxying calls
|
243
|
-
to the underlying models, which is why we are able to do ruby-ish
|
244
|
-
style things.
|
245
|
-
|
246
|
-
## Chef Knife Integration
|
247
|
-
|
248
|
-
This library will also provide `cloudformation` subcommands
|
249
|
-
to knife.
|
250
|
-
|
251
|
-
### Configuration
|
252
|
-
|
253
|
-
The easiest way to configure the plugin is via the
|
254
|
-
`knife.rb` file. Credentials are the only configuration
|
255
|
-
requirement, and the `Hash` provided is proxied to
|
256
|
-
[Miasma][miasma]. All configuration options provided
|
257
|
-
via the `sfn` command are allowed within the
|
258
|
-
`knife[:cloudformation]` namespace:
|
259
|
-
|
260
|
-
#### AWS
|
261
|
-
|
262
|
-
```ruby
|
263
|
-
# .chef/knife.rb
|
264
|
-
|
265
|
-
knife[:cloudformation][:credentials] = {
|
266
|
-
:provider => :aws,
|
267
|
-
:aws_access_key_id => ENV['AWS_ACCESS_KEY_ID'],
|
268
|
-
:aws_secret_access_key => ENV['AWS_SECRET_ACCESS_KEY'],
|
269
|
-
:aws_region => ENV['AWS_REGION']
|
270
|
-
}
|
271
|
-
```
|
272
|
-
|
273
|
-
#### Rackspace
|
274
|
-
|
275
|
-
```ruby
|
276
|
-
# .chef/knife.rb
|
277
|
-
|
278
|
-
knife[:cloudformation][:credentials] = {
|
279
|
-
:provider => :rackspace,
|
280
|
-
:rackspace_username => ENV['RACKSPACE_USERNAME'],
|
281
|
-
:rackspace_api_key => ENV['RACKSPACE_API_KEY'],
|
282
|
-
:rackspace_region => ENV['RACKSPACE_REGION']
|
283
|
-
}
|
284
|
-
```
|
285
|
-
|
286
|
-
#### OpenStack
|
287
|
-
|
288
|
-
```ruby
|
289
|
-
# .chef/knife.rb
|
290
|
-
|
291
|
-
knife[:cloudformation][:credentials] = {
|
292
|
-
:provider => :open_stack,
|
293
|
-
:open_stack_username => ENV['OPENSTACK_USERNAME'],
|
294
|
-
:open_stack_password => ENV['OPENSTACK_PASSWORD'],
|
295
|
-
:open_stack_identity_url => ENV['OPENSTACK_IDENTITY_URL'],
|
296
|
-
:open_stack_tenant_name => ENV['OPENSTACK_TENANT']
|
297
|
-
}
|
298
|
-
```
|
299
|
-
|
300
|
-
### Usage
|
301
|
-
|
302
|
-
All commands available via the `sfn` command are available as
|
303
|
-
knife subcommands under `cloudformation` and `sparkleformation`
|
304
|
-
|
305
|
-
```
|
306
|
-
$ knife cloudformation --help
|
307
|
-
```
|
308
|
-
|
309
|
-
or
|
310
|
-
|
311
|
-
```
|
312
|
-
$ knife sparkleformation --help
|
313
|
-
```
|
17
|
+
* [User Documentation](http://www.sparkleformation.io/docs/sfn/)
|
314
18
|
|
315
19
|
# Info
|
316
20
|
|
@@ -158,9 +158,7 @@ module Sfn
|
|
158
158
|
formation.compile_state = current_state
|
159
159
|
end
|
160
160
|
end
|
161
|
-
|
162
|
-
sf.sparkle.add_sparkle(pack)
|
163
|
-
end
|
161
|
+
sf.sparkle.apply sparkle_collection
|
164
162
|
custom_stack_types.each do |s_type|
|
165
163
|
unless(sf.stack_resource_types.include?(s_type))
|
166
164
|
sf.stack_resource_types.push(s_type)
|
data/lib/sfn/version.rb
CHANGED
data/sfn.gemspec
CHANGED
@@ -15,7 +15,7 @@ Gem::Specification.new do |s|
|
|
15
15
|
s.add_runtime_dependency 'miasma-aws', '>= 0.2.0', '< 0.4'
|
16
16
|
s.add_runtime_dependency 'miasma-azure', '>= 0.1.0', '< 0.3'
|
17
17
|
s.add_runtime_dependency 'net-ssh'
|
18
|
-
s.add_runtime_dependency 'sparkle_formation', '
|
18
|
+
s.add_runtime_dependency 'sparkle_formation', '>= 2.1.2', '< 3'
|
19
19
|
s.add_runtime_dependency 'hashdiff', '~> 0.2.2'
|
20
20
|
s.add_development_dependency 'rake'
|
21
21
|
s.add_development_dependency 'minitest'
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sfn
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.0
|
4
|
+
version: 2.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Chris Roberts
|
@@ -108,16 +108,22 @@ dependencies:
|
|
108
108
|
name: sparkle_formation
|
109
109
|
requirement: !ruby/object:Gem::Requirement
|
110
110
|
requirements:
|
111
|
-
- - "
|
111
|
+
- - ">="
|
112
|
+
- !ruby/object:Gem::Version
|
113
|
+
version: 2.1.2
|
114
|
+
- - "<"
|
112
115
|
- !ruby/object:Gem::Version
|
113
|
-
version: '
|
116
|
+
version: '3'
|
114
117
|
type: :runtime
|
115
118
|
prerelease: false
|
116
119
|
version_requirements: !ruby/object:Gem::Requirement
|
117
120
|
requirements:
|
118
|
-
- - "
|
121
|
+
- - ">="
|
122
|
+
- !ruby/object:Gem::Version
|
123
|
+
version: 2.1.2
|
124
|
+
- - "<"
|
119
125
|
- !ruby/object:Gem::Version
|
120
|
-
version: '
|
126
|
+
version: '3'
|
121
127
|
- !ruby/object:Gem::Dependency
|
122
128
|
name: hashdiff
|
123
129
|
requirement: !ruby/object:Gem::Requirement
|