1
0
mirror of https://git.FreeBSD.org/ports.git synced 2025-01-10 07:04:03 +00:00

sysutils/puppetserver8: New port

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.
This commit is contained in:
Romain Tartière 2023-04-28 11:00:54 -10:00
parent 53c3c6d2e1
commit e9c5ed3257
No known key found for this signature in database
GPG Key ID: BA4D1D955112336F
18 changed files with 413 additions and 2 deletions

View File

@ -1061,6 +1061,7 @@
SUBDIR += puppet8
SUBDIR += puppetserver6
SUBDIR += puppetserver7
SUBDIR += puppetserver8
SUBDIR += pv
SUBDIR += pwd_unmkdb
SUBDIR += pwgen

View File

@ -31,7 +31,7 @@ NO_ARCH= yes
NO_BUILD= yes
JAVA_VERSION= 8+
CONFLICTS_INSTALL= puppetserver7
CONFLICTS_INSTALL= puppetserver[0-9]
SHEBANG_FILES= ext/bin/puppetserver

View File

@ -28,7 +28,7 @@ NO_ARCH= yes
NO_BUILD= yes
JAVA_VERSION= 8+
CONFLICTS_INSTALL= puppetserver5 puppetserver6
CONFLICTS_INSTALL= puppetserver[0-9]
SHEBANG_FILES= ext/bin/puppetserver

View File

@ -0,0 +1,93 @@
PORTNAME= puppetserver
PORTVERSION= 8.0.0
CATEGORIES= sysutils java
MASTER_SITES= https://downloads.puppetlabs.com/puppet/
PKGNAMESUFFIX= 8
DISTFILES= ${DISTNAME}${EXTRACT_SUFX}
EXTRACT_ONLY= ${DISTNAME}${EXTRACT_SUFX}
MAINTAINER= puppet@FreeBSD.org
COMMENT= Puppet Server running in the JVM
WWW= https://docs.puppetlabs.com/puppetserver/latest/services_master_puppetserver.html
LICENSE= APACHE20
ONLY_FOR_ARCHS= amd64
RUN_DEPENDS= bash>=0:shells/bash \
puppet8>=8.0:sysutils/puppet8 \
rubygem-puppetserver-ca>=1:sysutils/rubygem-puppetserver-ca \
rubygem-semantic_puppet>=1:devel/rubygem-semantic_puppet \
sudo>=1:security/sudo
USES= ruby shebangfix
USE_RC_SUBR= puppetserver
USE_JAVA= yes
NO_ARCH= yes
NO_BUILD= yes
JAVA_VERSION= 8+
CONFLICTS_INSTALL= puppetserver[0-9]
SHEBANG_FILES= ext/bin/puppetserver
USERS= puppet
GROUPS= puppet
SUB_LIST= JAVA_HOME=${JAVA_HOME}
SUB_FILES= pkg-message
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 ext/cli/foreground
@${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
@${REINPLACE_CMD} -e 's|#!/opt/puppetlabs/puppet/bin/ruby|#!${RUBY}|' \
${WRKSRC}/ext/cli/ca \
${WRKSRC}/ext/cli/dropsonde
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
@${MKDIR} ${STAGEDIR}/var/puppet/server/data
@${MKDIR} ${STAGEDIR}/var/puppetserver
@${MKDIR} ${STAGEDIR}/var/run/puppetserver
${INSTALL_DATA} ${WRKSRC}/puppet-server-release.jar ${STAGEDIR}${DATADIR}/puppet-server-release.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/ca ${STAGEDIR}${DATADIR}/cli/apps/ca
${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 = 1682476133
SHA256 (puppetserver-8.0.0.tar.gz) = 645308576da1a7eadc2553dac9cc7da8f3ad6c22a49a08f19153f5a21bb2fd84
SIZE (puppetserver-8.0.0.tar.gz) = 60976845

View File

@ -0,0 +1,15 @@
--- ext/bin/puppetserver.orig 2018-10-03 16:18:58 UTC
+++ ext/bin/puppetserver
@@ -15,6 +15,12 @@ elif [ `uname` == "OpenBSD" ] ; then
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"
+ 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,19 @@
--- ext/cli/foreground.orig 2019-09-17 14:05:56 UTC
+++ ext/cli/foreground
@@ -1,6 +1,6 @@
#!/usr/bin/env bash
-restartfile="/opt/puppetlabs/server/data/puppetserver/restartcounter"
+restartfile="/var/puppet/server/data/puppetserver/restartcounter"
cli_defaults=${INSTALL_DIR}/cli/cli-defaults.sh
if [ ! -e "${INSTALL_DIR}/ezbake-functions.sh" ]; then
@@ -30,7 +30,7 @@ fi
COMMAND="${JAVA_BIN} ${JAVA_ARGS} ${LOG_APPENDER} \
-cp "$CLASSPATH" \
clojure.main -m puppetlabs.trapperkeeper.main \
- --config ${CONFIG} --bootstrap-config ${BOOTSTRAP_CONFIG} \
+ --config ${CONFIG} --bootstrap-config %%ETCDIR%%/services.d \
--restart-file "${restartfile}" \
${TK_ARGS} \
${@}"

View File

@ -0,0 +1,12 @@
--- ext/cli_defaults/cli-defaults.sh.orig 2019-09-17 14:05:56 UTC
+++ ext/cli_defaults/cli-defaults.sh
@@ -1,7 +1,7 @@
-INSTALL_DIR="/opt/puppetlabs/server/apps/puppetserver"
+INSTALL_DIR="%%DATADIR%%"
if [ -n "$JRUBY_JAR" ]; then
echo "Warning: the JRUBY_JAR setting is no longer needed and will be ignored." 1>&2
fi
-CLASSPATH="${CLASSPATH}:/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/facter.jar:/opt/puppetlabs/server/data/puppetserver/jars/*"
+CLASSPATH="${CLASSPATH}:/usr/local/lib/ruby/vendor_ruby/facter.jar:/opt/puppetlabs/server/data/puppetserver/jars/*"

View File

@ -0,0 +1,9 @@
--- ext/config/conf.d/global.conf.orig 2018-10-01 20:36:05 UTC
+++ ext/config/conf.d/global.conf
@@ -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 2021-03-12 18:01:54 UTC
+++ ext/config/conf.d/puppetserver.conf
@@ -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: [
+ %%PREFIX%%/share/puppetserver/lib,
+ %%RUBY_SITELIBDIR%%,
+ %%PREFIX%%/lib/ruby/vendor_ruby,
+ ]
# 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", "/opt/puppetlabs/puppet/lib/ruby/vendor_gems"]
+ gem-path: [${jruby-puppet.gem-home}, "/var/puppet/server/data/puppetserver/vendored-jruby-gems", "%%PREFIX%%/lib/ruby/gems/%%RUBY_VER%%"]
# 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 @@ jruby-puppet: {
# (optional) path to puppet conf dir; if not specified, will use
# /etc/puppetlabs/puppet
- server-conf-dir: /etc/puppetlabs/puppet
+ server-conf-dir: %%PREFIX%%/etc/puppet
# (optional) path to puppet code dir; if not specified, will use
# /etc/puppetlabs/code
- server-code-dir: /etc/puppetlabs/code
+ server-code-dir: %%PREFIX%%/etc/puppet/code
# (optional) path to puppet var dir; if not specified, will use
# /opt/puppetlabs/server/data/puppetserver
- server-var-dir: /opt/puppetlabs/server/data/puppetserver
+ server-var-dir: /var/puppet/server/data/puppetserver
# (optional) path to puppet run dir; if not specified, will use
# /var/run/puppetlabs/puppetserver
- server-run-dir: /var/run/puppetlabs/puppetserver
+ server-run-dir: /var/run/puppetserver
# (optional) path to puppet log dir; if not specified, will use
# /var/log/puppetlabs/puppetserver
- server-log-dir: /var/log/puppetlabs/puppetserver
+ server-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 2018-10-01 20:36:05 UTC
+++ 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 2018-09-18 17:16:33 UTC
+++ ext/config/logback.xml
@@ -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 2018-09-18 17:16:33 UTC
+++ ext/config/request-logging.xml
@@ -1,10 +1,10 @@
<configuration debug="false">
<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,11 @@
--- ext/ezbake-functions.sh.orig 2019-09-17 14:05:56 UTC
+++ ext/ezbake-functions.sh
@@ -126,7 +126,7 @@ init_restart_file()
local group="${GROUP:-puppet}"
if [ ! -e "$restartfile" ]; then
- /usr/bin/install --directory --owner=$user --group=$group --mode=755 "$restart_file_base_dir"
+ /usr/bin/install -d -o $user -g $group -m 755 "$restart_file_base_dir"
if [ $? -ne 0 ]; then
echo "Unable to create or set permissions for restart file at ${restart_file_base_dir}" 1>&2
return 1

View File

@ -0,0 +1,17 @@
[
{ type: install
message: <<EOM
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.
EOM
}
]

View File

@ -0,0 +1,95 @@
#!/bin/sh
# 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_java_opts=""}
: ${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="-f -p ${pidfile} ${java_cmd} ${puppetserver_java_opts} -cp %%DATADIR%%/puppet-server-release.jar:%%PREFIX%%/lib/ruby/vendor_ruby/facter.jar clojure.main -m puppetlabs.trapperkeeper.main ${puppetserver_args}"
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,11 @@
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.

View File

@ -0,0 +1,29 @@
@(,,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
@(,,755) %%DATADIR%%/cli/apps/ca
@(,,755) %%DATADIR%%/cli/apps/foreground
@(,,755) %%DATADIR%%/cli/apps/gem
@(,,755) %%DATADIR%%/cli/apps/irb
@(,,755) %%DATADIR%%/cli/apps/reload
@(,,755) %%DATADIR%%/cli/apps/ruby
@(,,755) %%DATADIR%%/cli/apps/start
@(,,755) %%DATADIR%%/cli/apps/stop
@(,,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
@dir(puppet,puppet,750) /var/puppet/server/data
@dir(puppet,puppet,750) /var/puppetserver
@dir(puppet,puppet,750) /var/run/puppetserver