knife-ec-backup 2.5.3 → 3.0.0

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 04d60d691882443cee81667126f9f681d74a57bec9c1aa6891d0ea24d23c0825
4
- data.tar.gz: 3839aaf3e1266642987da3a8047939bcbf249e4f35e8f637068ac9f228a9ad01
3
+ metadata.gz: 29f71b880bfbb21dba4529c4a03f9966d208a7f39c478613d3e38d1130ca5c06
4
+ data.tar.gz: 6196ae8cc2a56309310c5c25d7392dd3a1dfd7367a9d0994639998aa42f48422
5
5
  SHA512:
6
- metadata.gz: 3d76b279ecd5178017431e5c0bfad401b40a080ace47b764d70697c426b04ce808b92380d26ab94f5473f743f71e3c16b080a920c2d6acdbffb10f0dcf555ecb
7
- data.tar.gz: 85876db29caeb5531803fc902ff8ca185b52fb65ac5b3909e591fda18c0af43a483f7cc1d16919ff34978df372254900e78fce3f66e670f65a5125e2c7513cbc
6
+ metadata.gz: edb3a2500bb5c15b5a9c2b786152e2677f495e1996492411584a7fd3d91bf4d60b89e834a0fccf58388f7013f94a73c8ebf8c52df52c884530a2f62782aa9a6e
7
+ data.tar.gz: 43b2cb7433041e8f1d7654147205c5d769f582de6e40b3f5f482cda0a7b3b4b712c19ed7f05e1bcf55f6de184297e150f833f9621cd0f82d050a3b1bea049687
data/README.md CHANGED
@@ -12,12 +12,12 @@
12
12
 
13
13
  ## Description
14
14
 
15
- knife-ec-backup can backup and restore the data in an Enterprise Chef
15
+ knife-ec-backup can backup and restore the data in a Chef Infra
16
16
  Server installation, preserving the data in an intermediate, editable
17
17
  text format. It is similar to the `knife download` and `knife upload`
18
18
  commands and uses the same underlying libraries, but also includes
19
19
  workarounds for objects not yet supported by those tools and various
20
- Server API deficiencies. The long-run goal is to improve `knife
20
+ Infra Server API deficiencies. The long-run goal is to improve `knife
21
21
  download`, `knife upload` and the Chef Infra Server API and deprecate this
22
22
  tool.
23
23
 
@@ -27,7 +27,7 @@ This knife plugin requires Chef Infra Client 11.8+.
27
27
 
28
28
  ### Server Support
29
29
 
30
- This plugin currently supports Enterprise Chef 11 and Chef Infra Server 12+.
30
+ This plugin currently supports Chef Infra Server 12+.
31
31
  Support for the beta key rotation features is provided via the
32
32
  `--with-keys-sql` flag, but users of this feature should note that
33
33
  this may change once the Chef Infra Server supports an API-based export of
@@ -37,28 +37,17 @@ the key data.
37
37
 
38
38
  ### Chef Infra Server Install (Recommended)
39
39
 
40
- This gem is installed with chef-server-core 12.0.0 and newer.
41
-
42
- For Private Chef 11 (or Enterprise Chef 11) you'll need to download and build
43
- locally to get the correct dependencies, either with `git clone` or by
44
- downloading the .zip file. Once unpacked, run:
40
+ This gem is installed with Chef Infra Server 12 and later and the sub-commands are available with embedded copy of `knife`, e.g.:
45
41
 
46
42
  ```
47
- /opt/opscode/embedded/bin/gem build knife-ec-backup.gemspec
48
- /opt/opscode/embedded/bin/gem install knife-ec-backup*gem --no-ri --no-rdoc -V
43
+ sudo /opt/opscode/bin/knife ec backup ~/chef-server-backup-directory
49
44
  ```
50
45
 
51
- #### Note on installing with existing development tools:
52
-
53
- The latest versions of knife-ec-backup require gems with native
54
- extensions, thus you must install a standard build toolchain. To
55
- install knife-ec-backup without installing libpq development headers
56
- on your system, try the following:
46
+ If you need a newer version of `knife-ec-backup` than is on the server you wish to back up, you can install it using the embedded `gem` command.
57
47
 
58
- /opt/opscode/embedded/bin/gem install knife-ec-backup -- --with-pg-config=/opt/opscode/embedded/postgresql/9.2/bin/pg_config
59
-
60
- This uses the libpq headers that are included in the Chef Infra Server
61
- package installed in `/opt/opscode`.
48
+ ```
49
+ /opt/opscode/embedded/bin/gem install knife-ec-backup --no-doc
50
+ ```
62
51
 
63
52
  ### Chef Workstation Install (Unsupported)
64
53
 
@@ -101,9 +90,9 @@ Clone the git repository and run the following from inside:
101
90
 
102
91
  ### Permissions
103
92
 
104
- Note that most users in an EC installation lack the permissions to pull all of the data from all organizations and other users.
93
+ Note that most users in a Chef Infra Server installation lack the permissions to pull all of the data from all organizations and other users.
105
94
  This plugin **REQUIRES THE PIVOTAL KEY AND WEBUI KEY** from the Chef Infra Server.
106
- It is recommended that you run this from a frontend Enterprise Chef Infra Server, you can use --user and --key to pass the pivotal information along.
95
+ It is recommended that you run this from a frontend Chef Infra Server. You can use `--user pivotal --key /path/to/pivotal.pem` to provide a path to the `pivotal` key.
107
96
 
108
97
  ## Subcommands
109
98
 
@@ -137,7 +126,7 @@ The following options are supported across all subcommands:
137
126
 
138
127
  ### knife ec backup DEST_DIR (options)
139
128
 
140
- *Path*: If you have chef-client installed as well, you may need to invoke this as `/opt/opscode/embedded/bin/knife ec backup backup`
129
+ *Path*: If you have Chef Infra Client installed on this server, you may need to invoke this as `/opt/opscode/bin/knife ec backup BACKUP_DIRECTORY`
141
130
 
142
131
  *Options*
143
132
 
@@ -175,7 +164,7 @@ The following options are supported across all subcommands:
175
164
  Only donwload/restore objects in the named organization. Global
176
165
  objects such as users will still be downloaded/restored.
177
166
 
178
- Creates a repository of an entire Enterprise Chef / Private Chef server.
167
+ Creates a repository of an entire Chef Infra Server
179
168
 
180
169
  The format of the repository is based on the `knife-essentials` (`knife download`) format and looks like this:
181
170
 
@@ -229,8 +218,7 @@ This compares very closely with the "knife download /" from an OSC server:
229
218
 
230
219
  ### knife ec restore DEST_DIR (options)
231
220
 
232
- Restores all data from the specified DEST_DIR to an Enterprise Chef /
233
- Private Chef server. DEST_DIR should be a backup directory created by
221
+ Restores all data from the specified DEST_DIR to a Chef Infra Server. DEST_DIR should be a backup directory created by
234
222
  `knife ec backup`
235
223
 
236
224
  *Options*
@@ -299,26 +287,13 @@ Import a json representation of the users table from FILENAME to the
299
287
  the Chef Infra Server database. If no argument is given, the filename is
300
288
  assumed to be `key_dump.json`.
301
289
 
302
- Please note, most user should use `knife ec restore` with the
290
+ Please note, most users should use `knife ec restore` with the
303
291
  `--with-user-sql` option rather than this command.
304
292
 
305
293
  ## Known Bugs
306
294
 
307
- - knife-ec-backup cannot be installed in the embedded gemset of Chef
308
- Server 12. This will be resolved in a future Chef Infra Server release.
309
-
310
295
  - `knife ec restore` can fail to restore cookbooks, failing with an
311
296
  internal server error. A common cause of this problem is a
312
297
  concurrency bug in Chef Infra Server. Setting `--concurrency 1` can often
313
298
  work around the issue.
314
299
 
315
- - `knife ec restore` can fail if the pool of pre-created organizations
316
- can not keep up with the newly created organizations. This can
317
- typically be resolved simply be restarting the restore. To avoid
318
- this error for backups with large number of organizations, try
319
- setting (in /etc/opscode/private-chef.rb):
320
-
321
- opscode_org_creator['ready_org_depth']
322
-
323
- to the number of organizations in your backup and waiting for the
324
- pool to fill before running `knife ec restore`
@@ -34,7 +34,7 @@ class Chef
34
34
  for_each_user do |username, url|
35
35
  download_user(username, url)
36
36
  if config[:skip_useracl]
37
- ui.warn("Skipping user ACL download for #{username}. To download this ACL, remove --skip-useracl or upgrade your Enterprise Chef Server.")
37
+ ui.warn("Skipping user ACL download for #{username}. To download this ACL, remove --skip-useracl.")
38
38
  else
39
39
  download_user_acl(username)
40
40
  end
@@ -196,13 +196,6 @@ class Chef
196
196
  # Download the billing-admins, public_key_read_access ACL and group as pivotal
197
197
  chef_fs_config = Chef::ChefFS::Config.new
198
198
 
199
- paths = ['/acls/groups/billing-admins.json', '/groups/billing-admins.json', '/groups/admins.json']
200
- paths.push('/acls/groups/public_key_read_access.json', '/groups/public_key_read_access.json') if server.supports_public_key_read_access?
201
-
202
- paths.each do |path|
203
- chef_fs_copy_pattern(path, chef_fs_config)
204
- end
205
-
206
199
  Chef::Config.node_name = if config[:skip_version]
207
200
  org_admin
208
201
  else
@@ -210,7 +203,7 @@ class Chef
210
203
  end
211
204
 
212
205
  chef_fs_config = Chef::ChefFS::Config.new
213
- top_level_paths = chef_fs_config.chef_fs.children.select { |entry| entry.name != 'acls' && entry.name != 'groups' }.map { |entry| entry.path }
206
+ top_level_paths = chef_fs_config.chef_fs.children.map { |entry| entry.path }
214
207
 
215
208
  # The top level acl object names end with .json extension
216
209
  # Therefore we can use Chef::ChefFS::FilePattern matching for items
@@ -220,13 +213,7 @@ class Chef
220
213
  # therefore we use normalize_path_name to add the .json extension
221
214
  # for example: /acls/environments/_default
222
215
 
223
- # Skip the billing-admins, public_key_read_access group ACLs and the groups since they've already been copied
224
- exclude_list = ['billing-admins', 'public_key_read_access']
225
-
226
- top_level_acls = chef_fs_paths('/acls/*.json', chef_fs_config, [])
227
- acl_paths = chef_fs_paths('/acls/*/*', chef_fs_config, exclude_list)
228
- group_paths = chef_fs_paths('/groups/*', chef_fs_config, exclude_list)
229
- (top_level_paths + top_level_acls + acl_paths + group_paths).each do |path|
216
+ top_level_paths.each do |path|
230
217
  chef_fs_copy_pattern(path, chef_fs_config)
231
218
  end
232
219
  ensure
@@ -59,7 +59,7 @@ class Chef
59
59
  :long => '--skip-version-check',
60
60
  :boolean => true,
61
61
  :default => false,
62
- :description => "Skip Chef Server version check. This will also skip any auto-configured options"
62
+ :description => "Skip Chef Infra Server version check. This will also skip any auto-configured options"
63
63
 
64
64
  option :org,
65
65
  :long => "--only-org ORG",
@@ -67,17 +67,17 @@ class Chef
67
67
 
68
68
  option :sql_host,
69
69
  :long => '--sql-host HOSTNAME',
70
- :description => 'Postgresql database hostname (default: localhost)',
70
+ :description => 'PostgreSQL database hostname (default: localhost)',
71
71
  :default => "localhost"
72
72
 
73
73
  option :sql_port,
74
74
  :long => '--sql-port PORT',
75
- :description => 'Postgresql database port (default: 5432)',
75
+ :description => 'PostgreSQL database port (default: 5432)',
76
76
  :default => 5432
77
77
 
78
78
  option :sql_db,
79
79
  :long => '--sql-db DBNAME',
80
- :description => 'Postgresql Chef Server database name (default: opscode_chef or automate-cs-oc-erchef)'
80
+ :description => 'PostgreSQL Chef Infra Server database name (default: opscode_chef or automate-cs-oc-erchef)'
81
81
 
82
82
  option :sql_user,
83
83
  :long => "--sql-user USERNAME",
@@ -34,17 +34,17 @@ class Chef
34
34
 
35
35
  option :sql_host,
36
36
  :long => '--sql-host HOSTNAME',
37
- :description => 'Postgresql database hostname (default: localhost)',
37
+ :description => 'PostgreSQL database hostname (default: localhost)',
38
38
  :default => "localhost"
39
39
 
40
40
  option :sql_port,
41
41
  :long => '--sql-port PORT',
42
- :description => 'Postgresql database port (default: 5432)',
42
+ :description => 'PostgreSQL database port (default: 5432)',
43
43
  :default => 5432
44
44
 
45
45
  option :sql_db,
46
46
  :long => '--sql-db DBNAME',
47
- :description => 'Postgresql Chef Server database name (default: opscode_chef or automate-cs-oc-erchef)'
47
+ :description => 'PostgreSQL Chef Infra Server database name (default: opscode_chef or automate-cs-oc-erchef)'
48
48
 
49
49
  option :sql_user,
50
50
  :long => "--sql-user USERNAME",
@@ -114,7 +114,7 @@ class Chef
114
114
  exit 1
115
115
  else
116
116
  running_config ||= JSON.parse(File.read("/etc/opscode/chef-server-running.json"))
117
- # Latest versions of chef server put the database info under opscode-erchef.sql_user
117
+ # Latest versions of Chef Infra Server put the database info under opscode-erchef.sql_user
118
118
  hash_key = if running_config['private_chef']['opscode-erchef'].has_key? 'sql_user'
119
119
  'opscode-erchef'
120
120
  else
@@ -43,8 +43,8 @@ class Chef
43
43
  export_keys(key_data_path) unless config[:skip_keys_table]
44
44
  rescue Sequel::DatabaseError => e
45
45
  if e.message =~ /^PG::UndefinedTable/
46
- ui.error "Keys table not found. The keys table only exists on Chef Server 12."
47
- ui.error "Chef Server 11 users should use the --skip-keys-table option to avoid this error."
46
+ ui.error "Keys table not found. The keys table only exists on Chef Infra Server 12."
47
+ ui.error "Chef Infra Server 11 users should use the --skip-keys-table option to avoid this error."
48
48
  exit 1
49
49
  else
50
50
  raise
@@ -65,7 +65,7 @@ class Chef
65
65
  restore_key_sql if config[:with_key_sql]
66
66
 
67
67
  if config[:skip_useracl]
68
- ui.warn("Skipping user ACL update. To update user ACLs, remove --skip-useracl or upgrade your Enterprise Chef Server.")
68
+ ui.warn("Skipping user ACL update. To update user ACLs, remove --skip-useracl.")
69
69
  else
70
70
  restore_user_acls
71
71
  end
@@ -292,7 +292,7 @@ class Chef
292
292
  # Store organization data in a particular order:
293
293
  # - clients must be uploaded before groups (in top_level_paths)
294
294
  # - groups must be uploaded before any acl's
295
- # - groups must be uploaded twice to account for Chef Server versions that don't
295
+ # - groups must be uploaded twice to account for Chef Infra Server versions that don't
296
296
  # accept group members on POST
297
297
  (top_level_paths + group_paths*2 + group_acl_paths + acl_paths).each do |path|
298
298
  chef_fs_copy_pattern(path, chef_fs_config)
@@ -309,7 +309,7 @@ class Chef
309
309
  end
310
310
 
311
311
  # ChefFS copy pattern inside the EcRestore class will
312
- # copy from the local_fs to the Chef Server.
312
+ # copy from the local_fs to the Chef Infra Server.
313
313
  #
314
314
  # NOTE: Do not get confused, this is the other way around
315
315
  # from how we implemented in EcBackup. Therefor we can't
@@ -1,4 +1,4 @@
1
1
  # when you change this to double quotes, also update .expeditor/update_version.sh
2
2
  module KnifeECBackup
3
- VERSION = '2.5.3'
3
+ VERSION = '3.0.0'
4
4
  end
@@ -72,7 +72,7 @@ describe Chef::Knife::EcBackup do
72
72
  expect{ |b| @knife.for_each_organization(&b) }.to yield_successive_args(org_response("bar"), org_response("foo"))
73
73
  end
74
74
 
75
- it "skips unassigned (precreated) organizations on Chef Server 11" do
75
+ it "skips unassigned (precreated) organizations on Chef Infra Server 11" do
76
76
  server = double('Chef::Server')
77
77
  allow(Chef::Server).to receive(:new).and_return(server)
78
78
  allow(server).to receive(:version).and_return(Gem::Version.new("11.12.3"))
@@ -81,7 +81,7 @@ describe Chef::Knife::EcBackup do
81
81
  expect{ |b| @knife.for_each_organization(&b) }.to yield_successive_args(org_response("bar"))
82
82
  end
83
83
 
84
- it "includes *all* organizations on Chef Server 12" do
84
+ it "includes *all* organizations on Chef Infra Server 12" do
85
85
  server = double('Chef::Server')
86
86
  allow(Chef::Server).to receive(:new).and_return(server)
87
87
  allow(server).to receive(:version).and_return(Gem::Version.new("12.0.0"))
@@ -9,7 +9,7 @@ describe Chef::Server do
9
9
  allow(Chef::ServerAPI).to receive(:new).and_return(@rest)
10
10
  end
11
11
 
12
- it "infers root url from a Chef Server url" do
12
+ it "infers root url from a Chef Infra Server url" do
13
13
  s = Chef::Server.from_chef_server_url("http://api.example.com/organizations/foobar")
14
14
  expect(s.root_url).to eq("http://api.example.com")
15
15
  end
@@ -28,22 +28,22 @@ describe Chef::Server do
28
28
 
29
29
  it "determines the running omnibus server version" do
30
30
  s = Chef::Server.new('http://api.example.com')
31
- allow(@rest).to receive(:get).with("version").and_return(StringIO.new("Chef Server 1.8.1\nother stuff\nother stuff"))
31
+ allow(@rest).to receive(:get).with("version").and_return(StringIO.new("Chef Infra Server 1.8.1\nother stuff\nother stuff"))
32
32
  expect(s.version.to_s).to eq('1.8.1')
33
33
  end
34
34
 
35
35
  it "ignores git tags when determining the version" do
36
36
  s = Chef::Server.new("http://api.example.com")
37
- allow(@rest).to receive(:get).with("version").and_return(StringIO.new("Chef Server 1.8.1+20141024080718.git.16.08098a5\nother stuff\nother stuff"))
37
+ allow(@rest).to receive(:get).with("version").and_return(StringIO.new("Chef Infra Server 1.8.1+20141024080718.git.16.08098a5\nother stuff\nother stuff"))
38
38
  expect(s.version.to_s).to eq("1.8.1")
39
39
  end
40
40
 
41
41
  it "knows whether the server supports user ACLs via nginx" do
42
42
  s1 = Chef::Server.new("http://api.example.com")
43
- allow(@rest).to receive(:get).with("version").and_return(StringIO.new("Chef Server 11.0.0\nother stuff\nother stuff"))
43
+ allow(@rest).to receive(:get).with("version").and_return(StringIO.new("Chef Infra Server 11.0.0\nother stuff\nother stuff"))
44
44
  expect(s1.supports_user_acls?).to eq(false)
45
45
  s2 = Chef::Server.new("http://api.example.com")
46
- allow(@rest).to receive(:get).with("version").and_return(StringIO.new("Chef Server 11.0.2\nother stuff\nother stuff"))
46
+ allow(@rest).to receive(:get).with("version").and_return(StringIO.new("Chef Infra Server 11.0.2\nother stuff\nother stuff"))
47
47
  expect(s2.supports_user_acls?).to eq(true)
48
48
  end
49
49
 
@@ -61,10 +61,10 @@ describe Chef::Server do
61
61
 
62
62
  it "knows that public_key_read_access was implemented in 12.5.0" do
63
63
  before = Chef::Server.new("http://api.example.com")
64
- allow(@rest).to receive(:get).with("version").and_return(StringIO.new("Chef Server 12.4.1\nother stuff\nother stuff"))
64
+ allow(@rest).to receive(:get).with("version").and_return(StringIO.new("Chef Infra Server 12.4.1\nother stuff\nother stuff"))
65
65
  expect(before.supports_public_key_read_access?).to eq(false)
66
66
  after = Chef::Server.new("http://api.example.com")
67
- allow(@rest).to receive(:get).with("version").and_return(StringIO.new("Chef Server 12.6.0\nother stuff\nother stuff"))
67
+ allow(@rest).to receive(:get).with("version").and_return(StringIO.new("Chef Infra Server 12.6.0\nother stuff\nother stuff"))
68
68
  expect(after.supports_public_key_read_access?).to eq(true)
69
69
  end
70
70
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: knife-ec-backup
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.5.3
4
+ version: 3.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - John Keiser
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-10-12 00:00:00.000000000 Z
11
+ date: 2022-01-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: sequel