do_snapshot 0.0.1 → 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +72 -2
- data/do_snapshot.gemspec +2 -2
- data/lib/do_snapshot/cli.rb +20 -8
- data/lib/do_snapshot/version.rb +1 -1
- data/lib/do_snapshot.rb +0 -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: d46f25363b39fbfdbe390c2fe585a0a859414f39
|
4
|
+
data.tar.gz: 1163c72711dc3ccd58b21444bf0b65d75184e255
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5ac384653b71a000fa1511fcc84bb9233aef285320fc5bcfc76d516f75c087790f7c415fd95eeda5175eb4e09636ff1b86ed9595884d08d6c685dade01d3f90e
|
7
|
+
data.tar.gz: 3409ab059c16d04d4b404dc48a189e6f2c3e7623aed528fad52f8680079d9f746271911eb33a49d1b912cc94773547f600d98ef5ad39afc7f5c3181a01362a83
|
data/README.md
CHANGED
@@ -1,6 +1,22 @@
|
|
1
1
|
# DoSnapshot
|
2
2
|
|
3
|
-
|
3
|
+
You can use this gem to backup's DigitalOcean droplet's via snapshot.
|
4
|
+
|
5
|
+
Here some features:
|
6
|
+
|
7
|
+
- Binary for cron and command-line.
|
8
|
+
- Mail notification when maximum of snapshots for droplet reached.
|
9
|
+
- Custom mail settings (You can set [Pony](https://github.com/benprew/pony) mail settings).
|
10
|
+
- Stop mode (when you don't want to create new snapshots when maximum is reached).
|
11
|
+
- Logging into selected directory.
|
12
|
+
- Trace mode for research.
|
13
|
+
- Quiet mode for silence.
|
14
|
+
|
15
|
+
There not so much of dependencies:
|
16
|
+
|
17
|
+
- `Digitalocean` for API requests.
|
18
|
+
- `Thor` for CLI.
|
19
|
+
- `Pony` for mail notifications.
|
4
20
|
|
5
21
|
## Installation
|
6
22
|
|
@@ -18,7 +34,61 @@ Or install it yourself as:
|
|
18
34
|
|
19
35
|
## Usage
|
20
36
|
|
21
|
-
|
37
|
+
First you may need to set DigitalOcean API keys:
|
38
|
+
|
39
|
+
```shell
|
40
|
+
export DIGITAL_OCEAN_CLIENT_ID = "SOMEID"
|
41
|
+
export DIGITAL_OCEAN_API_KEY = "SOMEKEY"
|
42
|
+
```
|
43
|
+
|
44
|
+
If you want to set keys without environment, than set it via options:
|
45
|
+
|
46
|
+
```shell
|
47
|
+
do_snapshot --digital-ocean-client-id YOURLONGAPICLIENTID --digital-ocean-api-key YOURLONGAPIKEY
|
48
|
+
```
|
49
|
+
|
50
|
+
E-mail notifications disabled out of the box.
|
51
|
+
For working mailer you need to set e-mail settings via run options.
|
52
|
+
|
53
|
+
```shell
|
54
|
+
Usage:
|
55
|
+
do_snapshot create
|
56
|
+
|
57
|
+
Options:
|
58
|
+
-o, [--only=123456 123456 123456] # Use only selected droplets.
|
59
|
+
-e, [--exclude=123456 123456 123456] # Except some droplets.
|
60
|
+
-k, [--keep=5] # How much snapshots you want to keep?
|
61
|
+
# Default: 10
|
62
|
+
-s, [--stop], [--no-stop] # Stop creating snapshots if maximum is reached.
|
63
|
+
-m, [--mail=to:yourmail@example.com] # Receive mail if maximum is reached.
|
64
|
+
-t, [--smtp=user_name:yourmail@example.com password:password] # SMTP options.
|
65
|
+
-l, [--log=/Users/someone/.do_snapshot/main.log] # Log file path. By default logging is disabled.
|
66
|
+
-d, [--trace], [--no-trace] # Debug mode.
|
67
|
+
-q, [--quiet], [--no-quiet] # Quiet mode. If don't need any messages and log's
|
68
|
+
[--digital-ocean-client-id=YOURLONGAPICLIENTID] # DIGITAL_OCEAN_CLIENT_ID. if you can't use environment.
|
69
|
+
[--digital-ocean-api-key=YOURLONGAPIKEY] # DIGITAL_OCEAN_API_KEY. if you can't use environment.
|
70
|
+
|
71
|
+
Description:
|
72
|
+
`do_snapshot create` will create and cleanup snapshots on your droplets.
|
73
|
+
|
74
|
+
You can optionally specify parameters to select or exclude some droplets.
|
75
|
+
|
76
|
+
Advanced options example for MAIL feature:
|
77
|
+
|
78
|
+
--mail to:mail@somehost.com from:from@host.com --smtp address:smtp.gmail.com user_name:someuser password:somepassword
|
79
|
+
|
80
|
+
For more details look here: [https://github.com/benprew/pony](https://github.com/benprew/pony)
|
81
|
+
|
82
|
+
Example:
|
83
|
+
|
84
|
+
> $ do_snapshot --keep 5 --quiet
|
85
|
+
|
86
|
+
> $ do_snapshot --only 123456 1234567 --store 3
|
87
|
+
|
88
|
+
> $ do_snapshot --exclude 123456 123457
|
89
|
+
|
90
|
+
> $ do_snapshot --keep 10 --stop true --mail to:yourmail@example.com
|
91
|
+
```
|
22
92
|
|
23
93
|
## Contributing
|
24
94
|
|
data/do_snapshot.gemspec
CHANGED
@@ -8,8 +8,8 @@ Gem::Specification.new do |spec|
|
|
8
8
|
spec.version = DoSnapshot::VERSION
|
9
9
|
spec.authors = ['Alexander Merkulov']
|
10
10
|
spec.email = ['sasha@merqlove.ru']
|
11
|
-
spec.summary = %q{Snapshot
|
12
|
-
spec.description = %q{Snapshot
|
11
|
+
spec.summary = %q{Snapshot creator for Digital Ocean droplets. Use it with Cron or other tools.}
|
12
|
+
spec.description = %q{Snapshot creator for Digital Ocean droplets. Use it with Cron or other tools.}
|
13
13
|
spec.homepage = 'http://github.com/merqlove/do_snapshot'
|
14
14
|
spec.license = 'MIT'
|
15
15
|
|
data/lib/do_snapshot/cli.rb
CHANGED
@@ -10,11 +10,19 @@ module DoSnapshot
|
|
10
10
|
|
11
11
|
def initialize(*args)
|
12
12
|
super
|
13
|
-
|
13
|
+
|
14
|
+
# Use Thor log especially
|
15
|
+
Log.thor_log = Thor::Shell::Color.new unless options.include?('quiet')
|
16
|
+
|
17
|
+
if options.include?('log')
|
14
18
|
Log.logger = Logger.new(options['log'])
|
15
|
-
Log.thor_log = Thor::Shell::Color.new
|
16
19
|
Log.logger.level = options.include?('trace') ? Logger::DEBUG : Logger::INFO
|
17
20
|
end
|
21
|
+
|
22
|
+
# Check for keys via options
|
23
|
+
ENV['DIGITAL_OCEAN_CLIENT_ID'] = options['digital_ocean_client_id'] if options.include? 'digital_ocean_client_id'
|
24
|
+
ENV['DIGITAL_OCEAN_API_KEY'] = options['digital_ocean_api_key'] if options.include? 'digital_ocean_api_key'
|
25
|
+
|
18
26
|
try_keys_first
|
19
27
|
end
|
20
28
|
|
@@ -43,13 +51,17 @@ module DoSnapshot
|
|
43
51
|
option :only, type: :array, default: [], aliases: ['-o'], banner: '123456 123456 123456', desc: 'Use only selected droplets.'
|
44
52
|
option :exclude, type: :array, default: [], aliases: ['-e'], banner: '123456 123456 123456', desc: 'Except some droplets.'
|
45
53
|
option :keep, type: :numeric, default: 10, aliases: ['-k'], banner: '5', desc: 'How much snapshots you want to keep?'
|
46
|
-
option :stop, type: :boolean, aliases: ['-s'],
|
54
|
+
option :stop, type: :boolean, aliases: ['-s'], desc: 'Stop creating snapshots if maximum is reached.'
|
47
55
|
option :mail, type: :hash, default: {}, aliases: ['-m'], banner: 'to:yourmail@example.com', desc: 'Receive mail if maximum is reached.'
|
48
56
|
option :smtp, type: :hash, default: {}, aliases: ['-t'], banner: 'user_name:yourmail@example.com password:password', desc: 'SMTP options.'
|
49
57
|
option :log, type: :string, aliases: ['-l'], banner: '/Users/someone/.do_snapshot/main.log', desc: 'Log file path. By default logging is disabled.'
|
50
|
-
option :trace, type: :boolean, aliases: ['-d'], desc: 'Debug mode.
|
58
|
+
option :trace, type: :boolean, aliases: ['-d'], desc: 'Debug mode.'
|
59
|
+
option :quiet, type: :boolean, aliases: ['-q'], desc: 'Quiet mode. If don\'t need any messages and log\'s'
|
60
|
+
option :digital_ocean_client_id, type: :string, banner: 'YOURLONGAPICLIENTID', desc: 'DIGITAL_OCEAN_CLIENT_ID. if you can\'t use environment.'
|
61
|
+
option :digital_ocean_api_key, type: :string, banner: 'YOURLONGAPIKEY', desc: 'DIGITAL_OCEAN_API_KEY. if you can\'t use environment.'
|
62
|
+
|
51
63
|
def create
|
52
|
-
DoSnapshot::Command.execute options, %w( log trace )
|
64
|
+
DoSnapshot::Command.execute options, %w( log trace quiet digital_ocean_client_id digital_ocean_api_key )
|
53
65
|
rescue => e
|
54
66
|
Log.error e.message
|
55
67
|
backtrace(e) if options.include? 'trace'
|
@@ -63,11 +75,11 @@ module DoSnapshot
|
|
63
75
|
end
|
64
76
|
end
|
65
77
|
|
66
|
-
# Check DigitalOcean API keys
|
78
|
+
# Check for DigitalOcean API keys
|
67
79
|
def try_keys_first
|
68
80
|
Log.debug 'Checking DigitalOcean Id\'s.'
|
69
|
-
fail Thor::Error, 'You must have DIGITAL_OCEAN_CLIENT_ID in environment.' if !ENV['DIGITAL_OCEAN_CLIENT_ID'] || ENV['DIGITAL_OCEAN_CLIENT_ID'].empty?
|
70
|
-
fail Thor::Error, 'You must have DIGITAL_OCEAN_API_KEY in environment.' if !ENV['DIGITAL_OCEAN_API_KEY'] || ENV['DIGITAL_OCEAN_API_KEY'].empty?
|
81
|
+
fail Thor::Error, 'You must have DIGITAL_OCEAN_CLIENT_ID in environment or set via options.' if !ENV['DIGITAL_OCEAN_CLIENT_ID'] || ENV['DIGITAL_OCEAN_CLIENT_ID'].empty?
|
82
|
+
fail Thor::Error, 'You must have DIGITAL_OCEAN_API_KEY in environment or set via options.' if !ENV['DIGITAL_OCEAN_API_KEY'] || ENV['DIGITAL_OCEAN_API_KEY'].empty?
|
71
83
|
end
|
72
84
|
end
|
73
85
|
end
|
data/lib/do_snapshot/version.rb
CHANGED
data/lib/do_snapshot.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: do_snapshot
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Alexander Merkulov
|
@@ -80,7 +80,7 @@ dependencies:
|
|
80
80
|
- - ">="
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: '0'
|
83
|
-
description: Snapshot
|
83
|
+
description: Snapshot creator for Digital Ocean droplets. Use it with Cron or other
|
84
84
|
tools.
|
85
85
|
email:
|
86
86
|
- sasha@merqlove.ru
|
@@ -127,6 +127,6 @@ rubyforge_project:
|
|
127
127
|
rubygems_version: 2.2.2
|
128
128
|
signing_key:
|
129
129
|
specification_version: 4
|
130
|
-
summary: Snapshot
|
130
|
+
summary: Snapshot creator for Digital Ocean droplets. Use it with Cron or other tools.
|
131
131
|
test_files:
|
132
132
|
- test/.keep
|