knife-backup 0.0.10 → 0.0.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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:
|