mirror of
https://github.com/ceph/ceph
synced 2024-12-27 22:13:28 +00:00
radosgw systemd support
Added a radosgw systemd support and associated prestart script. - With improved checking over first revison. - ceph-radosgw-prestart.sh now installed in /usr/lib/ceph-radosgw Signed-off-by: Owen Synge <osynge@suse.com>
This commit is contained in:
parent
ef961be507
commit
fbc85e3ce1
100
src/ceph-radosgw-prestart.sh
Normal file
100
src/ceph-radosgw-prestart.sh
Normal file
@ -0,0 +1,100 @@
|
||||
#!/bin/bash
|
||||
|
||||
eval set -- "$(getopt -o n: --long name:,cluster: -- $@)"
|
||||
|
||||
while true ; do
|
||||
case "$1" in
|
||||
-n|--name) name=$2; shift 2 ;;
|
||||
--cluster) cluster=$2; shift 2 ;;
|
||||
--) shift ; break ;;
|
||||
esac
|
||||
done
|
||||
|
||||
CEPHCONF=`which ceph-conf`
|
||||
RADOSGW=`which radosgw`
|
||||
|
||||
if [ -z "${CEPHCONF}" ]; then
|
||||
CEPHCONF=/usr/bin/${CEPHCONF}
|
||||
fi
|
||||
|
||||
if [ ! -x "${CEPHCONF}" ]; then
|
||||
echo "${CEPHCONF} could not start, it is not executable."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ -z "$RADOSGW" ]; then
|
||||
RADOSGW=/usr/bin/radosgw
|
||||
fi
|
||||
|
||||
if [ ! -x "$RADOSGW" ]; then
|
||||
echo "$RADOSGW could not start, it is not executable."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# prefix for radosgw instances in ceph.conf
|
||||
PREFIX='client.radosgw.'
|
||||
|
||||
if [ -z "$name" ]; then
|
||||
echo "no name paramter"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ -z "$cluster" ]; then
|
||||
cluster="ceph"
|
||||
fi
|
||||
|
||||
ceph_conf_file="/etc/ceph/${cluster}.conf"
|
||||
|
||||
if [ ! -f "${ceph_conf_file}" ] ; then
|
||||
echo "ceph config file not found: $ceph_conf_file"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
longname=${PREFIX}${name}
|
||||
testname=$(${CEPHCONF} -c ${ceph_conf_file} --list-sections $PREFIX | grep $longname )
|
||||
|
||||
if [ -z "$testname" ]; then
|
||||
echo "error parsing '$name' : valid types are: $(echo $(${CEPHCONF} -c ${ceph_conf_file} --list-sections $PREFIX | sed s/$PREFIX//))"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
auto_start=`${CEPHCONF} -c ${ceph_conf_file} -n $longname 'auto start'`
|
||||
if [ "$auto_start" = "no" ] || [ "$auto_start" = "false" ] || [ "$auto_start" = "0" ]; then
|
||||
echo "ceph.conf:[$longname], says not to start."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# is the socket defined? if it's not, this instance shouldn't run as a daemon.
|
||||
rgw_socket=`$RADOSGW -c ${ceph_conf_file} -n $longname --show-config-value rgw_socket_path`
|
||||
if [ -z "$rgw_socket" ]; then
|
||||
echo "socket $rgw_socket could not be found in ceph.conf:[$longname], not starting."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# mapped to this host?
|
||||
host=`${CEPHCONF} -c ${ceph_conf_file} -n $longname host`
|
||||
hostname=`hostname -s`
|
||||
if [ "$host" != "$hostname" ]; then
|
||||
echo "hostname $hostname could not be found in ceph.conf:[$longname], not starting."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
user=`${CEPHCONF} -c ${ceph_conf_file} -n $longname user`
|
||||
if [ -n "$user" ]; then
|
||||
if [ "$USER" != "$user" ]; then
|
||||
echo "enviroment \$USER '$USER' does not match '$longname' user '$user'"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
|
||||
log_file=`$RADOSGW -c ${ceph_conf_file} -n $longname --show-config-value log_file`
|
||||
if [ -n "$log_file" ]; then
|
||||
if [ ! -f "$log_file" ]; then
|
||||
touch "$log_file"
|
||||
touchrc=$?
|
||||
if [ 0 != $touchrc ] ; then
|
||||
exit $touchrc
|
||||
fi
|
||||
fi
|
||||
fi
|
15
systemd/ceph-radosgw@.service
Normal file
15
systemd/ceph-radosgw@.service
Normal file
@ -0,0 +1,15 @@
|
||||
[Unit]
|
||||
Description=Ceph rados gateway
|
||||
After=network-online.target local-fs.target
|
||||
Wants=network-online.target local-fs.target
|
||||
PartOf=ceph.target
|
||||
|
||||
[Service]
|
||||
EnvironmentFile=-/etc/sysconfig/ceph
|
||||
Environment=CLUSTER=ceph
|
||||
ExecStart=/usr/bin/radosgw -f --conf /etc/ceph/${CLUSTER}.conf --name client.radosgw.%i
|
||||
ExecStartPre=/usr/lib/ceph-radosgw/ceph-radosgw-prestart.sh --cluster ${CLUSTER} --name %i
|
||||
User=wwwrun
|
||||
|
||||
[Install]
|
||||
WantedBy=ceph.target
|
Loading…
Reference in New Issue
Block a user