stax 0.0.9 → 0.0.10
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/stax.rb +1 -0
- data/lib/stax/aws/cfn.rb +12 -0
- data/lib/stax/stack/drift.rb +56 -0
- data/lib/stax/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0c1fb0c4863d5f462054105ec15720e4b2055ec4656d703a2217a9bec0ea7957
|
4
|
+
data.tar.gz: 388679f36efeb35b963f7d0a89162282b82df717cd55d69e0100ceff8c0109c9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 82b5a4b04a7880868e806fe561be31651efdb30127bba6a2ebd5aaaf9f9a3d314280d53098285853853107a2154d4140ab3fe84092a4e4399c45eae566939193
|
7
|
+
data.tar.gz: f31ff85970907378fed57b52c2daecb0f8b93b65cd2addec05ab0676530fd23e78af870ee35be916b34deff1ccf45b558f2799c7082376f4f2d2b46eaaa85032
|
data/lib/stax.rb
CHANGED
data/lib/stax/aws/cfn.rb
CHANGED
@@ -160,6 +160,18 @@ module Stax
|
|
160
160
|
client.execute_change_set(opt)
|
161
161
|
end
|
162
162
|
|
163
|
+
def detect_drift(opt)
|
164
|
+
client.detect_stack_drift(opt).stack_drift_detection_id
|
165
|
+
end
|
166
|
+
|
167
|
+
def drift_status(id)
|
168
|
+
client.describe_stack_drift_detection_status(stack_drift_detection_id: id)
|
169
|
+
end
|
170
|
+
|
171
|
+
def drifts(opt)
|
172
|
+
client.describe_stack_resource_drifts(opt).map(&:stack_resource_drifts).flatten
|
173
|
+
end
|
174
|
+
|
163
175
|
end
|
164
176
|
|
165
177
|
end
|
@@ -0,0 +1,56 @@
|
|
1
|
+
module Stax
|
2
|
+
class Stack < Base
|
3
|
+
COLORS = {
|
4
|
+
IN_SYNC: :green,
|
5
|
+
MODIFIED: :red,
|
6
|
+
DELETED: :red,
|
7
|
+
ADD: :green,
|
8
|
+
REMOVE: :red,
|
9
|
+
}
|
10
|
+
|
11
|
+
no_commands do
|
12
|
+
## start a drift detection job and wait for it to complete
|
13
|
+
def run_drift_detection
|
14
|
+
debug("Running drift detection for #{stack_name}")
|
15
|
+
id = Aws::Cfn.detect_drift(stack_name: stack_name)
|
16
|
+
puts "waiting for #{id}"
|
17
|
+
loop do
|
18
|
+
sleep(1)
|
19
|
+
break unless Aws::Cfn.drift_status(id).detection_status == 'DETECTION_IN_PROGRESS'
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
## show the latest drift status for each resource
|
24
|
+
def show_drifts
|
25
|
+
debug("Resource drift status for #{stack_name}")
|
26
|
+
Aws::Cfn.drifts(stack_name: stack_name).tap do |drifts|
|
27
|
+
print_table drifts.map { |d|
|
28
|
+
[d.logical_resource_id, d.resource_type, color(d.stack_resource_drift_status, COLORS), d.timestamp]
|
29
|
+
}
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
## show drift diffs for out of sync resources
|
34
|
+
def show_drifts_details(drifts)
|
35
|
+
drifts.select{ |d| d.stack_resource_drift_status == 'MODIFIED' }.each do |r|
|
36
|
+
debug("Property differences for #{r.logical_resource_id}")
|
37
|
+
r.property_differences.each do |p|
|
38
|
+
puts(
|
39
|
+
p.property_path + ' ' + color(p.difference_type, COLORS),
|
40
|
+
' ' + set_color('-' + p.expected_value, :red),
|
41
|
+
' ' + set_color('+' + p.actual_value, :green)
|
42
|
+
)
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
desc 'drifts', 'stack drifts'
|
49
|
+
def drifts
|
50
|
+
run_drift_detection
|
51
|
+
drifts = show_drifts
|
52
|
+
show_drifts_details(drifts)
|
53
|
+
end
|
54
|
+
|
55
|
+
end
|
56
|
+
end
|
data/lib/stax/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: stax
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.10
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Richard Lister
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-11-
|
11
|
+
date: 2018-11-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -241,6 +241,7 @@ files:
|
|
241
241
|
- lib/stax/stack/cfn.rb
|
242
242
|
- lib/stax/stack/changeset.rb
|
243
243
|
- lib/stax/stack/crud.rb
|
244
|
+
- lib/stax/stack/drift.rb
|
244
245
|
- lib/stax/stack/imports.rb
|
245
246
|
- lib/stax/stack/outputs.rb
|
246
247
|
- lib/stax/stack/parameters.rb
|