Skip to content

Commit 1ccd6e6

Browse files
committed
add possibility to manage permissions for x509_cert
1 parent 6c3df1d commit 1ccd6e6

File tree

3 files changed

+49
-1
lines changed

3 files changed

+49
-1
lines changed

lib/puppet/provider/x509_cert/openssl.rb

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,11 @@
11
# frozen_string_literal: true
22

33
require 'pathname'
4-
Puppet::Type.type(:x509_cert).provide(:openssl) do
4+
require File.join(File.dirname(__FILE__), '..', '..', '..', 'puppet/provider/openssl')
5+
Puppet::Type.type(:x509_cert).provide(
6+
:openssl,
7+
parent: Puppet::Provider::Openssl,
8+
) do
59
desc 'Manages certificates with OpenSSL'
610

711
commands openssl: 'openssl'
@@ -103,6 +107,7 @@ def create
103107
# openssl(options) doesn't work because it's impossible to pass an env
104108
# https://github.com/puppetlabs/puppet/issues/9493
105109
execute([command('openssl')] + options, { failonfail: true, combine: true, custom_environment: env })
110+
set_file_perm(resource[:path], resource[:owner], resource[:group], resource[:mode])
106111
end
107112

108113
def destroy

lib/puppet/type/x509_cert.rb

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,33 @@
7676
desc 'The optional CA key password'
7777
end
7878

79+
newproperty(:owner) do
80+
desc 'owner of the file'
81+
validate do |value|
82+
unless value =~ %r{^\w+}
83+
raise ArgumentError, '%s is not a valid user name' % value
84+
end
85+
end
86+
end
87+
88+
newproperty(:group) do
89+
desc 'group of the file'
90+
validate do |value|
91+
unless value =~ %r{^\w+}
92+
raise ArgumentError, '%s is not a valid group name' % value
93+
end
94+
end
95+
end
96+
97+
newproperty(:mode) do
98+
desc 'mode of the file'
99+
validate do |value|
100+
unless value =~ %r{^0\d\d\d$}
101+
raise ArgumentError, '%s is not a valid file mode' % value
102+
end
103+
end
104+
end
105+
79106
autorequire(:file) do
80107
self[:template]
81108
end

spec/unit/puppet/type/x509_cert_spec.rb

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,4 +69,20 @@
6969
resource[:csr] = '/tmp/foo.csr'
7070
expect(resource[:csr]).to eq('/tmp/foo.csr')
7171
end
72+
73+
it 'accepts mode' do
74+
resource[:mode] = '0700'
75+
expect(resource[:mode]).to eq('0700')
76+
end
77+
78+
it 'accepts owner' do
79+
resource[:owner] = 'someone'
80+
expect(resource[:owner]).to eq('someone')
81+
end
82+
83+
it 'accepts group' do
84+
resource[:group] = 'party'
85+
expect(resource[:group]).to eq('party')
86+
end
87+
7288
end

0 commit comments

Comments
 (0)