Make location of the /run directory configurable

fixes #6627
This commit is contained in:
Gunnar Beutner 2014-07-22 13:18:41 +02:00
parent f86068d5e0
commit a49a598eef
16 changed files with 53 additions and 20 deletions

View File

@ -31,10 +31,13 @@ endif()
file(STRINGS icinga2.spec VERSION_LINE REGEX "^Version: ") file(STRINGS icinga2.spec VERSION_LINE REGEX "^Version: ")
string(REPLACE "Version: " "" ICINGA2_VERSION ${VERSION_LINE}) string(REPLACE "Version: " "" ICINGA2_VERSION ${VERSION_LINE})
include(GNUInstallDirs)
set(ICINGA2_USER "icinga" CACHE STRING "Icinga 2 user") set(ICINGA2_USER "icinga" CACHE STRING "Icinga 2 user")
set(ICINGA2_GROUP "icinga" CACHE STRING "Icinga 2 group") set(ICINGA2_GROUP "icinga" CACHE STRING "Icinga 2 group")
set(ICINGA2_COMMAND_USER "icinga" CACHE STRING "Icinga 2 command user") set(ICINGA2_COMMAND_USER "icinga" CACHE STRING "Icinga 2 command user")
set(ICINGA2_COMMAND_GROUP "icingacmd" CACHE STRING "Icinga 2 command group") set(ICINGA2_COMMAND_GROUP "icingacmd" CACHE STRING "Icinga 2 command group")
set(ICINGA2_RUNDIR "${CMAKE_INSTALL_FULL_LOCALSTATEDIR}/run" CACHE STRING "/run directory")
set(ICINGA2_PLUGIN_PATH "/usr/lib/nagios/plugins" CACHE STRING "Path for the check plugins") set(ICINGA2_PLUGIN_PATH "/usr/lib/nagios/plugins" CACHE STRING "Path for the check plugins")
set(ICINGA2_GIT_VERSION_INFO ON CACHE BOOL "Whether to use git describe") set(ICINGA2_GIT_VERSION_INFO ON CACHE BOOL "Whether to use git describe")
@ -121,7 +124,6 @@ if(HAVE_LIBEXECINFO)
set(HAVE_BACKTRACE_SYMBOLS TRUE) set(HAVE_BACKTRACE_SYMBOLS TRUE)
endif() endif()
include(GNUInstallDirs)
configure_file(config.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config.h ESCAPE_QUOTES) configure_file(config.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config.h ESCAPE_QUOTES)
install( install(

View File

@ -127,6 +127,7 @@ variables are supported:
- ICINGA2_GIT_VERSION_INFO: Whether to use Git to determine the version number; defaults to "ON" - ICINGA2_GIT_VERSION_INFO: Whether to use Git to determine the version number; defaults to "ON"
- ICINGA2_COMMAND_GROUP: The command group Icinga 2 should use; defaults to "icingacmd" - ICINGA2_COMMAND_GROUP: The command group Icinga 2 should use; defaults to "icingacmd"
- ICINGA2_PLUGIN_PATH: The path for the Monitoring Plugins project binaries; defaults to "/usr/lib/nagios/plugins" - ICINGA2_PLUGIN_PATH: The path for the Monitoring Plugins project binaries; defaults to "/usr/lib/nagios/plugins"
- ICINGA2_RUNDIR: The location of the "run" directory; defaults to CMAKE_INSTALL_LOCALSTATEDIR/run
- CMAKE_INSTALL_SYSCONFDIR: The configuration directory; defaults to CMAKE_INSTALL_PREFIX/etc - CMAKE_INSTALL_SYSCONFDIR: The configuration directory; defaults to CMAKE_INSTALL_PREFIX/etc
- ICINGA2_SYSCONFIGFILE: Where to put the config file the initscript/systemd pulls it's dirs from; - ICINGA2_SYSCONFIGFILE: Where to put the config file the initscript/systemd pulls it's dirs from;
defaults to CMAKE_INSTALL_PREFIX/etc/sysconfig/icinga2 defaults to CMAKE_INSTALL_PREFIX/etc/sysconfig/icinga2

View File

@ -37,5 +37,5 @@ install(TARGETS compat RUNTIME DESTINATION ${CMAKE_INSTALL_SBINDIR} LIBRARY DEST
install(CODE "file(MAKE_DIRECTORY \"\$ENV{DESTDIR}${CMAKE_INSTALL_FULL_LOCALSTATEDIR}/log/icinga2/compat/archives\")") install(CODE "file(MAKE_DIRECTORY \"\$ENV{DESTDIR}${CMAKE_INSTALL_FULL_LOCALSTATEDIR}/log/icinga2/compat/archives\")")
install(CODE "file(MAKE_DIRECTORY \"\$ENV{DESTDIR}${CMAKE_INSTALL_FULL_LOCALSTATEDIR}/cache/icinga2\")") install(CODE "file(MAKE_DIRECTORY \"\$ENV{DESTDIR}${CMAKE_INSTALL_FULL_LOCALSTATEDIR}/cache/icinga2\")")
install(CODE "file(MAKE_DIRECTORY \"\$ENV{DESTDIR}${CMAKE_INSTALL_FULL_LOCALSTATEDIR}/spool/icinga2\")") install(CODE "file(MAKE_DIRECTORY \"\$ENV{DESTDIR}${CMAKE_INSTALL_FULL_LOCALSTATEDIR}/spool/icinga2\")")
install(CODE "file(MAKE_DIRECTORY \"\$ENV{DESTDIR}${CMAKE_INSTALL_FULL_LOCALSTATEDIR}/run/icinga2/cmd\")") install(CODE "file(MAKE_DIRECTORY \"\$ENV{DESTDIR}${ICINGA2_RUNDIR}/icinga2/cmd\")")

View File

@ -7,7 +7,7 @@ namespace icinga
class ExternalCommandListener : DynamicObject class ExternalCommandListener : DynamicObject
{ {
[config] String command_path { [config] String command_path {
default {{{ return Application::GetLocalStateDir() + "/run/icinga2/cmd/icinga2.cmd"; }}} default {{{ return Application::GetRunDir() + "/icinga2/cmd/icinga2.cmd"; }}}
}; };
}; };

View File

@ -9,7 +9,7 @@ class LivestatusListener : DynamicObject {
default {{{ return "unix"; }}} default {{{ return "unix"; }}}
}; };
[config] String socket_path { [config] String socket_path {
default {{{ return Application::GetLocalStateDir() + "/run/icinga2/cmd/livestatus"; }}} default {{{ return Application::GetRunDir() + "/icinga2/cmd/livestatus"; }}}
}; };
[config] String bind_host { [config] String bind_host {
default {{{ return "127.0.0.1"; }}} default {{{ return "127.0.0.1"; }}}

View File

@ -9,6 +9,7 @@
#define ICINGA_PREFIX "${CMAKE_INSTALL_PREFIX}" #define ICINGA_PREFIX "${CMAKE_INSTALL_PREFIX}"
#define ICINGA_SYSCONFDIR "${CMAKE_INSTALL_FULL_SYSCONFDIR}" #define ICINGA_SYSCONFDIR "${CMAKE_INSTALL_FULL_SYSCONFDIR}"
#define ICINGA_RUNDIR "${ICINGA2_RUNDIR}"
#define ICINGA_LOCALSTATEDIR "${CMAKE_INSTALL_FULL_LOCALSTATEDIR}" #define ICINGA_LOCALSTATEDIR "${CMAKE_INSTALL_FULL_LOCALSTATEDIR}"
#define ICINGA_PKGDATADIR "${CMAKE_INSTALL_FULL_DATADIR}/icinga2" #define ICINGA_PKGDATADIR "${CMAKE_INSTALL_FULL_DATADIR}/icinga2"
#define ICINGA_INCLUDECONFDIR "${CMAKE_INSTALL_FULL_DATADIR}/icinga2/include" #define ICINGA_INCLUDECONFDIR "${CMAKE_INSTALL_FULL_DATADIR}/icinga2/include"

1
debian/rules vendored
View File

@ -22,6 +22,7 @@ override_dh_auto_configure:
dh_auto_configure -- \ dh_auto_configure -- \
-DCMAKE_INSTALL_LOCALSTATEDIR=/var \ -DCMAKE_INSTALL_LOCALSTATEDIR=/var \
-DCMAKE_INSTALL_SYSCONFDIR=/etc \ -DCMAKE_INSTALL_SYSCONFDIR=/etc \
-DICINGA2_RUNDIR=/run \
-DICINGA2_USER=nagios \ -DICINGA2_USER=nagios \
-DICINGA2_GROUP=nagios \ -DICINGA2_GROUP=nagios \
-DICINGA2_COMMAND_USER=nagios \ -DICINGA2_COMMAND_USER=nagios \

View File

@ -934,7 +934,7 @@ information in the check output (`-o`).
PluginDir + "/process_check_result", PluginDir + "/process_check_result",
"-H", "$host.name$", "-H", "$host.name$",
"-S", "$service.name$", "-S", "$service.name$",
"-c", LocalStateDir + "/run/icinga2/cmd/icinga2.cmd", "-c", RunDir + "/icinga2/cmd/icinga2.cmd",
"-r", "0", "-r", "0",
"-o", "Event Handler triggered in state '$service.state$' with output '$service.output$'." "-o", "Event Handler triggered in state '$service.state$' with output '$service.output$'."
] ]

View File

@ -10,6 +10,7 @@ PrefixDir |**Read-only.** Contains the installation prefix that was sp
SysconfDir |**Read-only.** Contains the path of the sysconf directory. Defaults to PrefixDir + "/etc". SysconfDir |**Read-only.** Contains the path of the sysconf directory. Defaults to PrefixDir + "/etc".
ZonesDir |**Read-only.** Contains the path of the zones.d directory. Defaults to SysconfDir + "/zones.d". ZonesDir |**Read-only.** Contains the path of the zones.d directory. Defaults to SysconfDir + "/zones.d".
LocalStateDir |**Read-only.** Contains the path of the local state directory. Defaults to PrefixDir + "/var". LocalStateDir |**Read-only.** Contains the path of the local state directory. Defaults to PrefixDir + "/var".
RunDir |**Read-only.** Contains the path of the run directory. Defaults to LocalStateDir + "/run".
PkgDataDir |**Read-only.** Contains the path of the package data directory. Defaults to PrefixDir + "/share/icinga2". PkgDataDir |**Read-only.** Contains the path of the package data directory. Defaults to PrefixDir + "/share/icinga2".
StatePath |**Read-write.** Contains the path of the Icinga 2 state file. Defaults to LocalStateDir + "/lib/icinga2/icinga2.state". StatePath |**Read-write.** Contains the path of the Icinga 2 state file. Defaults to LocalStateDir + "/lib/icinga2/icinga2.state".
PidPath |**Read-write.** Contains the path of the Icinga 2 PID file. Defaults to LocalStateDir + "/run/icinga2/icinga2.pid". PidPath |**Read-write.** Contains the path of the Icinga 2 PID file. Defaults to LocalStateDir + "/run/icinga2/icinga2.pid".
@ -1435,7 +1436,7 @@ Attributes:
socket\_type |**Optional.** Specifies the socket type. Can be either "tcp" or "unix". Defaults to "unix". socket\_type |**Optional.** Specifies the socket type. Can be either "tcp" or "unix". Defaults to "unix".
bind\_host |**Optional.** Only valid when socket\_type is "tcp". Host address to listen on for connections. Defaults to "127.0.0.1". bind\_host |**Optional.** Only valid when socket\_type is "tcp". Host address to listen on for connections. Defaults to "127.0.0.1".
bind\_port |**Optional.** Only valid when `socket_type` is "tcp". Port to listen on for connections. Defaults to 6558. bind\_port |**Optional.** Only valid when `socket_type` is "tcp". Port to listen on for connections. Defaults to 6558.
socket\_path |**Optional.** Only valid when `socket_type` is "unix". Specifies the path to the UNIX socket file. Defaults to LocalStateDir + "/run/icinga2/cmd/livestatus". socket\_path |**Optional.** Only valid when `socket_type` is "unix". Specifies the path to the UNIX socket file. Defaults to RunDir + "/icinga2/cmd/livestatus".
compat\_log\_path |**Optional.** Required for historical table queries. Requires `CompatLogger` feature enabled. Defaults to LocalStateDir + "/log/icinga2/compat" compat\_log\_path |**Optional.** Required for historical table queries. Requires `CompatLogger` feature enabled. Defaults to LocalStateDir + "/log/icinga2/compat"
> **Note** > **Note**
@ -1481,7 +1482,7 @@ Attributes:
Name |Description Name |Description
----------------|---------------- ----------------|----------------
command\_path |**Optional.** Path to the command pipe. Defaults to LocalStateDir + "/run/icinga2/cmd/icinga2.cmd". command\_path |**Optional.** Path to the command pipe. Defaults to RunDir + "/icinga2/cmd/icinga2.cmd".
### <a id="objecttype-compatlogger"></a> CompatLogger ### <a id="objecttype-compatlogger"></a> CompatLogger

View File

@ -28,6 +28,6 @@ if [ -f $ICINGA2_LOG ]; then
chown $ICINGA2_USER:$ICINGA2_COMMAND_GROUP $ICINGA2_LOG chown $ICINGA2_USER:$ICINGA2_COMMAND_GROUP $ICINGA2_LOG
fi fi
mkdir -p $ICINGA2_STATE_DIR/run/icinga2/cmd mkdir -p $ICINGA2_RUN_DIR/icinga2/cmd
chown $ICINGA2_USER:$ICINGA2_COMMAND_GROUP $ICINGA2_STATE_DIR/run/icinga2/cmd chown $ICINGA2_USER:$ICINGA2_COMMAND_GROUP $ICINGA2_RUN_DIR/icinga2/cmd
chmod 2755 $ICINGA2_STATE_DIR/run/icinga2/cmd chmod 2755 $ICINGA2_RUN_DIR/icinga2/cmd

View File

@ -7,7 +7,7 @@ Type=forking
EnvironmentFile=@ICINGA2_SYSCONFIGFILE@ EnvironmentFile=@ICINGA2_SYSCONFIGFILE@
ExecStartPre=@CMAKE_INSTALL_FULL_SBINDIR@/icinga2-prepare-dirs @ICINGA2_SYSCONFIGFILE@ ExecStartPre=@CMAKE_INSTALL_FULL_SBINDIR@/icinga2-prepare-dirs @ICINGA2_SYSCONFIGFILE@
ExecStart=@CMAKE_INSTALL_FULL_SBINDIR@/icinga2 -c ${ICINGA2_CONFIG_FILE} -d -e ${ICINGA2_ERROR_LOG} -u ${ICINGA2_USER} -g ${ICINGA2_GROUP} ExecStart=@CMAKE_INSTALL_FULL_SBINDIR@/icinga2 -c ${ICINGA2_CONFIG_FILE} -d -e ${ICINGA2_ERROR_LOG} -u ${ICINGA2_USER} -g ${ICINGA2_GROUP}
PIDFile=@CMAKE_INSTALL_FULL_LOCALSTATEDIR@/run/icinga2/icinga2.pid PIDFile=@ICINGA2_RUNDIR@/icinga2/icinga2.pid
ExecReload=/bin/kill -HUP $MAINPID ExecReload=/bin/kill -HUP $MAINPID
[Install] [Install]

View File

@ -1,7 +1,8 @@
DAEMON=@CMAKE_INSTALL_FULL_SBINDIR@/icinga2 DAEMON=@CMAKE_INSTALL_FULL_SBINDIR@/icinga2
ICINGA2_CONFIG_FILE=@CMAKE_INSTALL_FULL_SYSCONFDIR@/icinga2/icinga2.conf ICINGA2_CONFIG_FILE=@CMAKE_INSTALL_FULL_SYSCONFDIR@/icinga2/icinga2.conf
ICINGA2_RUN_DIR=@ICINGA2_RUNDIR@
ICINGA2_STATE_DIR=@CMAKE_INSTALL_FULL_LOCALSTATEDIR@ ICINGA2_STATE_DIR=@CMAKE_INSTALL_FULL_LOCALSTATEDIR@
ICINGA2_PID_FILE=@CMAKE_INSTALL_FULL_LOCALSTATEDIR@/run/icinga2/icinga2.pid ICINGA2_PID_FILE=$ICINGA2_RUN_DIR/icinga2/icinga2.pid
ICINGA2_ERROR_LOG=@CMAKE_INSTALL_FULL_LOCALSTATEDIR@/log/icinga2/error.log ICINGA2_ERROR_LOG=@CMAKE_INSTALL_FULL_LOCALSTATEDIR@/log/icinga2/error.log
ICINGA2_STARTUP_LOG=@CMAKE_INSTALL_FULL_LOCALSTATEDIR@/log/icinga2/startup.log ICINGA2_STARTUP_LOG=@CMAKE_INSTALL_FULL_LOCALSTATEDIR@/log/icinga2/startup.log
ICINGA2_LOG=@CMAKE_INSTALL_FULL_LOCALSTATEDIR@/log/icinga2/icinga2.log ICINGA2_LOG=@CMAKE_INSTALL_FULL_LOCALSTATEDIR@/log/icinga2/icinga2.log

View File

@ -40,4 +40,4 @@ install(
install(CODE "file(MAKE_DIRECTORY \"\$ENV{DESTDIR}${CMAKE_INSTALL_FULL_LOCALSTATEDIR}/log/icinga2\")") install(CODE "file(MAKE_DIRECTORY \"\$ENV{DESTDIR}${CMAKE_INSTALL_FULL_LOCALSTATEDIR}/log/icinga2\")")
install(CODE "file(MAKE_DIRECTORY \"\$ENV{DESTDIR}${CMAKE_INSTALL_FULL_LOCALSTATEDIR}/lib/icinga2\")") install(CODE "file(MAKE_DIRECTORY \"\$ENV{DESTDIR}${CMAKE_INSTALL_FULL_LOCALSTATEDIR}/lib/icinga2\")")
install(CODE "file(MAKE_DIRECTORY \"\$ENV{DESTDIR}${CMAKE_INSTALL_FULL_LOCALSTATEDIR}/run/icinga2\")") install(CODE "file(MAKE_DIRECTORY \"\$ENV{DESTDIR}${ICINGA2_RUNDIR}/icinga2\")")

View File

@ -300,6 +300,7 @@ int Main(void)
String prefix = (char *)pvData; String prefix = (char *)pvData;
Application::DeclarePrefixDir(prefix); Application::DeclarePrefixDir(prefix);
Application::DeclareSysconfDir(prefix + "\\etc"); Application::DeclareSysconfDir(prefix + "\\etc");
Application::DeclareRunDir(prefix + "\\var\\run");
Application::DeclareLocalStateDir(prefix + "\\var"); Application::DeclareLocalStateDir(prefix + "\\var");
Application::DeclarePkgDataDir(prefix + "\\share\\icinga2"); Application::DeclarePkgDataDir(prefix + "\\share\\icinga2");
Application::DeclareIncludeConfDir(prefix + "\\share\\icinga2\\include"); Application::DeclareIncludeConfDir(prefix + "\\share\\icinga2\\include");
@ -316,6 +317,7 @@ int Main(void)
#endif /* _WIN32 */ #endif /* _WIN32 */
Application::DeclarePrefixDir(ICINGA_PREFIX); Application::DeclarePrefixDir(ICINGA_PREFIX);
Application::DeclareSysconfDir(ICINGA_SYSCONFDIR); Application::DeclareSysconfDir(ICINGA_SYSCONFDIR);
Application::DeclareRunDir(ICINGA_RUNDIR);
Application::DeclareLocalStateDir(ICINGA_LOCALSTATEDIR); Application::DeclareLocalStateDir(ICINGA_LOCALSTATEDIR);
Application::DeclarePkgDataDir(ICINGA_PKGDATADIR); Application::DeclarePkgDataDir(ICINGA_PKGDATADIR);
Application::DeclareIncludeConfDir(ICINGA_INCLUDECONFDIR); Application::DeclareIncludeConfDir(ICINGA_INCLUDECONFDIR);
@ -380,7 +382,7 @@ int Main(void)
} }
Application::DeclareStatePath(Application::GetLocalStateDir() + "/lib/icinga2/icinga2.state"); Application::DeclareStatePath(Application::GetLocalStateDir() + "/lib/icinga2/icinga2.state");
Application::DeclarePidPath(Application::GetLocalStateDir() + "/run/icinga2/icinga2.pid"); Application::DeclarePidPath(Application::GetRunDir() + "/icinga2/icinga2.pid");
#ifndef _WIN32 #ifndef _WIN32
if (g_AppParams.count("group")) { if (g_AppParams.count("group")) {

View File

@ -459,6 +459,7 @@ void Application::DisplayVersionMessage(void)
<< "* Application version: " << GetVersion() << std::endl << "* Application version: " << GetVersion() << std::endl
<< "* Installation root: " << GetPrefixDir() << std::endl << "* Installation root: " << GetPrefixDir() << std::endl
<< "* Sysconf directory: " << GetSysconfDir() << std::endl << "* Sysconf directory: " << GetSysconfDir() << std::endl
<< "* Run directory: " << GetRunDir() << std::endl
<< "* Local state directory: " << GetLocalStateDir() << std::endl << "* Local state directory: " << GetLocalStateDir() << std::endl
<< "* Package data directory: " << GetPkgDataDir() << std::endl << "* Package data directory: " << GetPkgDataDir() << std::endl
<< "* State path: " << GetStatePath() << std::endl << "* State path: " << GetStatePath() << std::endl
@ -841,6 +842,26 @@ void Application::DeclareSysconfDir(const String& path)
ScriptVariable::Set("SysconfDir", path, false); ScriptVariable::Set("SysconfDir", path, false);
} }
/**
* Retrieves the path for the run dir.
*
* @returns The path.
*/
String Application::GetRunDir(void)
{
return ScriptVariable::Get("RunDir");
}
/**
* Sets the path of the run dir.
*
* @param path The new path.
*/
void Application::DeclareRunDir(const String& path)
{
ScriptVariable::Set("RunDir", path, false);
}
/** /**
* Retrieves the path for the local state dir. * Retrieves the path for the local state dir.
* *
@ -852,13 +873,13 @@ String Application::GetLocalStateDir(void)
} }
/** /**
* Sets the path of the zones dir. * Sets the path for the local state dir.
* *
* @param path The new path. * @param path The new path.
*/ */
void Application::DeclareZonesDir(const String& path) void Application::DeclareLocalStateDir(const String& path)
{ {
ScriptVariable::Set("ZonesDir", path, false); ScriptVariable::Set("LocalStateDir", path, false);
} }
/** /**
@ -872,13 +893,13 @@ String Application::GetZonesDir(void)
} }
/** /**
* Sets the path for the local state dir. * Sets the path of the zones dir.
* *
* @param path The new path. * @param path The new path.
*/ */
void Application::DeclareLocalStateDir(const String& path) void Application::DeclareZonesDir(const String& path)
{ {
ScriptVariable::Set("LocalStateDir", path, false); ScriptVariable::Set("ZonesDir", path, false);
} }
/** /**

View File

@ -87,6 +87,9 @@ public:
static String GetZonesDir(void); static String GetZonesDir(void);
static void DeclareZonesDir(const String& path); static void DeclareZonesDir(const String& path);
static String GetRunDir(void);
static void DeclareRunDir(const String& path);
static String GetLocalStateDir(void); static String GetLocalStateDir(void);
static void DeclareLocalStateDir(const String& path); static void DeclareLocalStateDir(const String& path);