puppetserver-ca 2.0.0 → 2.0.1

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: 6523b5628cc4d83aa2627326400a2fb493a18f28d7e4da4b8046eac41e09c555
4
- data.tar.gz: 6e8cfbeb2a63ad443f22b196d9cdf2749242ef552c6376fd55b723aa699ceefd
3
+ metadata.gz: 33d0c2bbf4e4efae9ed5ee88619f47bfbd850b24b0e7fff02bf7e6a106d40d18
4
+ data.tar.gz: 70542df4956703b70b73ab3aa8e5cb4ef8c007925fb47dc1e2197d762e1a3269
5
5
  SHA512:
6
- metadata.gz: 82c62889b706bad66349d5efd8469969b919d8d90741c57c12827eccdedf2de80597ea923509c66de6d6f317da365d860705d556441ce817167d323ad6e80325
7
- data.tar.gz: 72cca87e22e38e8c6b2b7975d4920057f5364c7a9499bcf30553894b9285468a0cb1d3fd93aace8974a889a0e0a0ed35f348d902139a07d0f588957e61f479f4
6
+ metadata.gz: 399ef8c2fecd89f42db48d848685f61ac9efaffa1039a8e726b4c1b60dda3d82c996c4fff2cec8d315a35bcf5643a46233ae0647a5f79e2f730055e41b404e6f
7
+ data.tar.gz: 342d56b051591b0fbf2211e3f75dd7249ff934f087f1ad2b0005cbdc4dbb0d5d6228e22b248ab22d9a4bb90dd21026daa0ac7fc363937652b5887fe971b29079
data/README.md CHANGED
@@ -79,8 +79,8 @@ To test your changes on a VM:
79
79
  1. Copy the gem to your VM: `scp puppetserver-ca-<version>.gem <your-vm>:.`
80
80
  1. Install puppetserver (FOSS) by installing the relevant release package and then installing the puppetserver package. For example:
81
81
  ```
82
- $ wget http://nightlies.puppet.com/yum/puppet6-nightly-release-el-7.noarch.rpm
83
- $ rpm -i puppet6-nightly-release-el-7.noarch.rpm
82
+ $ wget http://nightlies.puppet.com/yum/puppet-nightly-release-el-7.noarch.rpm
83
+ $ rpm -i puppet-nightly-release-el-7.noarch.rpm
84
84
  $ yum update
85
85
  $ yum install -y puppetserver
86
86
  ```
@@ -45,7 +45,7 @@ BANNER
45
45
  end
46
46
 
47
47
  puppet = Config::Puppet.new(config_path)
48
- puppet.load({}, @logger)
48
+ puppet.load(logger: @logger)
49
49
  settings = puppet.settings
50
50
  return 1 if Errors.handle_with_usage(@logger, puppet.errors)
51
51
 
@@ -126,7 +126,7 @@ BANNER
126
126
  # Load, resolve, and validate puppet config settings
127
127
  settings_overrides = {}
128
128
  puppet = Config::Puppet.new(config_path)
129
- puppet.load(settings_overrides, @logger)
129
+ puppet.load(cli_overrides: settings_overrides, logger: @logger)
130
130
  return 1 if Errors.handle_with_usage(@logger, puppet.errors)
131
131
 
132
132
  # We don't want generate to respect the alt names setting, since it is usually
@@ -56,7 +56,7 @@ BANNER
56
56
  settings_overrides[:dns_alt_names] = input['subject-alt-names'] unless input['subject-alt-names'].empty?
57
57
 
58
58
  puppet = Config::Puppet.new(config_path)
59
- puppet.load(settings_overrides, @logger)
59
+ puppet.load(cli_overrides: settings_overrides, logger: @logger)
60
60
  return 1 if Errors.handle_with_usage(@logger, puppet.errors)
61
61
 
62
62
  # Load most secure signing digest we can for cers/crl/csr signing.
@@ -1,22 +1,23 @@
1
1
  require 'puppetserver/ca/utils/cli_parsing'
2
2
  require 'puppetserver/ca/utils/file_system'
3
3
  require 'puppetserver/ca/utils/http_client'
4
+ require 'puppetserver/ca/utils/config'
4
5
 
5
6
  module Puppetserver
6
7
  module Ca
7
8
  module Action
8
9
  class Migrate
9
10
  include Puppetserver::Ca::Utils
10
- PUPPETSERVER_CA_DIR = '/etc/puppetlabs/puppetserver/ca'
11
+ PUPPETSERVER_CA_DIR = Puppetserver::Ca::Utils::Config.new_default_cadir
11
12
 
12
- SUMMARY = "Migrate the existing CA directory to /etc/puppetlabs/puppetserver/ca"
13
+ SUMMARY = "Migrate the existing CA directory to #{PUPPETSERVER_CA_DIR}"
13
14
  BANNER = <<-BANNER
14
15
  Usage:
15
16
  puppetserver ca migrate [--help]
16
17
  puppetserver ca migrate [--config PATH]
17
18
 
18
19
  Description:
19
- Migrate an existing CA directory to /etc/puppetlabs/puppetserver/ca. This is for
20
+ Migrate an existing CA directory to #{PUPPETSERVER_CA_DIR}. This is for
20
21
  upgrading from Puppet Platform 6.x to Puppet 7. Use the currently configured
21
22
  puppet.conf file in your installation, or supply one using the `--config` flag.
22
23
  Options:
@@ -29,7 +30,7 @@ BANNER
29
30
  def run(input)
30
31
  config_path = input['config']
31
32
  puppet = Config::Puppet.new(config_path)
32
- puppet.load({}, @logger)
33
+ puppet.load(logger: @logger, ca_dir_warn: false)
33
34
  return 1 if HttpClient.check_server_online(puppet.settings, @logger)
34
35
 
35
36
  errors = FileSystem.check_for_existing_files(PUPPETSERVER_CA_DIR)
@@ -65,7 +66,7 @@ SUCCESS_MESSAGE
65
66
 
66
67
  def migrate(old_cadir, new_cadir=PUPPETSERVER_CA_DIR)
67
68
  FileUtils.mv(old_cadir, new_cadir)
68
- FileUtils.symlink(new_cadir, old_cadir)
69
+ FileSystem.forcibly_symlink(new_cadir, old_cadir)
69
70
  end
70
71
 
71
72
  def parse(args)
@@ -56,7 +56,7 @@ BANNER
56
56
  settings_overrides[:dns_alt_names] = input['subject-alt-names'] unless input['subject-alt-names'].empty?
57
57
 
58
58
  puppet = Config::Puppet.new(config_path)
59
- puppet.load(settings_overrides, @logger)
59
+ puppet.load(cli_overrides: settings_overrides, logger: @logger)
60
60
  return 1 if Errors.handle_with_usage(@logger, puppet.errors)
61
61
 
62
62
  # Load most secure signing digest we can for cers/crl/csr signing.
@@ -25,7 +25,7 @@ module Puppetserver
25
25
 
26
26
  def self.parse(config_path, logger)
27
27
  instance = new(config_path)
28
- instance.load({}, logger)
28
+ instance.load(logger: logger)
29
29
 
30
30
  return instance
31
31
  end
@@ -54,20 +54,23 @@ module Puppetserver
54
54
  user_specific_puppet_confdir + '/puppet.conf'
55
55
  end
56
56
 
57
- def load(cli_overrides = {}, logger)
57
+ def load(cli_overrides: {}, logger:, ca_dir_warn: true)
58
58
  if explicitly_given_config_file_or_default_config_exists?
59
59
  results = parse_text(File.read(@config_path))
60
60
  end
61
61
 
62
62
  results ||= {}
63
63
  results[:main] ||= {}
64
+ # The [master] config section is deprecated
65
+ # We now favor [server], but support both for backwards compatibility
64
66
  results[:master] ||= {}
67
+ results[:server] ||= {}
65
68
  results[:agent] ||= {}
66
69
 
67
- overrides = results[:agent].merge(results[:main]).merge(results[:master])
70
+ overrides = results[:agent].merge(results[:main]).merge(results[:master]).merge(results[:server])
68
71
  overrides.merge!(cli_overrides)
69
72
 
70
- @settings = resolve_settings(overrides, logger).freeze
73
+ @settings = resolve_settings(overrides, logger, ca_dir_warn: ca_dir_warn).freeze
71
74
  end
72
75
 
73
76
  def default_certname
@@ -84,7 +87,7 @@ module Puppetserver
84
87
 
85
88
  # Resolve settings from default values, with any overrides for the
86
89
  # specific settings or their dependent settings (ssldir, cadir) taken into account.
87
- def resolve_settings(overrides = {}, logger)
90
+ def resolve_settings(overrides = {}, logger, ca_dir_warn: true)
88
91
  unresolved_setting = /\$[a-z_]+/
89
92
 
90
93
  # Returning the key for unknown keys (rather than nil) is required to
@@ -145,7 +148,8 @@ module Puppetserver
145
148
  cadir = find_cadir(overrides.fetch(:cadir, false),
146
149
  settings[:confdir],
147
150
  settings[:ssldir],
148
- logger)
151
+ logger,
152
+ ca_dir_warn)
149
153
  settings[:cadir] = substitutions['$cadir'] = cadir
150
154
 
151
155
 
@@ -212,7 +216,7 @@ module Puppetserver
212
216
  private
213
217
 
214
218
 
215
- def find_cadir(configured_cadir, confdir, ssldir, logger)
219
+ def find_cadir(configured_cadir, confdir, ssldir, logger, ca_dir_warn)
216
220
  warning = 'The cadir is currently configured to be inside the ' +
217
221
  '%{ssldir} directory. This config setting and the directory ' +
218
222
  'location will not be used in a future version of puppet. ' +
@@ -221,7 +225,7 @@ module Puppetserver
221
225
  'Use `puppetserver ca migrate --help` for more info.'
222
226
 
223
227
  if configured_cadir
224
- if configured_cadir.start_with?(ssldir)
228
+ if ca_dir_warn && configured_cadir.start_with?(ssldir)
225
229
  logger.warn(warning % {ssldir: ssldir})
226
230
  end
227
231
  configured_cadir
@@ -230,7 +234,7 @@ module Puppetserver
230
234
  old_cadir = Puppetserver::Ca::Utils::Config.old_default_cadir(confdir)
231
235
  new_cadir = Puppetserver::Ca::Utils::Config.new_default_cadir(confdir)
232
236
  if File.exist?(old_cadir) && !File.symlink?(old_cadir)
233
- logger.warn(warning % {ssldir: ssldir})
237
+ logger.warn(warning % {ssldir: ssldir}) if ca_dir_warn
234
238
  old_cadir
235
239
  else
236
240
  new_cadir
@@ -53,6 +53,14 @@ module Puppetserver
53
53
  def self.forcibly_symlink(source, link_target)
54
54
  FileUtils.remove_dir(link_target, true)
55
55
  FileUtils.symlink(source, link_target)
56
+ # Ensure the symlink has the same ownership as the source.
57
+ # This requires using `FileUtils.chown` rather than `File.chown`, as
58
+ # the latter will update the ownership of the source rather than the
59
+ # link itself.
60
+ # Symlink permissions are ignored in favor of the source's permissions,
61
+ # so we don't have to change those.
62
+ source_info = File.stat(source)
63
+ FileUtils.chown(source_info.uid, source_info.gid, link_target)
56
64
  end
57
65
 
58
66
  def initialize
@@ -174,7 +174,7 @@ module Puppetserver
174
174
  self.new(settings, with_client_cert: false).with_connection(status_url) do |conn|
175
175
  result = conn.get
176
176
  if result.body == "running"
177
- logger.err "CA service is running. Please stop it before attempting to run this command."
177
+ logger.err "Puppetserver service is running. Please stop it before attempting to run this command."
178
178
  true
179
179
  else
180
180
  false
@@ -1,5 +1,5 @@
1
1
  module Puppetserver
2
2
  module Ca
3
- VERSION = "2.0.0"
3
+ VERSION = "2.0.1"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: puppetserver-ca
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.0
4
+ version: 2.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Puppet, Inc.
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-11-05 00:00:00.000000000 Z
11
+ date: 2020-12-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: facter