diff --git a/manifests/certonly.pp b/manifests/certonly.pp index 2fe272e3..b8062b2c 100644 --- a/manifests/certonly.pp +++ b/manifests/certonly.pp @@ -19,7 +19,7 @@ # [*additional_args*] # An array of additional command line arguments to pass to the # `letsencrypt-auto` command. -# [*environment*] +# [*venv_vars*] # An optional array of environment variables (in addition to VENV_PATH). # [*manage_cron*] # Boolean indicating whether or not to schedule cron job for renewal. @@ -36,7 +36,7 @@ $webroot_paths = undef, $letsencrypt_command = $letsencrypt::command, $additional_args = undef, - $environment = [], + $venv_vars = [], $manage_cron = false, $suppress_cron_output = false, $cron_before_command = undef, @@ -53,7 +53,7 @@ if $additional_args { validate_array($additional_args) } - validate_array($environment) + validate_array($venv_vars) validate_bool($manage_cron) validate_bool($suppress_cron_output) @@ -70,9 +70,9 @@ exec { "letsencrypt certonly ${title}": command => $command, path => $::path, - environment => concat([ $venv_path_var ], $environment), + environment => concat([ $venv_path_var ], $venv_vars), creates => $live_path, - require => Class['letsencrypt'], + require => Exec['initialize letsencrypt'], } if $manage_cron { @@ -103,7 +103,7 @@ } cron { "letsencrypt renew cron ${title}": command => "${::letsencrypt::cron_scripts_path}/renew-${title}.sh", - environment => concat([ $venv_path_var ], $environment), + environment => concat([ $venv_path_var ], $venv_vars), user => root, hour => $cron_hour, minute => $cron_minute, diff --git a/manifests/init.pp b/manifests/init.pp index 6ef3a753..895c0e48 100644 --- a/manifests/init.pp +++ b/manifests/init.pp @@ -9,7 +9,7 @@ # precedence over an 'email' setting defined in $config. # [*path*] # The path to the letsencrypt installation. -# [*environment*] +# [*venv_vars*] # An optional array of environment variables (in addition to VENV_PATH) # [*repo*] # A Git URL to install the Let's encrypt client from. @@ -48,12 +48,14 @@ # A flag to allow using the 'register-unsafely-without-email' flag. # [*cron_scripts_path*] # The path to put the script we'll call with cron. Defaults to $puppet_vardir/letsencrypt. +# [*certs*] +# A hash of letsencrypt::certonly certs to be created via create_resources # class letsencrypt ( $email = undef, $path = $letsencrypt::params::path, $venv_path = $letsencrypt::params::venv_path, - $environment = [], + $venv_vars = [], $repo = $letsencrypt::params::repo, $version = $letsencrypt::params::version, $package_name = $letsencrypt::params::package_name, @@ -69,12 +71,13 @@ $install_method = $letsencrypt::params::install_method, $agree_tos = $letsencrypt::params::agree_tos, $unsafe_registration = $letsencrypt::params::unsafe_registration, + $certs = {}, ) inherits letsencrypt::params { validate_string($path, $repo, $version, $config_file, $package_name, $package_command, $cron_scripts_path) if $email { validate_string($email) } - validate_array($environment) + validate_array($venv_vars) validate_bool($manage_config, $manage_install, $manage_dependencies, $configure_epel, $agree_tos, $unsafe_registration) validate_hash($config) validate_re($install_method, ['^package$', '^vcs$']) @@ -103,7 +106,10 @@ exec { 'initialize letsencrypt': command => "${command_init} -h", path => $::path, - environment => concat([ "VENV_PATH=${venv_path}" ], $environment), + environment => concat([ "VENV_PATH=${venv_path}" ], $venv_vars), refreshonly => true, } + + create_resources(::letsencrypt::certonly, $certs) + } diff --git a/manifests/install.pp b/manifests/install.pp index 8f2cf612..a638f54e 100644 --- a/manifests/install.pp +++ b/manifests/install.pp @@ -26,7 +26,7 @@ # method. # [*package_name*] # Name of package to use when installing the client with the `package` -# method. +# method. # class letsencrypt::install ( $manage_install = $letsencrypt::manage_install, diff --git a/spec/classes/letsencrypt_spec.rb b/spec/classes/letsencrypt_spec.rb index c0181bb8..6c37a7d3 100644 --- a/spec/classes/letsencrypt_spec.rb +++ b/spec/classes/letsencrypt_spec.rb @@ -41,7 +41,7 @@ end describe 'with custom environment variables' do - let(:additional_params) { { environment: ['FOO=bar', 'FIZZ=buzz'] } } + let(:additional_params) { { venv_vars: ['FOO=bar', 'FIZZ=buzz'] } } it { is_expected.to contain_exec('initialize letsencrypt').with_environment(['VENV_PATH=/opt/letsencrypt/.venv', 'FOO=bar', 'FIZZ=buzz']) } end diff --git a/spec/defines/letsencrypt_certonly_spec.rb b/spec/defines/letsencrypt_certonly_spec.rb index b5231331..16501bcf 100644 --- a/spec/defines/letsencrypt_certonly_spec.rb +++ b/spec/defines/letsencrypt_certonly_spec.rb @@ -126,14 +126,14 @@ describe 'when specifying custom environment variables' do let(:title) { 'foo.example.com' } - let(:params) { { environment: ['FOO=bar', 'FIZZ=buzz'] } } + let(:params) { { venv_vars: ['FOO=bar', 'FIZZ=buzz'] } } it { is_expected.to contain_exec('letsencrypt certonly foo.example.com').with_environment(['VENV_PATH=/opt/letsencrypt/.venv', 'FOO=bar', 'FIZZ=buzz']) } end context 'with custom environment variables and manage cron' do let(:title) { 'foo.example.com' } - let(:params) { { environment: ['FOO=bar', 'FIZZ=buzz'], manage_cron: true } } + let(:params) { { venv_vars: ['FOO=bar', 'FIZZ=buzz'], manage_cron: true } } it { is_expected.to contain_cron('letsencrypt renew cron foo.example.com').with_environment(['VENV_PATH=/opt/letsencrypt/.venv', 'FOO=bar', 'FIZZ=buzz']) } end