diff --git a/CMakeLists.txt b/CMakeLists.txt index 41904bffd0f..884fc283479 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1205,11 +1205,13 @@ if(${CMAKE_SYSTEM_NAME} MATCHES "Windows") set(FLB_INSTALL_BINDIR "bin") set(FLB_INSTALL_LIBDIR "lib") set(FLB_INSTALL_CONFDIR "conf") + set(FLB_INSTALL_INITDIR "init.d") set(FLB_INSTALL_INCLUDEDIR "include") else() set(FLB_INSTALL_BINDIR ${CMAKE_INSTALL_FULL_BINDIR}) set(FLB_INSTALL_LIBDIR "${CMAKE_INSTALL_LIBDIR}/${FLB_OUT_NAME}") set(FLB_INSTALL_CONFDIR "${CMAKE_INSTALL_SYSCONFDIR}/${FLB_OUT_NAME}/") + set(FLB_INSTALL_INITDIR "/etc/init.d/") set(FLB_INSTALL_INCLUDEDIR "${CMAKE_INSTALL_PREFIX}/include") endif() @@ -1290,6 +1292,9 @@ if(DPKG_PROGRAM) set(CPACK_DEBIAN_RUNTIME_FILE_NAME "${CPACK_PACKAGE_NAME}_${CPACK_PACKAGE_VERSION}_${CPACK_DEBIAN_PACKAGE_ARCHITECTURE}.deb") set(CPACK_DEBIAN_RUNTIME_PACKAGE_CONTROL_EXTRA ${PROJECT_SOURCE_DIR}/cpack/debian/conffiles + ${PROJECT_SOURCE_DIR}/cpack/debian/prerm + ${PROJECT_SOURCE_DIR}/cpack/debian/postinst + ${PROJECT_SOURCE_DIR}/cpack/debian/postrm ) if(FLB_RUN_LDCONFIG) diff --git a/conf/fluent-bit b/conf/fluent-bit new file mode 100755 index 00000000000..01ca5ae4778 --- /dev/null +++ b/conf/fluent-bit @@ -0,0 +1,75 @@ +#!/bin/sh + +### BEGIN INIT INFO +# Provides: fluent-bit +# Required-Start: $local_fs $remote_fs $network $syslog $named +# Required-Stop: $local_fs $remote_fs $network $syslog $named +# Default-Start: 2 3 4 5 +# Default-Stop: 0 1 6 +# Short-Description: starts the fluent-bit service +# Description: starts fluent-bit using start-stop-daemon +### END INIT INFO + +PATH=/opt/fluent-bit/bin/:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin +DAEMON=/opt/fluent-bit/bin/fluent-bit +NAME=fluent-bit + +start_fluent_bit() { + # Start the daemon/service + # + # Returns: + # 0 if daemon has been started + # 1 if daemon was already running + # 2 if daemon could not be started + start-stop-daemon --start --quiet --exec $DAEMON 2>/dev/null || return 2 +} + +test_config() { + # Test the fluent_bit configuration + $DAEMON --dry-run -c /etc/fluent-bit/fluent-bit.conf +} + +stop_fluent_bit() { + # Stops the daemon/service + # + # Return + # 0 if daemon has been stopped + # 1 if daemon was already stopped + # 2 if daemon could not be stopped + # other if a failure occurred + start-stop-daemon --stop --quiet --name $NAME +} + +case "$1" in + start) + start_fluent_bit + ;; + stop) + stop_fluent_bit + ;; + restart) + + # Check configuration before stopping fluent_bit + if ! test_config; then + exit $? + fi + + stop_fluent_bit + case "$?" in + 0|1) + start_fluent_bit + ;; + *) + # Failed to stop + ;; + esac + ;; + configtest|testconfig) + test_config + ;; + *) + echo "Usage: $NAME {start|stop|restart|reload|force-reload|status|configtest}" >&2 + exit 3 + ;; +esac + diff --git a/cpack/debian/postinst b/cpack/debian/postinst new file mode 100755 index 00000000000..8335c196384 --- /dev/null +++ b/cpack/debian/postinst @@ -0,0 +1,33 @@ +#!/bin/sh + +set -e + +case "${1}" in + configure) + chmod +x /etc/init.d/fluent-bit + ;; + + abort-upgrade|abort-remove|abort-deconfigure) + + ;; + + *) + echo "postinst called with unknown argument \`${1}'" >&2 + exit 1 + ;; +esac + +if [ "$1" = "configure" ] || [ "$1" = "abort-upgrade" ] || [ "$1" = "abort-deconfigure" ] || [ "$1" = "abort-remove" ] ; then + if [ -x "/etc/init.d/fluent-bit" ]; then + update-rc.d fluent-bit defaults >/dev/null + if [ -n "$2" ]; then + _dh_action=restart + else + _dh_action=start + fi + invoke-rc.d fluent-bit $_dh_action || exit 1 + fi +fi + + +exit 0 diff --git a/cpack/debian/postrm b/cpack/debian/postrm new file mode 100755 index 00000000000..3ac41988b77 --- /dev/null +++ b/cpack/debian/postrm @@ -0,0 +1,25 @@ +#!/bin/sh + +set -e + +case "${1}" in + remove) + + ;; + + purge|upgrade|failed-upgrade|abort-install|abort-upgrade|disappear) + + ;; + + *) + echo "postrm called with unknown argument \`${1}'" >&2 + exit 1 + ;; +esac + +if [ "$1" = "purge" ] ; then + update-rc.d fluent-bit remove >/dev/null +fi + + +exit 0 diff --git a/cpack/debian/prerm b/cpack/debian/prerm new file mode 100755 index 00000000000..50259eae318 --- /dev/null +++ b/cpack/debian/prerm @@ -0,0 +1,6 @@ +#!/bin/sh +set -e + +if [ -x "/etc/init.d/fluent-bit" ] && [ "$1" = remove ]; then + invoke-rc.d fluent-bit stop || exit 1 +fi diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 41f89a0d780..9ebfdc28080 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -600,4 +600,9 @@ if(FLB_BINARY) COMPONENT binary DESTINATION ${FLB_INSTALL_CONFDIR}) + install(FILES + "${PROJECT_SOURCE_DIR}/conf/fluent-bit" + COMPONENT binary + DESTINATION ${FLB_INSTALL_INITDIR}) + endif()