knife-backup 0.0.10 → 0.0.11
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +13 -9
- data/lib/chef/knife/backup_export.rb +14 -1
- data/lib/chef/knife/backup_restore.rb +9 -5
- data/lib/knife-backup/version.rb +1 -1
- metadata +4 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 918be2fa6d1491b4927ecf0da398fbe091996932
|
4
|
+
data.tar.gz: d5020e9bee1536d0972bcaa54237705d4d352c72
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 85dad02bd0ec4235da0f74814a1397083aaca2c63647862c7c1610e77908208e52998c5694d9488b9ae5b55c709a52565805833b9786c3f65d19f4ab10d19474
|
7
|
+
data.tar.gz: f15c5518f7844177800a3dc27b0c7e377ec06df850a969da78391dce7b4d557f3077294b456ddd483283020b0af45ae06901f7596737ca56150dc78d523db148
|
data/README.md
CHANGED
@@ -15,7 +15,7 @@ knife-backup will backup all cookbook versions available on the chef server. Coo
|
|
15
15
|
|
16
16
|
Users are a bit tricky, knife-backup can't gather the crypted passwords via the chef server so it's forced to reset them to a random string on restore. Be sure to copy them from the restore output or reset them.
|
17
17
|
|
18
|
-
*Known limitation*: currently it is not possible to
|
18
|
+
*Known limitation*: currently it is not possible to overwrite a client object already available on the target server and these will be skipped.
|
19
19
|
|
20
20
|
## Installation
|
21
21
|
|
@@ -27,26 +27,30 @@ gem install knife-backup
|
|
27
27
|
|
28
28
|
## Usage
|
29
29
|
|
30
|
-
For a list of commands:
|
31
|
-
|
32
|
-
```bash
|
33
|
-
knife backup --help
|
34
|
-
```
|
35
|
-
|
36
30
|
Currently the available commands are:
|
37
31
|
|
38
32
|
```bash
|
39
|
-
knife backup export [component component ...] [-D DIR]
|
33
|
+
knife backup export [component component ...] [-D DIR] [options]
|
40
34
|
knife backup restore [component component ...] [-D DIR]
|
41
35
|
|
42
36
|
#Example:
|
43
37
|
knife backup export cookbooks roles environments -D ~/my_chef_backup
|
44
38
|
```
|
39
|
+
#### Optional Switches for export
|
40
|
+
|
41
|
+
- `-N`, `--latest` only download the latest version of a cookbook
|
42
|
+
- `-I`, `--ignore-permissions` ignore any permission errors during export
|
43
|
+
|
44
|
+
For more information on commands:
|
45
|
+
|
46
|
+
```bash
|
47
|
+
knife backup SUB-COMMAND --help
|
48
|
+
```
|
45
49
|
|
46
50
|
Note: you should treat this as beta software; I'm using it with success for my needs and hopefully you will find it useful too.
|
47
51
|
|
48
52
|
## Todo/Ideas
|
49
|
-
|
53
|
+
|
50
54
|
* Timestamp for the backup folder
|
51
55
|
* Track the failed downloads and report them at the end
|
52
56
|
* Find out if there is a way to overwrite a client object.
|
@@ -46,6 +46,12 @@ module ServerBackup
|
|
46
46
|
:description => "The version of the cookbook to download",
|
47
47
|
:boolean => true
|
48
48
|
|
49
|
+
option :ignore_perm,
|
50
|
+
:short => "-I",
|
51
|
+
:long => "--ignore-permissions",
|
52
|
+
:description => "Continue in case a permission problem occurs",
|
53
|
+
:boolean => true
|
54
|
+
|
49
55
|
def run
|
50
56
|
validate!
|
51
57
|
components = name_args.empty? ? COMPONENTS : name_args
|
@@ -72,7 +78,7 @@ module ServerBackup
|
|
72
78
|
backup_standard("clients", Chef::ApiClient)
|
73
79
|
end
|
74
80
|
|
75
|
-
def users
|
81
|
+
def users
|
76
82
|
if Chef::VERSION =~ /^1[1-9]\./
|
77
83
|
backup_standard("users", Chef::User)
|
78
84
|
else
|
@@ -130,6 +136,13 @@ module ServerBackup
|
|
130
136
|
try += 1
|
131
137
|
load_object(klass, name, try)
|
132
138
|
end
|
139
|
+
rescue Net::HTTPServerException => e
|
140
|
+
if config[:ignore_perm]
|
141
|
+
ui.warn "Problem loading #{name} #{e.message}."
|
142
|
+
ui.warn "Possibly an issue with permissions on the chef server... Skipping"
|
143
|
+
else
|
144
|
+
raise
|
145
|
+
end
|
133
146
|
end
|
134
147
|
|
135
148
|
def cookbooks
|
@@ -47,7 +47,7 @@ module ServerBackup
|
|
47
47
|
def run
|
48
48
|
ui.warn "This will overwrite existing data!"
|
49
49
|
ui.warn "Backup is at least 1 day old" if (Time.now - File.atime(config[:backup_dir])) > 86400
|
50
|
-
ui.confirm "Do you want to restore backup, possibly overwriting
|
50
|
+
ui.confirm "Do you want to restore backup, possibly overwriting existing data"
|
51
51
|
validate!
|
52
52
|
components = name_args.empty? ? COMPONENTS : name_args
|
53
53
|
Array(components).each { |component| self.send(component) }
|
@@ -123,7 +123,8 @@ module ServerBackup
|
|
123
123
|
rest.post_rest("clients", {
|
124
124
|
:name => client['name'],
|
125
125
|
:public_key => client['public_key'],
|
126
|
-
:admin => client['admin']
|
126
|
+
:admin => client['admin'],
|
127
|
+
:validator => client['validator']
|
127
128
|
})
|
128
129
|
rescue Net::HTTPServerException => e
|
129
130
|
handle_error 'client', client['name'], e
|
@@ -159,12 +160,14 @@ module ServerBackup
|
|
159
160
|
def cookbooks
|
160
161
|
ui.info "=== Restoring cookbooks ==="
|
161
162
|
cookbooks = Dir.glob(File.join(config[:backup_dir], "cookbooks", '*'))
|
162
|
-
|
163
|
+
#Make tmp dir
|
164
|
+
cookbooks.each do |cb|
|
165
|
+
FileUtils.rm_rf(config[:backup_dir] + "/tmp")
|
166
|
+
Dir.mkdir config[:backup_dir] + "/tmp"
|
163
167
|
full_cb = File.expand_path(cb)
|
164
168
|
cb_name = File.basename(cb)
|
165
169
|
cookbook = cb_name.reverse.split('-',2).last.reverse
|
166
|
-
full_path = File.join(
|
167
|
-
|
170
|
+
full_path = File.join(config[:backup_dir] + "/tmp", cookbook)
|
168
171
|
begin
|
169
172
|
File.symlink(full_cb, full_path)
|
170
173
|
cbu = Chef::Knife::CookbookUpload.new
|
@@ -178,6 +181,7 @@ module ServerBackup
|
|
178
181
|
ensure
|
179
182
|
File.unlink(full_path)
|
180
183
|
end
|
184
|
+
FileUtils.rm_rf(config[:backup_dir] + "/tmp")
|
181
185
|
end
|
182
186
|
end
|
183
187
|
|
data/lib/knife-backup/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: knife-backup
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.11
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Marius Ducea
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2015-06-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: chef
|
@@ -61,8 +61,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
61
61
|
version: '0'
|
62
62
|
requirements: []
|
63
63
|
rubyforge_project: knife-backup
|
64
|
-
rubygems_version: 2.
|
64
|
+
rubygems_version: 2.4.4
|
65
65
|
signing_key:
|
66
66
|
specification_version: 4
|
67
67
|
summary: Chef knife plugins to help backup and restore chef servers
|
68
68
|
test_files: []
|
69
|
+
has_rdoc:
|