aboutsummaryrefslogtreecommitdiffstats
path: root/sysutils
diff options
context:
space:
mode:
authorzleslie <zleslie@FreeBSD.org>2017-10-04 07:37:18 +0800
committerzleslie <zleslie@FreeBSD.org>2017-10-04 07:37:18 +0800
commit6b702d6fc66c09f931f8475982e26164c5f4e347 (patch)
tree631ab9cc4ba43f38f2baa11a305f39ea63908425 /sysutils
parent29be6e7a83fca4982bb6f8303226f2c5b0f84e8f (diff)
downloadfreebsd-ports-gnome-6b702d6fc66c09f931f8475982e26164c5f4e347.tar.gz
freebsd-ports-gnome-6b702d6fc66c09f931f8475982e26164c5f4e347.tar.zst
freebsd-ports-gnome-6b702d6fc66c09f931f8475982e26164c5f4e347.zip
New port: sysutils/puppetserver5
This port is based on prior wor done in sysutils/puppetserver, and updated to leverage the CFACTER build of sysutils/facter. Approved by: swills(mentor) Differential Revision: D12513
Diffstat (limited to 'sysutils')
-rw-r--r--sysutils/puppetserver5/Makefile95
-rw-r--r--sysutils/puppetserver5/distinfo3
-rw-r--r--sysutils/puppetserver5/files/patch-ext__bin__puppetserver15
-rw-r--r--sysutils/puppetserver5/files/patch-ext__cli_defaults__cli-defaults.sh11
-rw-r--r--sysutils/puppetserver5/files/patch-ext__config__conf.d__global.conf9
-rw-r--r--sysutils/puppetserver5/files/patch-ext__config__conf.d__puppetserver.conf55
-rw-r--r--sysutils/puppetserver5/files/patch-ext__config__conf.d__webserver.conf9
-rw-r--r--sysutils/puppetserver5/files/patch-ext__config__logback.xml17
-rw-r--r--sysutils/puppetserver5/files/patch-ext__config__request-logging.xml15
-rw-r--r--sysutils/puppetserver5/files/pkg-message.in12
-rw-r--r--sysutils/puppetserver5/files/puppetserver.in96
-rw-r--r--sysutils/puppetserver5/pkg-descr13
-rw-r--r--sysutils/puppetserver5/pkg-plist26
13 files changed, 376 insertions, 0 deletions
diff --git a/sysutils/puppetserver5/Makefile b/sysutils/puppetserver5/Makefile
new file mode 100644
index 000000000000..d885076c525e
--- /dev/null
+++ b/sysutils/puppetserver5/Makefile
@@ -0,0 +1,95 @@
+# $FreeBSD$
+
+PORTNAME= puppetserver
+PORTVERSION= 5.1.0
+CATEGORIES= sysutils java
+MASTER_SITES= http://downloads.puppetlabs.com/puppet/
+PKGNAMESUFFIX= 5
+
+MAINTAINER= puppet@FreeBSD.org
+COMMENT= Puppet Server running in the JVM
+
+LICENSE= APACHE20
+
+USES= shebangfix
+
+RUN_DEPENDS= bash>=0:shells/bash \
+ puppet5>=0:sysutils/puppet5
+BUILD_DEPENDS= rubygem-rake>=0:devel/rubygem-rake
+
+USE_RC_SUBR= puppetserver
+
+USE_JAVA= yes
+USE_RUBY= yes
+NO_ARCH= yes
+NO_BUILD= yes
+JAVA_VERSION= 1.8+
+
+SHEBANG_FILES= ext/bin/puppetserver
+
+USERS= puppet
+GROUPS= puppet
+
+SUB_LIST= JAVA_HOME=${JAVA_HOME}
+SUB_FILES= pkg-message
+
+OPTIONS_DEFAULT= CFACTER
+OPTIONS_RADIO= FACTER
+OPTIONS_RADIO_FACTER= CFACTER RFACTER
+
+RFACTER_DESC= Use facter 2.x (written in Ruby)
+CFACTER_DESC= Use facter 3.x (experimental rewrite in C++)
+
+RFACTER_BUILD_DEPENDS= rubygem-facter>=2.0:sysutils/rubygem-facter
+RFACTER_RUN_DEPENDS= rubygem-facter>=2.0:sysutils/rubygem-facter
+
+CFACTER_BUILD_DEPENDS= facter>=3.0:sysutils/facter
+CFACTER_RUN_DEPENDS= facter>=3.0:sysutils/facter
+
+post-patch:
+.for file in ext/config/logback.xml ext/config/request-logging.xml \
+ ext/config/conf.d/global.conf ext/config/conf.d/puppetserver.conf \
+ ext/config/conf.d/web-routes.conf ext/config/conf.d/webserver.conf \
+ ext/config/conf.d/auth.conf ext/config/services.d/ca.cfg \
+ ext/system-config/services.d/bootstrap.cfg ext/bin/puppetserver \
+ ext/cli_defaults/cli-defaults.sh
+ @${REINPLACE_CMD} -e 's|%%PREFIX%%|${PREFIX}|' \
+ -e 's|%%RUBY_SITELIBDIR%%|${RUBY_SITELIBDIR}|' \
+ -e 's|%%RUBY_VER%%|${RUBY_VER}|' \
+ -e 's|%%JAVA%%|${JAVA}|' \
+ -e 's|%%ETCDIR%%|${ETCDIR}|' \
+ -e 's|%%DATADIR%%|${DATADIR}|' \
+ ${WRKSRC}/${file}
+.endfor
+
+do-install:
+ @${MKDIR} ${STAGEDIR}${DATADIR}/cli/apps
+ @${MKDIR} ${STAGEDIR}${ETCDIR}/conf.d
+ @${MKDIR} ${STAGEDIR}${ETCDIR}/services.d
+ @${MKDIR} ${STAGEDIR}${PREFIX}/etc/puppet/code
+ @${MKDIR} ${STAGEDIR}/var/log/puppetserver
+ @${MKDIR} ${STAGEDIR}/var/puppet/server
+ ${INSTALL_DATA} ${WRKSRC}/puppet-server-release.jar ${STAGEDIR}${DATADIR}/puppet-server-release.jar
+ ${INSTALL_DATA} ${WRKSRC}/jruby-9k.jar ${STAGEDIR}${DATADIR}/jruby-9k.jar
+ ${INSTALL_DATA} ${WRKSRC}/ext/config/conf.d/global.conf ${STAGEDIR}${ETCDIR}/conf.d/global.conf.sample
+ ${INSTALL_DATA} ${WRKSRC}/ext/config/logback.xml ${STAGEDIR}${ETCDIR}/logback.xml.sample
+ ${INSTALL_DATA} ${WRKSRC}/ext/config/request-logging.xml ${STAGEDIR}${ETCDIR}/request-logging.xml.sample
+ ${INSTALL_DATA} ${WRKSRC}/ext/config/conf.d/puppetserver.conf ${STAGEDIR}${ETCDIR}/conf.d/puppetserver.conf.sample
+ ${INSTALL_DATA} ${WRKSRC}/ext/config/conf.d/web-routes.conf ${STAGEDIR}${ETCDIR}/conf.d/web-routes.conf.sample
+ ${INSTALL_DATA} ${WRKSRC}/ext/config/conf.d/webserver.conf ${STAGEDIR}${ETCDIR}/conf.d/webserver.conf.sample
+ ${INSTALL_DATA} ${WRKSRC}/ext/config/conf.d/auth.conf ${STAGEDIR}${ETCDIR}/conf.d/auth.conf.sample
+ ${INSTALL_DATA} ${WRKSRC}/ext/config/conf.d/metrics.conf ${STAGEDIR}${ETCDIR}/conf.d/metrics.conf.sample
+ ${INSTALL_DATA} ${WRKSRC}/ext/config/services.d/ca.cfg ${STAGEDIR}${ETCDIR}/services.d/ca.cfg.sample
+ ${INSTALL_DATA} ${WRKSRC}/ext/system-config/services.d/bootstrap.cfg ${STAGEDIR}${ETCDIR}/services.d/bootstrap.cfg.sample
+ ${INSTALL_DATA} ${WRKSRC}/ext/bin/puppetserver ${STAGEDIR}${PREFIX}/bin/puppetserver
+ ${INSTALL_DATA} ${WRKSRC}/ext/ezbake-functions.sh ${STAGEDIR}${DATADIR}/ezbake-functions.sh
+ ${INSTALL_DATA} ${WRKSRC}/ext/cli/foreground ${STAGEDIR}${DATADIR}/cli/apps/foreground
+ ${INSTALL_DATA} ${WRKSRC}/ext/cli/gem ${STAGEDIR}${DATADIR}/cli/apps/gem
+ ${INSTALL_DATA} ${WRKSRC}/ext/cli/irb ${STAGEDIR}${DATADIR}/cli/apps/irb
+ ${INSTALL_DATA} ${WRKSRC}/ext/cli/reload ${STAGEDIR}${DATADIR}/cli/apps/reload
+ ${INSTALL_DATA} ${WRKSRC}/ext/cli/ruby ${STAGEDIR}${DATADIR}/cli/apps/ruby
+ ${INSTALL_DATA} ${WRKSRC}/ext/cli/start ${STAGEDIR}${DATADIR}/cli/apps/start
+ ${INSTALL_DATA} ${WRKSRC}/ext/cli/stop ${STAGEDIR}${DATADIR}/cli/apps/stop
+ ${INSTALL_DATA} ${WRKSRC}/ext/cli_defaults/cli-defaults.sh ${STAGEDIR}${DATADIR}/cli/cli-defaults.sh
+
+.include <bsd.port.mk>
diff --git a/sysutils/puppetserver5/distinfo b/sysutils/puppetserver5/distinfo
new file mode 100644
index 000000000000..537255b7532e
--- /dev/null
+++ b/sysutils/puppetserver5/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1505689774
+SHA256 (puppetserver-5.1.0.tar.gz) = 31621deba703414863b280b25960a387952489c35c2aa25abd9c268cb53e9917
+SIZE (puppetserver-5.1.0.tar.gz) = 66451136
diff --git a/sysutils/puppetserver5/files/patch-ext__bin__puppetserver b/sysutils/puppetserver5/files/patch-ext__bin__puppetserver
new file mode 100644
index 000000000000..15b8c8adf156
--- /dev/null
+++ b/sysutils/puppetserver5/files/patch-ext__bin__puppetserver
@@ -0,0 +1,15 @@
+--- ext/bin/puppetserver.orig 2017-09-28 10:58:44.784311406 -0700
++++ ext/bin/puppetserver 2017-09-28 11:00:46.034742764 -0700
+@@ -14,6 +14,12 @@
+ USER="_puppet"
+ INSTALL_DIR="/opt/puppetlabs/server/apps/puppetserver"
+ CONFIG="/etc/puppetlabs/puppetserver/conf.d"
++elif [ `uname` == "FreeBSD" ] ; then
++ JAVA_BIN="%%JAVA%%"
++ JAVA_ARGS="-Xms2g -Xmx2g -XX:MaxPermSize=256m"
++ USER="puppet"
++ INSTALL_DIR="%%DATADIR%%"
++ CONFIG="%%ETCDIR%%/conf.d"
+ else
+ echo "You seem to be missing some important configuration files; could not find /etc/default/puppetserver or /etc/sysconfig/puppetserver" >&2
+ exit 1
diff --git a/sysutils/puppetserver5/files/patch-ext__cli_defaults__cli-defaults.sh b/sysutils/puppetserver5/files/patch-ext__cli_defaults__cli-defaults.sh
new file mode 100644
index 000000000000..63344e6d02ec
--- /dev/null
+++ b/sysutils/puppetserver5/files/patch-ext__cli_defaults__cli-defaults.sh
@@ -0,0 +1,11 @@
+--- ext/cli_defaults/cli-defaults.sh.orig 2017-08-06 01:24:37.981353156 -0700
++++ ext/cli_defaults/cli-defaults.sh 2017-08-06 01:39:53.280636611 -0700
+@@ -1,6 +1,6 @@
+-INSTALL_DIR="/opt/puppetlabs/server/apps/puppetserver"
++INSTALL_DIR="%%DATADIR%%"
+
+-JRUBY_JAR="${JRUBY_JAR:-${INSTALL_DIR}/jruby-1_7.jar}"
++JRUBY_JAR="${JRUBY_JAR:-${INSTALL_DIR}/jruby-9k.jar}"
+
+ if [ ! -e "$JRUBY_JAR" ]; then
+ echo "Unable to find specified JRUBY_JAR: ${JRUBY_JAR}" 1>&2
diff --git a/sysutils/puppetserver5/files/patch-ext__config__conf.d__global.conf b/sysutils/puppetserver5/files/patch-ext__config__conf.d__global.conf
new file mode 100644
index 000000000000..a681368841de
--- /dev/null
+++ b/sysutils/puppetserver5/files/patch-ext__config__conf.d__global.conf
@@ -0,0 +1,9 @@
+--- ext/config/conf.d/global.conf.orig 2017-08-02 20:34:12.049821329 -0700
++++ ext/config/conf.d/global.conf 2017-08-02 20:35:03.130347445 -0700
+@@ -1,5 +1,5 @@
+ global: {
+ # Path to logback logging configuration file; for more
+ # info, see http://logback.qos.ch/manual/configuration.html
+- logging-config: /etc/puppetlabs/puppetserver/logback.xml
++ logging-config: %%PREFIX%%/etc/puppetserver/logback.xml
+ }
diff --git a/sysutils/puppetserver5/files/patch-ext__config__conf.d__puppetserver.conf b/sysutils/puppetserver5/files/patch-ext__config__conf.d__puppetserver.conf
new file mode 100644
index 000000000000..e79cadd229c2
--- /dev/null
+++ b/sysutils/puppetserver5/files/patch-ext__config__conf.d__puppetserver.conf
@@ -0,0 +1,55 @@
+--- ext/config/conf.d/puppetserver.conf.orig 2017-08-02 20:01:48.229660631 -0700
++++ ext/config/conf.d/puppetserver.conf 2017-08-04 14:00:29.705675760 -0700
+@@ -2,16 +2,20 @@
+ jruby-puppet: {
+ # Where the puppet-agent dependency places puppet, facter, etc...
+ # Puppet server expects to load Puppet from this location
+- ruby-load-path: [/opt/puppetlabs/puppet/lib/ruby/vendor_ruby]
++ ruby-load-path: [
++ %%RUBY_SITELIBDIR%%,
++ %%PREFIX%%/lib/ruby/vendor_ruby,
++ %%PREFIX%%/lib/ruby/gems/%%RUBY_VER%%/gems/facter-2.5.0/lib,
++ ]
+
+ # This setting determines where JRuby will install gems. It is used for loading gems,
+ # and also by the `puppetserver gem` command line tool.
+- gem-home: /opt/puppetlabs/server/data/puppetserver/jruby-gems
++ gem-home: /var/puppet/server/data/puppetserver/jruby-gems
+
+ # This setting defines the complete "GEM_PATH" for jruby. If set, it should include
+ # the gem-home directory as well as any other directories that gems can be loaded
+ # from (including the vendored gems directory for gems that ship with puppetserver)
+- gem-path: [${jruby-puppet.gem-home}, "/opt/puppetlabs/server/data/puppetserver/vendored-jruby-gems"]
++ gem-path: [${jruby-puppet.gem-home}, "/var/puppet/server/data/puppetserver/vendored-jruby-gems"]
+
+ # PLEASE NOTE: Use caution when modifying the below settings. Modifying
+ # these settings will change the value of the corresponding Puppet settings
+@@ -26,23 +30,23 @@
+
+ # (optional) path to puppet conf dir; if not specified, will use
+ # /etc/puppetlabs/puppet
+- master-conf-dir: /etc/puppetlabs/puppet
++ master-conf-dir: %%PREFIX%%/etc/puppet
+
+ # (optional) path to puppet code dir; if not specified, will use
+ # /etc/puppetlabs/code
+- master-code-dir: /etc/puppetlabs/code
++ master-code-dir: %%PREFIX%%/etc/puppet/code
+
+ # (optional) path to puppet var dir; if not specified, will use
+ # /opt/puppetlabs/server/data/puppetserver
+- master-var-dir: /opt/puppetlabs/server/data/puppetserver
++ master-var-dir: /var/puppet/server/data/puppetserver
+
+ # (optional) path to puppet run dir; if not specified, will use
+ # /var/run/puppetlabs/puppetserver
+- master-run-dir: /var/run/puppetlabs/puppetserver
++ master-run-dir: /var/run/puppetserver
+
+ # (optional) path to puppet log dir; if not specified, will use
+ # /var/log/puppetlabs/puppetserver
+- master-log-dir: /var/log/puppetlabs/puppetserver
++ master-log-dir: /var/log/puppetserver
+
+ # (optional) maximum number of JRuby instances to allow
+ #max-active-instances: 1
diff --git a/sysutils/puppetserver5/files/patch-ext__config__conf.d__webserver.conf b/sysutils/puppetserver5/files/patch-ext__config__conf.d__webserver.conf
new file mode 100644
index 000000000000..573e0a605a01
--- /dev/null
+++ b/sysutils/puppetserver5/files/patch-ext__config__conf.d__webserver.conf
@@ -0,0 +1,9 @@
+--- ext/config/conf.d/webserver.conf.orig 2016-03-28 10:32:26.000000000 -0700
++++ ext/config/conf.d/webserver.conf
+@@ -1,5 +1,5 @@
+ webserver: {
+- access-log-config: /etc/puppetlabs/puppetserver/request-logging.xml
++ access-log-config: %%PREFIX%%/etc/puppetserver/request-logging.xml
+ client-auth: want
+ ssl-host: 0.0.0.0
+ ssl-port: 8140
diff --git a/sysutils/puppetserver5/files/patch-ext__config__logback.xml b/sysutils/puppetserver5/files/patch-ext__config__logback.xml
new file mode 100644
index 000000000000..cc04e1c1e8b9
--- /dev/null
+++ b/sysutils/puppetserver5/files/patch-ext__config__logback.xml
@@ -0,0 +1,17 @@
+--- ext/config/logback.xml.orig 2017-08-02 19:46:03.829675373 -0700
++++ ext/config/logback.xml 2017-08-02 19:50:56.742766644 -0700
+@@ -6,12 +6,11 @@
+ </appender>
+
+ <appender name="F1" class="ch.qos.logback.core.rolling.RollingFileAppender">
+- <!-- TODO: this path should not be hard-coded -->
+- <file>/var/log/puppetlabs/puppetserver/puppetserver.log</file>
++ <file>/var/log/puppetserver/puppetserver.log</file>
+ <append>true</append>
+ <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
+ <!-- rollover daily -->
+- <fileNamePattern>/var/log/puppetlabs/puppetserver/puppetserver-%d{yyyy-MM-dd}.%i.log.gz</fileNamePattern>
++ <fileNamePattern>/var/log/puppetserver/puppetserver-%d{yyyy-MM-dd}.%i.log.gz</fileNamePattern>
+ <!-- each file should be at most 200MB, keep 90 days worth of history, but at most 1GB total-->
+ <maxFileSize>200MB</maxFileSize>
+ <maxHistory>90</maxHistory>
diff --git a/sysutils/puppetserver5/files/patch-ext__config__request-logging.xml b/sysutils/puppetserver5/files/patch-ext__config__request-logging.xml
new file mode 100644
index 000000000000..587e091a7d69
--- /dev/null
+++ b/sysutils/puppetserver5/files/patch-ext__config__request-logging.xml
@@ -0,0 +1,15 @@
+--- ext/config/request-logging.xml.orig 2016-12-03 22:32:37.248735656 -0800
++++ ext/config/request-logging.xml 2016-12-03 22:37:39.489420010 -0800
+@@ -1,10 +1,10 @@
+ <configuration debug="false" scan="true">
+ <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
+- <file>/var/log/puppetlabs/puppetserver/puppetserver-access.log</file>
++ <file>/var/log/puppetserver/puppetserver-access.log</file>
+ <append>true</append>
+ <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
+ <!-- rollover daily -->
+- <fileNamePattern>/var/log/puppetlabs/puppetserver/puppetserver-access-%d{yyyy-MM-dd}.%i.log.gz</fileNamePattern>
++ <fileNamePattern>/var/log/puppetserver/puppetserver-access-%d{yyyy-MM-dd}.%i.log.zip</fileNamePattern>
+ <!-- each file should be at most 200MB, keep 90 days worth of history, but at most 1GB total-->
+ <maxFileSize>200MB</maxFileSize>
+ <maxHistory>90</maxHistory>
diff --git a/sysutils/puppetserver5/files/pkg-message.in b/sysutils/puppetserver5/files/pkg-message.in
new file mode 100644
index 000000000000..4c4aad47b360
--- /dev/null
+++ b/sysutils/puppetserver5/files/pkg-message.in
@@ -0,0 +1,12 @@
+Remember to run:
+
+sysrc puppetserver_enable=yes
+
+A note to users upgrading to 2.6 who have also modified bootstrap.cfg, please
+see the release notes for breaking changes in 2.5.
+
+https://docs.puppet.com/puppetserver/latest/release_notes.html#puppet-server-25
+
+The file bootstrap.cfg has been removed and ca configuration has been moved out
+to its own file in ca.cfg.
+
diff --git a/sysutils/puppetserver5/files/puppetserver.in b/sysutils/puppetserver5/files/puppetserver.in
new file mode 100644
index 000000000000..3a8788a77e8b
--- /dev/null
+++ b/sysutils/puppetserver5/files/puppetserver.in
@@ -0,0 +1,96 @@
+#!/bin/sh
+
+# $FreeBSD: head/sysutils/puppetserver/files/puppetserver.in 428145 2016-12-08 17:41:39Z swills $
+#
+# PROVIDE: puppetserver
+# REQUIRE: LOGIN
+# KEYWORD: shutdown
+
+#
+# Configuration settings for puppetserver in /etc/rc.conf:
+#
+# puppetserver_enable (bool):
+# Set to "NO" by default.
+# Set it to "YES" to enable puppetserver
+#
+# puppetserver_args (str):
+# Extra arguments passed to start command
+#
+# puppetserver_java_home (str):
+# Set to "%%JAVA_HOME%%" by default.
+# Set the Java virtual machine to run puppetserver
+#
+# puppetserver_java_opts (str):
+# Set to "" by default.
+# Java VM args to use.
+#
+# puppetserver_user (str):
+# Set to "puppet" by default.
+# User to run puppetserver as.
+#
+# puppetserver_group (str):
+# Set to "puppet" by default.
+# Group for data file ownership.
+#
+# puppetserver_log_file (str):
+# Set to "/var/log/puppetserver/puppetserver.log" by default.
+# Log file location.
+#
+
+. /etc/rc.subr
+
+name="puppetserver"
+rcvar=puppetserver_enable
+
+load_rc_config "${name}"
+
+: ${puppetserver_enable="NO"}
+: ${puppetserver_args="--config %%PREFIX%%/etc/puppetserver/conf.d -b %%PREFIX%%/etc/puppetserver/services.d"}
+: ${puppetserver_java_home="%%JAVA_HOME%%"}
+: ${puppetserver_user="puppet"}
+: ${puppetserver_group="puppet"}
+: ${puppetserver_log_file="/var/log/puppetserver/puppetserver.log"}
+
+pidfile="/var/run/puppetserver/puppetserver.pid"
+command="/usr/sbin/daemon"
+java_cmd="${puppetserver_java_home}/bin/java"
+procname="${java_cmd}"
+command_args="-p ${pidfile} ${java_cmd} -cp %%DATADIR%%/puppet-server-release.jar:%%DATADIR%%/jruby-9k.jar clojure.main -m puppetlabs.trapperkeeper.main ${puppetserver_args} > ${puppetserver_log_file} 2>&1"
+
+
+required_files="${java_cmd}"
+
+start_precmd="puppetserver_prestart"
+
+# An UTF-8 locale is required
+: LC_ALL=${LC_ALL:=C.UTF-8}
+case $LC_ALL in
+ *.UTF-8)
+ ;;
+ *.*)
+ LC_ALL="${LC_ALL%.*}.UTF-8"
+ ;;
+ *)
+ LC_ALL=C.UTF-8
+ ;;
+esac
+export LC_ALL
+
+puppetserver_prestart() {
+ if [ ! -f "${puppetserver_log_file}" ]; then
+ touch "${puppetserver_log_file}"
+ chown "${puppetserver_user}:${puppetserver_group}" "${puppetserver_log_file}"
+ chmod 640 "${puppetserver_log_file}"
+ fi
+ if [ ! -d "/var/run/puppetserver" ]; then
+ install -d -o "${puppetserver_user}" -g "${puppetserver_group}" -m 750 "/var/run/puppetserver"
+ fi
+
+ chown -R "root:${puppetserver_group}" "%%PREFIX%%/etc/puppetserver/conf.d"
+ chmod 0750 "%%PREFIX%%/etc/puppetserver/conf.d"
+
+ chown "root:${puppetserver_group}" "%%PREFIX%%/etc/puppetserver/logback.xml"
+ chmod 0640 "%%PREFIX%%/etc/puppetserver/logback.xml"
+}
+
+run_rc_command "$1"
diff --git a/sysutils/puppetserver5/pkg-descr b/sysutils/puppetserver5/pkg-descr
new file mode 100644
index 000000000000..99ba4db5203a
--- /dev/null
+++ b/sysutils/puppetserver5/pkg-descr
@@ -0,0 +1,13 @@
+Puppet master is a Ruby application that compiles configurations
+for any number of Puppet agent nodes, using Puppet code and various
+other data sources. (For more info, see Overview of Puppet's
+Architecture.)
+
+Puppet Server is an application that runs on the Java Virtual Machine
+(JVM) and provides the same services as the classic Puppet master
+application. It mostly does this by running the existing Puppet
+master code in several JRuby interpreters, but it replaces some
+parts of the classic application with new services written in
+Clojure.
+
+WWW: https://docs.puppetlabs.com/puppetserver/latest/services_master_puppetserver.html
diff --git a/sysutils/puppetserver5/pkg-plist b/sysutils/puppetserver5/pkg-plist
new file mode 100644
index 000000000000..0a8b5bd45059
--- /dev/null
+++ b/sysutils/puppetserver5/pkg-plist
@@ -0,0 +1,26 @@
+@(,,750) bin/puppetserver
+@sample %%ETCDIR%%/logback.xml.sample
+@sample %%ETCDIR%%/request-logging.xml.sample
+@sample %%ETCDIR%%/conf.d/auth.conf.sample
+@sample %%ETCDIR%%/conf.d/global.conf.sample
+@sample %%ETCDIR%%/conf.d/metrics.conf.sample
+@sample %%ETCDIR%%/conf.d/puppetserver.conf.sample
+@sample %%ETCDIR%%/conf.d/web-routes.conf.sample
+@sample %%ETCDIR%%/conf.d/webserver.conf.sample
+@sample %%ETCDIR%%/services.d/bootstrap.cfg.sample
+@sample %%ETCDIR%%/services.d/ca.cfg.sample
+@dir(,puppet,750) etc/puppet/code
+%%DATADIR%%/puppet-server-release.jar
+%%DATADIR%%/jruby-9k.jar
+@(,,755) %%DATADIR%%/cli/apps/start
+@(,,755) %%DATADIR%%/cli/apps/stop
+@(,,755) %%DATADIR%%/cli/apps/reload
+@(,,755) %%DATADIR%%/cli/apps/foreground
+@(,,755) %%DATADIR%%/cli/apps/gem
+@(,,755) %%DATADIR%%/cli/apps/irb
+@(,,755) %%DATADIR%%/cli/apps/ruby
+@(,,755) %%DATADIR%%/cli/cli-defaults.sh
+@(,,755) %%DATADIR%%/ezbake-functions.sh
+@dir(puppet,puppet,750) /var/log/puppetserver
+@dir(puppet,puppet,755) /var/puppet
+@dir(puppet,puppet,750) /var/puppet/server