diff --git a/README.md b/README.md index 2646d88..e1a9a1c 100644 --- a/README.md +++ b/README.md @@ -92,6 +92,15 @@ class {'chocolatey_server': } ~~~ +### Set a different apikey and allow packages to be overwritten + +~~~puppet +class { 'chocolatey_server': + apikey => 'Sup3rS3cret', + allow_package_override => true, +} +~~~ + ### Use a alternate package folder and port without disabling default website ~~~puppet @@ -126,6 +135,14 @@ Host your own Chocolatey package repository #### Parameters +##### `allow_package_override` +Controls whether or not packages can be overwritten if a package with the same +id and version already exist. Defaults to 'false'. + +##### `apikey` +Set the apikey for chocolatey server used to push packages. Defaults to +'chocolateyrocks'. + ##### `chocolatey_server_app_pool_name` Set apppool name used by the chocolatey.server website. Defaults to 'chocolatey.server'. @@ -153,6 +170,10 @@ The permissions should be passed as an array of identity and permissions. ##### `port` The port for the server website. Defaults to '80'. +##### `require_apikey` +Controls whether or not an apikey is required to push packages to the chocolatey +server. Defaults to 'true'. + ##### `server_package_source` The Chocolatey source that contains the `chocolatey.server` package. Defaults to 'https://chocolatey.org/api/v2/'. diff --git a/examples/init.pp b/examples/init.pp index 3eb1c81..8d1a5c9 100644 --- a/examples/init.pp +++ b/examples/init.pp @@ -1,6 +1,7 @@ -# setting up a chocolatey server on port 8080 with an alternate packages folder -# without disabling the default web site +# setting up a chocolatey server with a new apikey on port 8080 with an +# alternate packages folder without disabling the default web site class { 'chocolatey_server': + apikey => 'changeme', disable_default_website => false, packages_folder => 'C:\Chocolatey', port => '8080', diff --git a/manifests/init.pp b/manifests/init.pp index f6ef856..39bb495 100644 --- a/manifests/init.pp +++ b/manifests/init.pp @@ -32,11 +32,14 @@ # means. e.g. environment variable ChocolateyBinRoot. Defaults to # 'C:\tools\chocolatey.server' class chocolatey_server ( + $allow_package_override = $::chocolatey_server::params::allow_package_override, + $apikey = $::chocolatey_server::params::apikey, $chocolatey_server_app_pool_name = $::chocolatey_server::params::chocolatey_server_app_pool_name, $disable_default_website = $::chocolatey_server::params::disable_default_website, $packages_folder = $::chocolatey_server::params::packages_folder, $packages_folder_permissions = $::chocolatey_server::params::packages_folder_permissions, $port = $::chocolatey_server::params::service_port, + $require_apikey = $::chocolatey_server::params::require_apikey, $server_package_source = $::chocolatey_server::params::server_package_source, $server_install_location = $::chocolatey_server::params::server_install_location, ) inherits ::chocolatey_server::params { @@ -100,6 +103,16 @@ require => Iis::Manage_app_pool["${_chocolatey_server_app_pool_name}"], } + # configure chocolatey server settings + file { "${_chocolatey_server_location}/web.config": + ensure => file, + content => epp('chocolatey_server/web.config.epp', { + 'allowOverrideExistingPackageOnPush' => $allow_package_override, + 'apiKey' => $apikey, + 'requireApiKey' => $require_apikey, + }), + } + # only set permissions if an alternate package folder is undefined unless $packages_folder { # ensure app_data folder is created diff --git a/manifests/params.pp b/manifests/params.pp index 1becbba..4df3690 100644 --- a/manifests/params.pp +++ b/manifests/params.pp @@ -5,6 +5,8 @@ class chocolatey_server::params { case $::osfamily { 'windows': { + $allow_package_override = false + $apikey = 'chocolateyrocks' $chocolatey_server_app_pool_name = 'chocolatey.server' $disable_default_website = true $packages_folder = undef @@ -12,6 +14,7 @@ { identity => "IIS APPPOOL\\${chocolatey_server_app_pool_name}", rights => ['modify'] }, { identity => 'IIS_IUSRS', rights => ['modify'] } ] + $require_apikey = true $service_port = '80' $server_package_source = 'https://chocolatey.org/api/v2/' $server_install_location = 'C:\tools\chocolatey.server' diff --git a/templates/web.config.epp b/templates/web.config.epp new file mode 100644 index 0000000..e84b3e9 --- /dev/null +++ b/templates/web.config.epp @@ -0,0 +1,103 @@ +<%- | Boolean $allowOverrideExistingPackageOnPush, String $apiKey, Boolean $requireApiKey | -%> + + + + + +
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +