knife-ec-backup 2.5.3 → 3.0.0

Sign up to get free protection for your applications and to get access to all the features.
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