Line 0
Link Here
|
0 |
- |
1 |
#!/sbin/openrc-run |
|
|
2 |
|
3 |
# make sure /etc/conf.d/ceph gets loaded for ceph-mon etc |
4 |
_CONFD_FILE="${RC_SERVICE%/*}/../conf.d/${RC_SVCNAME%-*}" |
5 |
if [ -r "${_CONFD_FILE}" ]; then |
6 |
. "${_CONFD_FILE}" || exit 1 |
7 |
fi |
8 |
|
9 |
: "${ceph_conf:=/etc/ceph/ceph.conf}" |
10 |
daemon_type="${RC_SVCNAME#ceph-}" |
11 |
daemon_type="${daemon_type%%.*}" |
12 |
daemon_id="${RC_SVCNAME#ceph-*.}" |
13 |
daemon_id="${daemon_id:-0}" |
14 |
: "${rundir:=/run/ceph}" |
15 |
: "${user:=ceph}" |
16 |
: "${group:=ceph}" |
17 |
: "${rc_ulimit:=-n 1048576 -u 1048576}" |
18 |
|
19 |
pidfile="${rundir}/supervisor-${daemon_type}.${daemon_id}.pid" |
20 |
daemon_pidfile="${rundir}/${daemon_type}.${daemon_id}.pid" |
21 |
|
22 |
command="/usr/bin/${RC_SVCNAME%%.*}" |
23 |
command_args="-i ${daemon_id} --pid-file ${daemon_pidfile} -c ${ceph_conf}" |
24 |
extra_commands="${extra_commands} reload" |
25 |
command_args_foreground="--foreground" |
26 |
|
27 |
retry="${CEPH_TERMTIMEOUT:-TERM/120/KILL/5}" |
28 |
start_stop_daemon_args="--user ${user} --group ${group}" |
29 |
supervise_daemon_args="--user ${user} --group ${group}" |
30 |
|
31 |
: "${supervisor:=supervise-daemon}" |
32 |
: "${stdout:=/var/log/ceph/ceph}" |
33 |
: "${stderr:=/var/log/ceph/ceph}" |
34 |
: "${respawn_delay:=10}" |
35 |
: "${respawn_max:=5}" |
36 |
: "${respawn_period:=1800}" |
37 |
|
38 |
: "${osd_respawn_delay:=15}" |
39 |
: "{osd_respawn_max:=10}" |
40 |
|
41 |
: "{radosgw_respawn_max:=5}" |
42 |
: "${radosgw_respawn_period:=30}" |
43 |
|
44 |
depend() { |
45 |
use dns logger |
46 |
after net ntpd ntp-client chronyd |
47 |
before netmount |
48 |
} |
49 |
|
50 |
is_type_valid() { |
51 |
case ${daemon_type} in |
52 |
mon|mds|osd|mgr|radosgw) return 0;; |
53 |
*) return 1;; |
54 |
esac |
55 |
} |
56 |
|
57 |
start_pre() { |
58 |
local log_dir |
59 |
export CEPH_CONF="${ceph_conf}" |
60 |
|
61 |
checkpath -d -q -o "${user}:${group}" "${rundir}" |
62 |
|
63 |
if ! is_type_valid ;then |
64 |
eerror "Please give valid Ceph Server Type: mds, mon, osd" |
65 |
return 1 |
66 |
|
67 |
elif pgrep -f "[c]eph-${daemon_type} -i ${daemon_id} "; then |
68 |
eerror "${daemon_type}.${daemon_id} is still running, refusing to start" |
69 |
return 1 |
70 |
fi |
71 |
|
72 |
if [ -n "${bluestore_osd_fsid}" ]; then |
73 |
einfo "Mounting Bluestore" |
74 |
ceph-volume lvm activate "${daemon_id}" "${bluestore_osd_fsid}" --no-systemd |
75 |
fi |
76 |
|
77 |
if [ "${daemon_type}" = radosgw ] && [ "${RADOSGW_WANT_NAME_PARAM}" = y ]; then |
78 |
command_args="${command_args} --name client.${daemon_id}" |
79 |
fi |
80 |
|
81 |
local arg_name arg_val repl_arg_name |
82 |
for arg_name in stdout stderr respawn_delay respawn_max respawn_period; do |
83 |
eval arg_val="\${${daemon_type}_${arg_name}}" |
84 |
|
85 |
if [ -z "${arg_val}" ]; then |
86 |
eval arg_val="\${${arg_name}}" |
87 |
else |
88 |
eval "${arg_name}=\"${arg_val}\"" |
89 |
fi |
90 |
|
91 |
if [ "${arg_name}" = "stderr" ] || [ "${arg_name}" = "stdout" ]; then |
92 |
local log_file log_postfix |
93 |
log_postfix=".${daemon_id}-${arg_name}.log" |
94 |
log_file="${arg_val}" |
95 |
|
96 |
if [ "${log_file}" != /dev/null ]; then |
97 |
log_file="${log_file}${log_postfix}" |
98 |
|
99 |
log_dir="$(dirname "${log_file}")" |
100 |
checkpath -m 0755 -o "${user}:${group}" -d "${log_dir}" |
101 |
fi |
102 |
|
103 |
repl_arg_name="$(printf -- "%s\n" "${arg_name}" | tr _ -)" |
104 |
supervise_daemon_args="${supervise_daemon_args} --${repl_arg_name}=${log_file}" |
105 |
fi |
106 |
done |
107 |
} |
108 |
|
109 |
reload() { |
110 |
ebegin "Reloading Ceph ${daemon_type}.${daemon_id}" |
111 |
start-stop-daemon --signal 1 "${start_stop_daemon_args}" |
112 |
eend ${?} |
113 |
} |
114 |
|
115 |
# vim:ft=gentoo-init-d:ts=4:sts=4:sw=4:noet: |