aws_helper 0.0.3 → 0.0.4
Sign up to get free protection for your applications and to get access to all the features.
- data/README.md +13 -2
- data/lib/awshelper/cli.rb +59 -2
- data/lib/awshelper/version.rb +1 -1
- metadata +2 -2
data/README.md
CHANGED
@@ -31,6 +31,10 @@ Prune so only keep 7 snapshots:
|
|
31
31
|
|
32
32
|
aws_helper snap_prune /dev/sda1 --snapshots_to_keep=7
|
33
33
|
|
34
|
+
Email me a list of the latest 20 snapshots:
|
35
|
+
|
36
|
+
aws_helper snap_email me@company.com ebs.backups@company.com mysmtpemailserver.com
|
37
|
+
|
34
38
|
## Complex Usage
|
35
39
|
|
36
40
|
If your server does not have a role then you need to code the AWS keys which is not best practice:
|
@@ -42,12 +46,19 @@ Snapshot EBS attached to device /dev/sdf volume vol-123456 access AWS through an
|
|
42
46
|
export HTTP_PROXY=http://myproxy:port
|
43
47
|
aws_helper snap /dev/sdf vol-123456 --description zzzzzzzzz
|
44
48
|
|
45
|
-
Prune so only keep
|
49
|
+
Prune so only keep 20 snapshots:
|
50
|
+
|
51
|
+
export AWS_ACCESS_KEY_ID ='xxxxxxxxxxxx'
|
52
|
+
export AWS_SECRET_ACCESS_KEY ='yyyyyyyy'
|
53
|
+
export HTTP_PROXY=http://myproxy:port
|
54
|
+
aws_helper snap_prune /dev/sdf vol-123456 --snapshots_to_keep=20
|
55
|
+
|
56
|
+
Email me a list of the latest 30 snapshots with a subject title on email:
|
46
57
|
|
47
58
|
export AWS_ACCESS_KEY_ID ='xxxxxxxxxxxx'
|
48
59
|
export AWS_SECRET_ACCESS_KEY ='yyyyyyyy'
|
49
60
|
export HTTP_PROXY=http://myproxy:port
|
50
|
-
aws_helper
|
61
|
+
aws_helper snap_email me@company.com ebs.backups@company.com mysmtpemailserver.com 'My EBS Backups' --rows=30
|
51
62
|
|
52
63
|
Other functions to follow
|
53
64
|
|
data/lib/awshelper/cli.rb
CHANGED
@@ -2,6 +2,7 @@ require 'thor'
|
|
2
2
|
require 'awshelper'
|
3
3
|
require 'awshelper/ec2'
|
4
4
|
require 'syslog'
|
5
|
+
require 'net/smtp'
|
5
6
|
|
6
7
|
module Awshelper
|
7
8
|
class CLI < Thor
|
@@ -80,7 +81,7 @@ option :description
|
|
80
81
|
long_desc <<-LONGDESC
|
81
82
|
'snap DEVICE [VOLUME_ID] --description xxxxxx'
|
82
83
|
\x5 Take a snapshot of a EBS Disk by specifying device and/or volume_id.
|
83
|
-
\x5 All commands rely on environment variables
|
84
|
+
\x5 All commands rely on environment variables or the server having an IAM role
|
84
85
|
\x5 export AWS_ACCESS_KEY_ID ='xxxxxxxxxx'
|
85
86
|
\x5 export AWS_SECRET_ACCESS_KEY ='yyyyyy'
|
86
87
|
\x5 For example
|
@@ -102,7 +103,7 @@ option :snapshots_to_keep, :type => :numeric, :required => true
|
|
102
103
|
long_desc <<-LONGDESC
|
103
104
|
'snap_prune DEVICE [VOLUME_ID] --snapshots_to_keep=<numeric>'
|
104
105
|
\x5 Prune the number of snapshots of a EBS Disk by specifying device and/or volume_id and the no to keep.
|
105
|
-
\x5 All commands rely on environment variables
|
106
|
+
\x5 All commands rely on environment variables or the server having an IAM role
|
106
107
|
\x5 export AWS_ACCESS_KEY_ID ='xxxxxxxxxxxx'
|
107
108
|
\x5 export AWS_SECRET_ACCESS_KEY ='yyyyyyyy'
|
108
109
|
\x5 For example
|
@@ -129,6 +130,42 @@ def snap_prune(device, volume_id=nil)
|
|
129
130
|
end
|
130
131
|
end
|
131
132
|
|
133
|
+
desc "snap_email TO FROM EMAIL_SERVER", "Email Snapshot List."
|
134
|
+
option :rows, :type => :numeric, :required => false
|
135
|
+
|
136
|
+
long_desc <<-LONGDESC
|
137
|
+
'snap_email TO FROM EMAIL_SERVER ['EBS Backups'] --rows=<numeric>''
|
138
|
+
\x5 Emails the last 20 snapshots from specific email address via the email_server.
|
139
|
+
\x5 All commands rely on environment variables or the server having an IAM role
|
140
|
+
\x5 export AWS_ACCESS_KEY_ID ='xxxxxxxxxxxx'
|
141
|
+
\x5 export AWS_SECRET_ACCESS_KEY ='yyyyyyyy'
|
142
|
+
\x5 For example
|
143
|
+
\x5 aws_helper snap_email me@mycompany.com ebs.backups@mycompany.com emailserver.com 'My EBS Backups' --rows=20
|
144
|
+
\x5 will email the list of the latest 20 snapshots to email address me@mycompany.com via email server emailserver.com
|
145
|
+
LONGDESC
|
146
|
+
|
147
|
+
def snap_email(to, from, email_server, subject='EBS Backups')
|
148
|
+
rows = 20
|
149
|
+
rows = options[:rows] if options[:rows]
|
150
|
+
message = ""
|
151
|
+
log("Report on snapshots")
|
152
|
+
# ({ Name="start-time", Values="today in YYYY-MM-DD"})
|
153
|
+
i = rows
|
154
|
+
ec2.describe_snapshots.sort { |a,b| b[:aws_started_at] <=> a[:aws_started_at] }.each do |snapshot|
|
155
|
+
if i >0
|
156
|
+
message = message+"#{snapshot[:aws_id]} #{snapshot[:aws_volume_id]} #{snapshot[:aws_started_at]} #{snapshot[:aws_description]} #{snapshot[:aws_status]}\n"
|
157
|
+
i = i-1
|
158
|
+
end
|
159
|
+
end
|
160
|
+
opts = {}
|
161
|
+
opts[:server] = email_server
|
162
|
+
opts[:from] = from
|
163
|
+
opts[:from_alias] = 'EBS Backups'
|
164
|
+
opts[:subject] = subject
|
165
|
+
opts[:body] = message
|
166
|
+
send_email(to,opts)
|
167
|
+
end
|
168
|
+
|
132
169
|
private
|
133
170
|
|
134
171
|
def log(message,type="info")
|
@@ -294,6 +331,26 @@ def detach_volume(volume_id, timeout)
|
|
294
331
|
end
|
295
332
|
end
|
296
333
|
|
334
|
+
def send_email(to,opts={})
|
335
|
+
opts[:server] ||= 'localhost'
|
336
|
+
opts[:from] ||= 'email@example.com'
|
337
|
+
opts[:from_alias] ||= 'Example Emailer'
|
338
|
+
opts[:subject] ||= "You need to see this"
|
339
|
+
opts[:body] ||= "Important stuff!"
|
340
|
+
|
341
|
+
msg = <<END_OF_MESSAGE
|
342
|
+
From: #{opts[:from_alias]} <#{opts[:from]}>
|
343
|
+
To: <#{to}>
|
344
|
+
Subject: #{opts[:subject]}
|
345
|
+
|
346
|
+
#{opts[:body]}
|
347
|
+
END_OF_MESSAGE
|
348
|
+
puts "Sending to #{to} from #{opts[:from]} email server #{opts[:server]}"
|
349
|
+
Net::SMTP.start(opts[:server]) do |smtp|
|
350
|
+
smtp.send_message msg, opts[:from], to
|
351
|
+
end
|
352
|
+
end
|
353
|
+
|
297
354
|
|
298
355
|
end
|
299
356
|
|
data/lib/awshelper/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: aws_helper
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.4
|
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:
|
12
|
+
date: 2015-01-02 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: right_aws
|