diff options
-rw-r--r-- | conf/suse/client.init | 142 | ||||
-rw-r--r-- | conf/suse/puppet.spec | 221 | ||||
-rw-r--r-- | conf/suse/server.init | 151 |
3 files changed, 514 insertions, 0 deletions
diff --git a/conf/suse/client.init b/conf/suse/client.init new file mode 100644 index 000000000..1edd5ef30 --- /dev/null +++ b/conf/suse/client.init @@ -0,0 +1,142 @@ +#!/bin/bash +# puppet Init script for running the puppet client daemon +# +# Author: Duane Griffin <d.griffin@psenterprise.com> +# David Lutterkort <dlutter@redhat.com> +# Martin Vuk <martin.vuk@fri.uni-lj.si> (SuSE support) +# +# chkconfig: - 98 02 +# +# description: Enables periodic system configuration checks through puppet. +# processname: puppet +# config: /etc/sysconfig/puppet + +### BEGIN INIT INFO +# Provides: puppet +# Required-Start: $local_fs $network $syslog +# Should-Start: +# Required-Stop: +# Default-Start: 3 4 5 +# Default-Stop: 0 1 2 6 +# Short-Description: puppet +# Description: Enables periodic system configuration checks through puppet. +### END INIT INFO + +# Shell functions sourced from /etc/rc.status: +# rc_check check and set local and overall rc status +# rc_status check and set local and overall rc status +# rc_status -v ditto but be verbose in local rc status +# rc_status -v -r ditto and clear the local rc status +# rc_failed set local and overall rc status to failed +# rc_reset clear local rc status (overall remains) +# rc_exit exit appropriate to overall rc status +[ -f /etc/rc.status ] && . /etc/rc.status +[ -f /etc/sysconfig/puppet ] && . /etc/sysconfig/puppet +lockfile=${LOCKFILE-/var/lock/subsys/puppet} +pidfile=${PIDFILE-/var/run/puppet.pid} +puppetd=${PUPPETD-/usr/sbin/puppetd} + +PUPPET_OPTS="" +[ -n "${PUPPET_SERVER}" ] && PUPPET_OPTS="--server=${PUPPET_SERVER}" +[ -n "$PUPPET_LOG" ] && PUPPET_OPTS="${PUPPET_OPTS} --logdest=${PUPPET_LOG}" +[ -n "$PUPPET_PORT" ] && PUPPET_OPTS="${PUPPET_OPTS} --port=${PUPPET_PORT}" + +# First reset status of this service +rc_reset + +# Return values acc. to LSB for all commands but status: +# 0 - success +# 1 - misc error +# 2 - invalid or excess args +# 3 - unimplemented feature (e.g. reload) +# 4 - insufficient privilege +# 5 - program not installed +# 6 - program not configured +# +# Note that starting an already running service, stopping +# or restarting a not-running service as well as the restart +# with force-reload (in case signalling is not supported) are +# considered a success. + +case "$1" in + start) + echo -n "Starting puppet services." + ## Start daemon with startproc(8). If this fails + ## the echo return value is set appropriate. + + # startproc should return 0, even if service is + # already running to match LSB spec. + startproc $puppetd ${PUPPET_OPTS} ${PUPPET_EXTRA_OPTS} && touch ${lockfile} + # Remember status and be verbose + rc_status -v + ;; + stop) + echo -n "Shutting down puppet:" + ## Stop daemon with killproc(8) and if this fails + ## set echo the echo return value. + + killproc -QUIT $puppetd && rm -f ${lockfile} ${pidfile} + + # Remember status and be verbose + rc_status -v + ;; + try-restart) + ## Stop the service and if this succeeds (i.e. the + ## service was running before), start it again. + $0 status >/dev/null && $0 restart + + # Remember status and be quiet + rc_status + ;; + restart) + ## Stop the service and regardless of whether it was + ## running or not, start it again. + $0 stop + $0 start + + # Remember status and be quiet + rc_status + ;; + force-reload) + ## Signal the daemon to reload its config. Most daemons + ## do this on signal 1 (SIGHUP). + ## If it does not support it, restart. + + echo -n "Reload service puppet" + ## if it supports it: + killproc -HUP $puppetd + rc_status -v + ;; + reload) + ## Like force-reload, but if daemon does not support + ## signalling, do nothing (!) + + # If it supports signalling: + echo -n "Reload puppet services." + killproc -HUP $puppetd + rc_status -v + ;; + status) + echo -n "Checking for service puppetd: " + ## Check status with checkproc(8), if process is running + ## checkproc will return with exit status 0. + + # Status has a slightly different for the status command: + # 0 - service running + # 1 - service dead, but /var/run/ pid file exists + # 2 - service dead, but /var/lock/ lock file exists + # 3 - service not running + + # NOTE: checkproc returns LSB compliant status values. + checkproc $puppetd + rc_status -v + ;; + once) + shift + $puppetd -o ${PUPPET_OPTS} ${PUPPET_EXTRA_OPTS} $@ + ;; + *) + echo "Usage: $0 {start|stop|status|try-restart|restart|force-reload|reload|once}" + exit 1 +esac +rc_exit diff --git a/conf/suse/puppet.spec b/conf/suse/puppet.spec new file mode 100644 index 000000000..6d4e9f538 --- /dev/null +++ b/conf/suse/puppet.spec @@ -0,0 +1,221 @@ +%{!?ruby_sitelibdir: %define ruby_sitelibdir %(ruby -rrbconfig -e 'puts Config::CONFIG["sitelibdir"]')} +%define pbuild %{_builddir}/%{name}-%{version} +%define suseconfdir conf/suse +%define confdir conf/redhat + +Summary: A network tool for managing many disparate systems +Name: puppet +Version: 0.18.4 +Release: 3%{?dist} +License: GPL +Group: System Environment/Base + +URL: http://reductivelabs.com/projects/puppet/ +Source: http://reductivelabs.com/downloads/puppet/%{name}-%{version}.tgz +Patch0: puppet.suse.patch +Patch1: puppet.service.patch + +Requires: ruby >= 1.8.1 +Requires: facter >= 1.1.4 +BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) +BuildArchitectures: noarch +BuildRequires: ruby >= 1.8.1 + +%description +Puppet lets you centrally manage every important aspect of your system using a +cross-platform specification language that manages all the separate elements +normally aggregated in different files, like users, cron jobs, and hosts, +along with obviously discrete elements like packages, services, and files. + +%package server +Group: System Environment/Base +Summary: Server for the puppet system management tool +Requires: puppet = %{version}-%{release} + +%description server +Provides the central puppet server daemon which provides manifests to clients. +The server can also function as a certificate authority and file server. + +%prep +%setup -q +%patch0 -p1 +%patch1 -p1 + +%build +for f in bin/* ; do + sed -i -e '1c#!/usr/bin/ruby' $f +done + +%install +%{__rm} -rf %{buildroot} +%{__install} -d -m0755 %{buildroot}%{_sbindir} +%{__install} -d -m0755 %{buildroot}%{_bindir} +%{__install} -d -m0755 %{buildroot}%{ruby_sitelibdir} +%{__install} -d -m0755 %{buildroot}%{_sysconfdir}/puppet/manifests +%{__install} -d -m0755 %{buildroot}%{_docdir}/%{name}-%{version} +%{__install} -d -m0755 %{buildroot}%{_localstatedir}/lib/puppet +%{__install} -d -m0755 %{buildroot}%{_localstatedir}/run/puppet +%{__install} -d -m0755 %{buildroot}%{_localstatedir}/log/puppet +%{__install} -Dp -m0755 %{pbuild}/bin/* %{buildroot}%{_sbindir} +%{__mv} %{buildroot}%{_sbindir}/puppet %{buildroot}%{_bindir}/puppet +%{__mv} %{buildroot}%{_sbindir}/puppetrun %{buildroot}%{_bindir}/puppetrun +%{__install} -Dp -m0644 %{pbuild}/lib/puppet.rb %{buildroot}%{ruby_sitelibdir}/puppet.rb +%{__cp} -a %{pbuild}/lib/puppet %{buildroot}%{ruby_sitelibdir} +find %{buildroot}%{ruby_sitelibdir} -type f -perm +ugo+x -print0 | xargs -0 -r %{__chmod} a-x +%{__install} -Dp -m0644 %{confdir}/client.sysconfig %{buildroot}%{_sysconfdir}/sysconfig/puppet +%{__install} -Dp -m0755 %{suseconfdir}/client.init %{buildroot}%{_initrddir}/puppet +%{__install} -Dp -m0644 %{confdir}/server.sysconfig %{buildroot}%{_sysconfdir}/sysconfig/puppetmaster +%{__install} -Dp -m0755 %{suseconfdir}/server.init %{buildroot}%{_initrddir}/puppetmaster +%{__install} -Dp -m0644 %{confdir}/fileserver.conf %{buildroot}%{_sysconfdir}/puppet/fileserver.conf +%{__install} -Dp -m0644 %{confdir}/puppetd.conf %{buildroot}%{_sysconfdir}/puppet/puppetd.conf +%{__ln_s} puppetd.conf %{buildroot}%{_sysconfdir}/puppet/puppetmasterd.conf +%{__ln_s} puppetd.conf %{buildroot}%{_sysconfdir}/puppet/puppetca.conf +%{__install} -Dp -m0644 %{confdir}/logrotate %{buildroot}%{_sysconfdir}/logrotate.d/puppet + +%files +%defattr(-, root, root, 0755) +%{_bindir}/puppet +%{_sbindir}/puppetd +%{ruby_sitelibdir}/* +%{_initrddir}/puppet +%config(noreplace) %{_sysconfdir}/sysconfig/puppet +%config(noreplace) %{_sysconfdir}/puppet/puppetd.conf +%doc CHANGELOG COPYING LICENSE README TODO examples +%exclude %{_sbindir}/puppetdoc +%config(noreplace) %{_sysconfdir}/logrotate.d/puppet +# These need to be owned by puppet so the server can +# write to them +%attr(-, puppet, puppet) %{_localstatedir}/run/puppet +%attr(-, puppet, puppet) %{_localstatedir}/log/puppet +%attr(-, puppet, puppet) %{_localstatedir}/lib/puppet + +%files server +%defattr(-, root, root, 0755) +%{_sbindir}/puppetmasterd +%{_bindir}/puppetrun +%{_initrddir}/puppetmaster +%config(noreplace) %{_sysconfdir}/puppet/* +%config(noreplace) %{_sysconfdir}/sysconfig/puppetmaster +%{_sbindir}/puppetca + +%pre +/usr/sbin/groupadd -r puppet 2>/dev/null || : +/usr/sbin/useradd -g puppet -c "Puppet" \ + -s /sbin/nologin -r -d /var/puppet puppet 2> /dev/null || : + +%post +/sbin/chkconfig --add puppet +exit 0 + +%post server +/sbin/chkconfig --add puppetmaster + +%preun +if [ "$1" = 0 ] ; then + /sbin/service puppet stop > /dev/null 2>&1 + /sbin/chkconfig --del puppet +fi + +%preun server +if [ "$1" = 0 ] ; then + /sbin/service puppetmaster stop > /dev/null 2>&1 + /sbin/chkconfig --del puppetmaster +fi + +%postun server +if [ "$1" -ge 1 ]; then + /sbin/service puppetmaster try-restart > /dev/null 2>&1 +fi + +%clean +%{__rm} -rf %{buildroot} + +%changelog +* Tue Aug 3 2006 Martin Vuk <martin.vuk@fri.uni-lj.si> - 0.18.4-3 +- Replaced puppet-bin.patch with %build section from David's spec + +* Tue Aug 1 2006 Martin Vuk <martin.vuk@fri.uni-lj.si> - 0.18.4-2 +- Added supprot for enabling services in SuSE + +* Tue Aug 1 2006 Martin Vuk <martin.vuk@fri.uni-lj.si> - 0.18.4-1 +- New version and support for SuSE + +* Wed Jul 5 2006 David Lutterkort <dlutter@redhat.com> - 0.18.2-1 +- New version + +* Wed Jun 28 2006 David Lutterkort <dlutter@redhat.com> - 0.18.1-1 +- Removed lsb-config.patch and yumrepo.patch since they are upstream now + +* Mon Jun 19 2006 David Lutterkort <dlutter@redhat.com> - 0.18.0-1 +- Patch config for LSB compliance (lsb-config.patch) +- Changed config moves /var/puppet to /var/lib/puppet, /etc/puppet/ssl + to /var/lib/puppet, /etc/puppet/clases.txt to /var/lib/puppet/classes.txt, + /etc/puppet/localconfig.yaml to /var/lib/puppet/localconfig.yaml + +* Fri May 19 2006 David Lutterkort <dlutter@redhat.com> - 0.17.2-1 +- Added /usr/bin/puppetrun to server subpackage +- Backported patch for yumrepo type (yumrepo.patch) + +* Wed May 3 2006 David Lutterkort <dlutter@redhat.com> - 0.16.4-1 +- Rebuilt + +* Fri Apr 21 2006 David Lutterkort <dlutter@redhat.com> - 0.16.0-1 +- Fix default file permissions in server subpackage +- Run puppetmaster as user puppet +- rebuilt for 0.16.0 + +* Mon Apr 17 2006 David Lutterkort <dlutter@redhat.com> - 0.15.3-2 +- Don't create empty log files in post-install scriptlet + +* Fri Apr 7 2006 David Lutterkort <dlutter@redhat.com> - 0.15.3-1 +- Rebuilt for new version + +* Wed Mar 22 2006 David Lutterkort <dlutter@redhat.com> - 0.15.1-1 +- Patch0: Run puppetmaster as root; running as puppet is not ready + for primetime + +* Mon Mar 13 2006 David Lutterkort <dlutter@redhat.com> - 0.15.0-1 +- Commented out noarch; requires fix for bz184199 + +* Mon Mar 6 2006 David Lutterkort <dlutter@redhat.com> - 0.14.0-1 +- Added BuildRequires for ruby + +* Wed Mar 1 2006 David Lutterkort <dlutter@redhat.com> - 0.13.5-1 +- Removed use of fedora-usermgmt. It is not required for Fedora Extras and + makes it unnecessarily hard to use this rpm outside of Fedora. Just + allocate the puppet uid/gid dynamically + +* Sun Feb 19 2006 David Lutterkort <dlutter@redhat.com> - 0.13.0-4 +- Use fedora-usermgmt to create puppet user/group. Use uid/gid 24. Fixed +problem with listing fileserver.conf and puppetmaster.conf twice + +* Wed Feb 8 2006 David Lutterkort <dlutter@redhat.com> - 0.13.0-3 +- Fix puppetd.conf + +* Wed Feb 8 2006 David Lutterkort <dlutter@redhat.com> - 0.13.0-2 +- Changes to run puppetmaster as user puppet + +* Mon Feb 6 2006 David Lutterkort <dlutter@redhat.com> - 0.13.0-1 +- Don't mark initscripts as config files + +* Mon Feb 6 2006 David Lutterkort <dlutter@redhat.com> - 0.12.0-2 +- Fix BuildRoot. Add dist to release + +* Tue Jan 17 2006 David Lutterkort <dlutter@redhat.com> - 0.11.0-1 +- Rebuild + +* Thu Jan 12 2006 David Lutterkort <dlutter@redhat.com> - 0.10.2-1 +- Updated for 0.10.2 Fixed minor kink in how Source is given + +* Wed Jan 11 2006 David Lutterkort <dlutter@redhat.com> - 0.10.1-3 +- Added basic fileserver.conf + +* Wed Jan 11 2006 David Lutterkort <dlutter@redhat.com> - 0.10.1-1 +- Updated. Moved installation of library files to sitelibdir. Pulled +initscripts into separate files. Folded tools rpm into server + +* Thu Nov 24 2005 Duane Griffin <d.griffin@psenterprise.com> +- Added init scripts for the client + +* Wed Nov 23 2005 Duane Griffin <d.griffin@psenterprise.com> +- First packaging diff --git a/conf/suse/server.init b/conf/suse/server.init new file mode 100644 index 000000000..aedb0c7c8 --- /dev/null +++ b/conf/suse/server.init @@ -0,0 +1,151 @@ +#!/bin/bash +# puppetmaster This shell script enables the puppetmaster server. +# +# Author: Duane Griffin <d.griffin@psenterprise.com> +# Martin Vuk <martin.vuk@fri.uni-lj.si> (SuSE support) +# +# chkconfig: - 65 45 +# +# description: Server for the puppet system management tool. +# processname: puppetmaster + +# Shell functions sourced from /etc/rc.status: +# rc_check check and set local and overall rc status +# rc_status check and set local and overall rc status +# rc_status -v ditto but be verbose in local rc status +# rc_status -v -r ditto and clear the local rc status +# rc_failed set local and overall rc status to failed +# rc_reset clear local rc status (overall remains) +# rc_exit exit appropriate to overall rc status + +lockfile=/var/lock/subsys/puppetmaster +pidfile=/var/run/puppet/puppetmasterd.pid + +# Source function library. +[ -f /etc/rc.status ] && . /etc/rc.status + +if [ -f /etc/sysconfig/puppetmaster ]; then + . /etc/sysconfig/puppetmaster +fi + +[ -z "$PUPPETMASTER_MANIFEST" ] && PUPPETMASTER_MANIFEST=/etc/puppet/manifests/site.pp +[ -z "$PUPPETMASTER_LOG" ] && PUPPETMASTER_LOG="/var/log/puppet/puppetmaster.log" +PUPPETMASTER_OPTS=" + --manifest=$PUPPETMASTER_MANIFEST \ + --logdest=${PUPPETMASTER_LOG} \ + ${PUPPETMASTER_EXTRA_OPTS}" +PUPPET_OPTS="" +[ -n "${PUPPET_SERVER}" ] && PUPPET_OPTS="--server=${PUPPET_SERVER}" +[ -n "$PUPPET_LOG" ] && PUPPET_OPTS="${PUPPET_OPTS} --logdest=${PUPPET_LOG}" +[ -n "$PUPPET_PORT" ] && PUPPET_OPTS="${PUPPET_OPTS} --port=${PUPPET_PORT}" + +prog=puppetmasterd +PUPPETMASTER=/usr/sbin/$prog + +start() { + echo -n $"Starting puppetmaster: " + + echo + return $RETVAL +} +# First reset status of this service +rc_reset + +# Return values acc. to LSB for all commands but status: +# 0 - success +# 1 - misc error +# 2 - invalid or excess args +# 3 - unimplemented feature (e.g. reload) +# 4 - insufficient privilege +# 5 - program not installed +# 6 - program not configured +# +# Note that starting an already running service, stopping +# or restarting a not-running service as well as the restart +# with force-reload (in case signalling is not supported) are +# considered a success. + +case "$1" in + start) + echo -n "Starting puppetmaster services." + ## Start daemon with startproc(8). If this fails + ## the echo return value is set appropriate. + + # startproc should return 0, even if service is + # already running to match LSB spec. + # Confirm the manifest exists + if [ -r $PUPPETMASTER_MANIFEST ]; then + startproc $PUPPETMASTER $PUPPETMASTER_OPTS && touch "$lockfile" + else + rc_failed + echo "Manifest does not exist: $PUPPETMASTER_MANIFEST" + fi + # Remember status and be verbose + rc_status -v + ;; + stop) + echo -n "Shutting down puppetmaster:" + ## Stop daemon with killproc(8) and if this fails + ## set echo the echo return value. + + killproc -QUIT $PUPPETMASTER && rm -f ${lockfile} ${pidfile} + + # Remember status and be verbose + rc_status -v + ;; + try-restart) + ## Stop the service and if this succeeds (i.e. the + ## service was running before), start it again. + $0 status >/dev/null && $0 restart + + # Remember status and be quiet + rc_status + ;; + restart) + ## Stop the service and regardless of whether it was + ## running or not, start it again. + $0 stop + $0 start + + # Remember status and be quiet + rc_status + ;; + force-reload) + ## Signal the daemon to reload its config. Most daemons + ## do this on signal 1 (SIGHUP). + ## If it does not support it, restart. + + echo -n "Reload service puppet" + ## if it supports it: + killproc -HUP $PUPPETMASTER + rc_status -v + ;; + reload) + ## Like force-reload, but if daemon does not support + ## signalling, do nothing (!) + + # If it supports signalling: + echo -n "Reload puppet services." + killproc -HUP $PUPPETMASTER + rc_status -v + ;; + status) + echo -n "Checking for service puppetmaster: " + ## Check status with checkproc(8), if process is running + ## checkproc will return with exit status 0. + + # Status has a slightly different for the status command: + # 0 - service running + # 1 - service dead, but /var/run/ pid file exists + # 2 - service dead, but /var/lock/ lock file exists + # 3 - service not running + + # NOTE: checkproc returns LSB compliant status values. + checkproc $PUPPETMASTER + rc_status -v + ;; + *) + echo "Usage: $0 {start|stop|status|try-restart|restart|force-reload|reload}" + exit 1 +esac +rc_exit |