From 89d89683e3af408d99a86c349e6da27daace5d6e Mon Sep 17 00:00:00 2001 From: Isaac Beckman Date: Thu, 31 Dec 2015 15:07:40 +0200 Subject: [PATCH] Customize jenkins.default by template Turn jenkins.default to a template. This enables to customize it easily. This is useful for downstream projects where it is needed to tune jenkins.default parameters. Either Pass the required parameter to jenkins class or pass a customized jenkins.default file location in jenkins_default. For backward compatibility, default values are set in the class parameters list. Change-Id: Ice0e4ffa2fffd041d8bcc4a0b323ffae7ba2b0c8 --- manifests/master.pp | 43 ++++++++++++++++--- .../jenkins.default.erb | 10 +++-- 2 files changed, 43 insertions(+), 10 deletions(-) rename files/jenkins.default => templates/jenkins.default.erb (91%) diff --git a/manifests/master.pp b/manifests/master.pp index 3a9d22d..b5f0ef1 100644 --- a/manifests/master.pp +++ b/manifests/master.pp @@ -1,5 +1,15 @@ # == Class: jenkins::master # +# This class will install and configure Jenkins master +# +# === Parameters +# +# [*jenkins_default*] +# (Optional) Puppet source from which to initialize /etc/defaults/jenkins. +# E.g. 'puppet:///modules/ 'apt-get update', } - file { '/etc/default/jenkins': - ensure => present, - owner => 'root', - group => 'root', - mode => '0644', - source => $jenkins_default, + # Template uses: + # - $java_args_override + # - $run_standalone + # - $max_open_files + # - $http_port + if ! $jenkins_default { + file { '/etc/default/jenkins': + ensure => present, + owner => 'root', + group => 'root', + mode => '0644', + content => template('jenkins/jenkins.default.erb'), + } + } else { + file { '/etc/default/jenkins': + ensure => present, + owner => 'root', + group => 'root', + mode => '0644', + source => $jenkins_default + } } file { '/var/lib/jenkins': diff --git a/files/jenkins.default b/templates/jenkins.default.erb similarity index 91% rename from files/jenkins.default rename to templates/jenkins.default.erb index ce455a6..df29b88 100644 --- a/files/jenkins.default +++ b/templates/jenkins.default.erb @@ -11,7 +11,11 @@ JAVA=/usr/bin/java #JAVA_ARGS="-Djava.net.preferIPv4Stack=true" # make jenkins listen on IPv4 address # Disable compression as zip deflation threads eat CPU time. # https://issues.jenkins-ci.org/browse/JENKINS-14362 +<% if @java_args_override -%> +JAVA_ARGS="<%= @java_args_override %>" +<% else -%> JAVA_ARGS="-Xloggc:/var/log/jenkins/gc.log -XX:+PrintGCDetails -Xmx12g -Dorg.kohsuke.stapler.compression.CompressionFilter.disabled=true -Djava.util.logging.config.file=/var/lib/jenkins/logger.conf" +<% end -%> PIDFILE=/var/run/jenkins/jenkins.pid @@ -27,7 +31,7 @@ JENKINS_HOME=/var/lib/jenkins # set this to false if you don't want Hudson to run by itself # in this set up, you are expected to provide a servlet container # to host jenkins. -RUN_STANDALONE=true +RUN_STANDALONE=<%= @run_standalone %> # log location. this may be a syslog facility.priority JENKINS_LOG=/var/log/jenkins/$NAME.log @@ -38,10 +42,10 @@ JENKINS_LOG=/var/log/jenkins/$NAME.log # this is on by default because http://github.com/jenkinsci/jenkins/commit/2fb288474e980d0e7ff9c4a3b768874835a3e92e # reported that Ubuntu's PAM configuration doesn't include pam_limits.so, and as a result the # of file # descriptors are forced to 1024 regardless of /etc/security/limits.conf -MAXOPENFILES=8192 +MAXOPENFILES=<%= @max_open_files %> # port for HTTP connector (default 8080; disable with -1) -HTTP_PORT=8080 +HTTP_PORT=<%= @http_port %> # port for AJP connector (disabled by default) AJP_PORT=-1