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
This commit is contained in:
Zach Leslie 2017-10-03 23:37:18 +00:00
parent 22158a8d28
commit 572cb515fc
Notes: svn2git 2021-03-31 03:12:20 +00:00
svn path=/head/; revision=451175
13 changed files with 376 additions and 0 deletions

View file

@ -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>

View file

@ -0,0 +1,3 @@
TIMESTAMP = 1505689774
SHA256 (puppetserver-5.1.0.tar.gz) = 31621deba703414863b280b25960a387952489c35c2aa25abd9c268cb53e9917
SIZE (puppetserver-5.1.0.tar.gz) = 66451136

View file

@ -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

View file

@ -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

View file

@ -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
}

View file

@ -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

View file

@ -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

View file

@ -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>

View file

@ -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>

View file

@ -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.

View file

@ -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"

View file

@ -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

View file

@ -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