diff --git a/pkg/rpm/salt-master b/pkg/rpm/salt-master new file mode 100755 index 000000000000..60eb999cb33f --- /dev/null +++ b/pkg/rpm/salt-master @@ -0,0 +1,131 @@ +#!/bin/sh +# +# Salt master +################################### + +# LSB header + +### BEGIN INIT INFO +# Provides: salt-master +# Required-Start: network +# Default-Start: 3 4 5 +# Short-Description: salt master control daemon +# Description: This is a daemon that controls the salt minions +### END INIT INFO + +# chkconfig header + +# chkconfig: 345 99 99 +# description: This is a daemon that controls the salt mininons +# +# processname: /usr/bin/salt-master + +# Sanity checks. +[ -x /usr/bin/salt-master ] || exit 0 + +DEBIAN_VERSION=/etc/debian_version +SUSE_RELEASE=/etc/SuSE-release +# Source function library. +if [ -f $DEBIAN_VERSION ]; then + break +elif [ -f $SUSE_RELEASE -a -r /etc/rc.status ]; then + . /etc/rc.status +else + . /etc/rc.d/init.d/functions +fi + +SERVICE=salt-master +PROCESS=salt-master +CONFIG_ARGS=" " + +RETVAL=0 + +start() { + echo -n $"Starting salt-master daemon: " + if [ -f $SUSE_RELEASE ]; then + startproc -f -p /var/run/$SERVICE.pid /usr/bin/salt-master -d $CONFIG_ARGS + rc_status -v + elif [ -e $DEBIAN_VERSION ]; then + if [ -f $LOCKFILE ]; then + echo -n "already started, lock file found" + RETVAL=1 + elif /usr/bin/python /usr/bin/salt-master -d; then + echo -n "OK" + RETVAL=0 + fi + else + daemon --check $SERVICE $PROCESS -d $CONFIG_ARGS + fi + RETVAL=$? + echo + [ $RETVAL -eq 0 ] && touch $LOCKFILE + return $RETVAL +} + +stop() { + echo -n $"Stopping salt-master daemon: " + if [ -f $SUSE_RELEASE ]; then + killproc -TERM /usr/bin/salt-master + rc_status -v + elif [ -f $DEBIAN_VERSION ]; then + # Added this since Debian's start-stop-daemon doesn't support spawned processes + if ps -ef | grep "/usr/bin/python /usr/bin/salt-master" | grep -v grep | awk '{print $2}' | xargs kill &> /dev/null; then + echo -n "OK" + RETVAL=0 + else + echo -n "Daemon is not started" + RETVAL=1 + fi + else + killproc $PROCESS + fi + RETVAL=$? + echo + if [ $RETVAL -eq 0 ]; then + rm -f $LOCKFILE + rm -f /var/run/$SERVICE.pid + fi +} + +restart() { + stop + start +} + +# See how we were called. +case "$1" in + start|stop|restart) + $1 + ;; + status) + if [ -f $SUSE_RELEASE ]; then + echo -n "Checking for service salt-master " + checkproc /usr/bin/salt-master + rc_status -v + elif [ -f $DEBIAN_VERSION ]; then + if [ -f $LOCKFILE ]; then + RETVAL=0 + echo "salt-master is running." + else + RETVAL=1 + echo "salt-master is stopped." + fi + else + status $PROCESS + RETVAL=$? + fi + ;; + condrestart) + [ -f $LOCKFILE ] && restart || : + ;; + reload) + echo "can't reload configuration, you have to restart it" + RETVAL=$? + ;; + *) + echo $"Usage: $0 {start|stop|status|restart|condrestart|reload}" + exit 1 + ;; +esac +exit $RETVAL + diff --git a/pkg/rpm/salt-minion b/pkg/rpm/salt-minion new file mode 100755 index 000000000000..4786beaf6354 --- /dev/null +++ b/pkg/rpm/salt-minion @@ -0,0 +1,131 @@ +#!/bin/sh +# +# Salt minion +################################### + +# LSB header + +### BEGIN INIT INFO +# Provides: salt-minion +# Required-Start: network +# Default-Start: 3 4 5 +# Short-Description: salt minion control daemon +# Description: This is a daemon that controls the salt minions +### END INIT INFO + +# chkconfig header + +# chkconfig: 345 99 99 +# description: This is a daemon that controls the salt mininons +# +# processname: /usr/bin/salt-minion + +# Sanity checks. +[ -x /usr/bin/salt-minion ] || exit 0 + +DEBIAN_VERSION=/etc/debian_version +SUSE_RELEASE=/etc/SuSE-release +# Source function library. +if [ -f $DEBIAN_VERSION ]; then + break +elif [ -f $SUSE_RELEASE -a -r /etc/rc.status ]; then + . /etc/rc.status +else + . /etc/rc.d/init.d/functions +fi + +SERVICE=salt-minion +PROCESS=salt-minion +CONFIG_ARGS=" " + +RETVAL=0 + +start() { + echo -n $"Starting salt-minion daemon: " + if [ -f $SUSE_RELEASE ]; then + startproc -f -p /var/run/$SERVICE.pid /usr/bin/salt-minion -d $CONFIG_ARGS + rc_status -v + elif [ -e $DEBIAN_VERSION ]; then + if [ -f $LOCKFILE ]; then + echo -n "already started, lock file found" + RETVAL=1 + elif /usr/bin/python /usr/bin/salt-minion -d; then + echo -n "OK" + RETVAL=0 + fi + else + daemon --check $SERVICE $PROCESS -d $CONFIG_ARGS + fi + RETVAL=$? + echo + [ $RETVAL -eq 0 ] && touch $LOCKFILE + return $RETVAL +} + +stop() { + echo -n $"Stopping salt-minion daemon: " + if [ -f $SUSE_RELEASE ]; then + killproc -TERM /usr/bin/salt-minion + rc_status -v + elif [ -f $DEBIAN_VERSION ]; then + # Added this since Debian's start-stop-daemon doesn't support spawned processes + if ps -ef | grep "/usr/bin/python /usr/bin/salt-minion" | grep -v grep | awk '{print $2}' | xargs kill &> /dev/null; then + echo -n "OK" + RETVAL=0 + else + echo -n "Daemon is not started" + RETVAL=1 + fi + else + killproc $PROCESS + fi + RETVAL=$? + echo + if [ $RETVAL -eq 0 ]; then + rm -f $LOCKFILE + rm -f /var/run/$SERVICE.pid + fi +} + +restart() { + stop + start +} + +# See how we were called. +case "$1" in + start|stop|restart) + $1 + ;; + status) + if [ -f $SUSE_RELEASE ]; then + echo -n "Checking for service salt-minion " + checkproc /usr/bin/salt-minion + rc_status -v + elif [ -f $DEBIAN_VERSION ]; then + if [ -f $LOCKFILE ]; then + RETVAL=0 + echo "salt-minion is running." + else + RETVAL=1 + echo "salt-minion is stopped." + fi + else + status $PROCESS + RETVAL=$? + fi + ;; + condrestart) + [ -f $LOCKFILE ] && restart || : + ;; + reload) + echo "can't reload configuration, you have to restart it" + RETVAL=$? + ;; + *) + echo $"Usage: $0 {start|stop|status|restart|condrestart|reload}" + exit 1 + ;; +esac +exit $RETVAL + diff --git a/pkg/rpm/salt.spec b/pkg/rpm/salt.spec new file mode 100644 index 000000000000..5984d3164778 --- /dev/null +++ b/pkg/rpm/salt.spec @@ -0,0 +1,56 @@ +# sitelib for noarch packages, sitearch for others (remove the unneeded one) +%{!?python_sitelib: %global python_sitelib %(%{__python} -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())")} +%{!?python_sitearch: %global python_sitearch %(%{__python} -c "from distutils.sysconfig import get_python_lib; print(get_python_lib(1))")} + +Name: salt +Version: 0.7.0 +Release: 1%{?dist} +Summary: A parallel remote execution system + +Group: Development/Languages +License: APACHE +URL: https://github.com/thatch45/salt +Source0: %{name}-%{version}.tar.gz +Source1: salt-master +Source2: salt-minion +BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) + +Requires: python +Requires: PyYAML +Requires: facter +Requires: python-crypto +Requires: m2crypto +Requires: python-zmq + +BuildArch: noarch +BuildRequires: python-devel + +%description +A paralell remote execution system + +%prep +%setup -q + +%build + + +%install +rm -rf $RPM_BUILD_ROOT +%{__python} setup.py install -O1 --root $RPM_BUILD_ROOT +mkdir -p $RPM_BUILD_ROOT%{_initrddir} +cp -p %SOURCE1 $RPM_BUILD_ROOT%{_initrddir}/ +cp -p %SOURCE2 $RPM_BUILD_ROOT%{_initrddir}/ +chmod +x $RPM_BUILD_ROOT%{_initrddir}/ + +%clean +rm -rf $RPM_BUILD_ROOT + +%files +%defattr(-,root,root,-) +%doc %{_mandir}/* +%{python_sitelib}/* +%{_bindir}/* +%config(noreplace) /etc/salt/* +%{_initrddir}/* + +%changelog