From 058620c545ded78ffa8332aca2cec61f909d6705 Mon Sep 17 00:00:00 2001 From: omercier <32134301+omercier@users.noreply.github.com> Date: Fri, 8 Mar 2024 16:02:50 +0100 Subject: [PATCH] new(pkg): build the nrpe daemon as nrpe4 (#4931) --- .github/workflows/nrpe.yml | 6 +- nrpe/packaging/centreon-nrpe4-daemon.yaml | 92 +++++++++++++++++++ nrpe/packaging/files/nrpe4.deb.service | 23 +++++ nrpe/packaging/files/nrpe4.rpm.service | 23 +++++ nrpe/packaging/files/nrpe4.sysconfig | 2 + .../files/nrpe4_add_centreon_cmd.patch | 29 ++++++ .../centreon-nrpe4-daemon-postinstall.sh | 31 +++++++ .../centreon-nrpe4-daemon-preinstall.sh | 6 ++ .../centreon-nrpe4-daemon-preremove.sh | 3 + .../deb.json | 2 + .../rpm.json | 7 +- 11 files changed, 219 insertions(+), 5 deletions(-) create mode 100644 nrpe/packaging/centreon-nrpe4-daemon.yaml create mode 100644 nrpe/packaging/files/nrpe4.deb.service create mode 100644 nrpe/packaging/files/nrpe4.rpm.service create mode 100644 nrpe/packaging/files/nrpe4.sysconfig create mode 100644 nrpe/packaging/files/nrpe4_add_centreon_cmd.patch create mode 100644 nrpe/packaging/scripts/centreon-nrpe4-daemon-postinstall.sh create mode 100644 nrpe/packaging/scripts/centreon-nrpe4-daemon-preinstall.sh create mode 100644 nrpe/packaging/scripts/centreon-nrpe4-daemon-preremove.sh diff --git a/.github/workflows/nrpe.yml b/.github/workflows/nrpe.yml index c51017cdd..7b542e1a4 100644 --- a/.github/workflows/nrpe.yml +++ b/.github/workflows/nrpe.yml @@ -20,7 +20,7 @@ jobs: get-environment: uses: ./.github/workflows/get-environment.yml with: - version_file: nrpe/packaging/centreon-nrpe3-daemon.yaml + version_file: nrpe/packaging/centreon-nrpe4-daemon.yaml package: needs: [get-environment] @@ -59,7 +59,7 @@ jobs: - name: Download nrpe sources run: | - curl -Lo - "https://github.com/NagiosEnterprises/nrpe/releases/download/nrpe-${{ needs.get-environment.outputs.version }}/nrpe-${{ needs.get-environment.outputs.version }}.tar.gz" | tar zxpf - + curl -sLo - "https://github.com/NagiosEnterprises/nrpe/releases/download/nrpe-${{ needs.get-environment.outputs.version }}/nrpe-${{ needs.get-environment.outputs.version }}.tar.gz" | tar zxpf - mv nrpe-${{ needs.get-environment.outputs.version }} nrpe-src shell: bash @@ -67,7 +67,7 @@ jobs: run: | cd nrpe-src - patch -p1 < ../nrpe/packaging/files/nrpe3_add_centreon_cmd.patch + patch -p1 < ../nrpe/packaging/files/nrpe4_add_centreon_cmd.patch if [ "${{ matrix.package_extension }}" = "deb" ]; then NAGIOS_PLUGINS_PATH="/usr/lib/nagios/plugins" diff --git a/nrpe/packaging/centreon-nrpe4-daemon.yaml b/nrpe/packaging/centreon-nrpe4-daemon.yaml new file mode 100644 index 000000000..acf50c8c5 --- /dev/null +++ b/nrpe/packaging/centreon-nrpe4-daemon.yaml @@ -0,0 +1,92 @@ +name: "centreon-nrpe4-daemon" +arch: "amd64" +platform: "linux" +version_schema: "none" +version: "4.1.0" +release: "${RELEASE}${DIST}" +section: "default" +priority: "optional" +maintainer: "Centreon " +description: | + The centreon-nrpe packages contains the Nagios Remote Plug-ins Executor. + Daemon which can execute predefined commands on the remote host. + Commit: @COMMIT_HASH@ +vendor: "Centreon" +homepage: "https://centreon.com" +license: "GPLv2+" + +contents: + - src: "../../nrpe-src/src/nrpe" + dst: "/usr/sbin/centreon-nrpe4" + + - src: "../../nrpe-src/sample-config/nrpe.cfg" + dst: "/etc/nrpe/centreon-nrpe4.cfg" + type: config|noreplace + file_info: + mode: 0644 + + - src: "files/nrpe4.sysconfig" + dst: "/etc/sysconfig/centreon-nrpe4" + packager: rpm + file_info: + mode: 0644 + - src: "files/nrpe4.sysconfig" + dst: "/etc/default/centreon-nrpe4" + packager: deb + file_info: + mode: 0644 + + - src: "files/nrpe4.rpm.service" + dst: "/lib/systemd/system/centreon-nrpe4.service" + packager: rpm + file_info: + mode: 0644 + - src: "files/nrpe4.deb.service" + dst: "/lib/systemd/system/centreon-nrpe4.service" + packager: deb + file_info: + mode: 0644 + + - dst: "/var/log/nrpe" + type: dir + file_info: + mode: 0755 + owner: centreon-engine + group: centreon-engine + + - dst: "/var/log/nrpe/centplugins" + type: dir + file_info: + mode: 0755 + owner: centreon-engine + group: centreon-engine + +scripts: + preinstall: ./scripts/centreon-nrpe4-daemon-preinstall.sh + postinstall: ./scripts/centreon-nrpe4-daemon-postinstall.sh + preremove: ./scripts/centreon-nrpe4-daemon-preremove.sh + +overrides: + rpm: + replaces: + - centreon-nrpe4-daemon-debuginfo + - centreon-nrpe4-daemon-debugsource + conflicts: + - centreon-nrpe4-daemon-debuginfo + - centreon-nrpe4-daemon-debugsource + provides: + - centreon-nrpe4-daemon-debuginfo + - centreon-nrpe4-daemon-debugsource + deb: + replaces: + - centreon-nrpe4-daemon-dbgsym + conflicts: + - centreon-nrpe4-daemon-dbgsym + provides: + - centreon-nrpe4-daemon-dbgsym + +rpm: + summary: Nagios Remote Plugins Execution daemon + signature: + key_file: ${RPM_SIGNING_KEY_FILE} + key_id: ${RPM_SIGNING_KEY_ID} diff --git a/nrpe/packaging/files/nrpe4.deb.service b/nrpe/packaging/files/nrpe4.deb.service new file mode 100644 index 000000000..cbcb430b6 --- /dev/null +++ b/nrpe/packaging/files/nrpe4.deb.service @@ -0,0 +1,23 @@ +[Unit] +Description=Nagios Remote Program Executor +Documentation=http://www.nagios.org/documentation +After=var-run.mount nss-lookup.target network.target local-fs.target time-sync.target +Before=getty@tty1.service plymouth-quit.service xdm.service +Conflicts=nrpe.socket +Requires=network.target + +[Service] +Type=forking +User=centreon-engine +Group=centreon-engine +EnvironmentFile=/etc/default/centreon-nrpe4 +ExecStart=/usr/sbin/centreon-nrpe4 -c /etc/nrpe/centreon-nrpe4.cfg -d $NRPE_OPT +Restart=on-abort +PIDFile=/var/log/nrpe/nrpe4.pid +ExecStopPost=/bin/rm -f /var/log/nrpe/nrpe4.pid +TimeoutStopSec=60 +PrivateTmp=false +OOMScoreAdjust=-500 + +[Install] +WantedBy=multi-user.target diff --git a/nrpe/packaging/files/nrpe4.rpm.service b/nrpe/packaging/files/nrpe4.rpm.service new file mode 100644 index 000000000..c4b8b6e03 --- /dev/null +++ b/nrpe/packaging/files/nrpe4.rpm.service @@ -0,0 +1,23 @@ +[Unit] +Description=Nagios Remote Program Executor +Documentation=http://www.nagios.org/documentation +After=var-run.mount nss-lookup.target network.target local-fs.target time-sync.target +Before=getty@tty1.service plymouth-quit.service xdm.service +Conflicts=nrpe.socket +Requires=network.target + +[Service] +Type=forking +User=centreon-engine +Group=centreon-engine +EnvironmentFile=/etc/sysconfig/centreon-nrpe4 +ExecStart=/usr/sbin/centreon-nrpe4 -c /etc/nrpe/centreon-nrpe4.cfg -d $NRPE_OPT +Restart=on-abort +PIDFile=/var/log/nrpe/nrpe4.pid +ExecStopPost=/bin/rm -f /var/log/nrpe/nrpe4.pid +TimeoutStopSec=60 +PrivateTmp=false +OOMScoreAdjust=-500 + +[Install] +WantedBy=multi-user.target diff --git a/nrpe/packaging/files/nrpe4.sysconfig b/nrpe/packaging/files/nrpe4.sysconfig new file mode 100644 index 000000000..a1fe957b4 --- /dev/null +++ b/nrpe/packaging/files/nrpe4.sysconfig @@ -0,0 +1,2 @@ +# specify additional command line arguments for nrpe +NRPE_OPT="" diff --git a/nrpe/packaging/files/nrpe4_add_centreon_cmd.patch b/nrpe/packaging/files/nrpe4_add_centreon_cmd.patch new file mode 100644 index 000000000..7fed46e5f --- /dev/null +++ b/nrpe/packaging/files/nrpe4_add_centreon_cmd.patch @@ -0,0 +1,29 @@ +--- a/sample-config/nrpe.cfg.in 2018-09-14 13:40:08.496324915 +0200 ++++ b/sample-config/nrpe.cfg.in 2018-09-14 13:47:57.624296953 +0200 +@@ -40,7 +40,7 @@ + # number. The file is only written if the NRPE daemon is started by the root + # user and is running in standalone mode. + +-pid_file=@piddir@/nrpe.pid ++pid_file=@piddir@/nrpe4.pid + + + +@@ -119,7 +119,7 @@ + # + # Values: 0=do not allow arguments, 1=allow command arguments + +-dont_blame_nrpe=0 ++dont_blame_nrpe=1 + + + +@@ -300,7 +300,7 @@ + command[check_hda1]=@pluginsdir@/check_disk -w 20% -c 10% -p /dev/hda1 + command[check_zombie_procs]=@pluginsdir@/check_procs -w 5 -c 10 -s Z + command[check_total_procs]=@pluginsdir@/check_procs -w 150 -c 200 +- ++command[check_centreon_plugins]=/usr/lib/centreon/plugins/centreon_linux_local.pl --plugin=$ARG1$ --mode=$ARG2$ $ARG3$ + + # The following examples allow user-supplied arguments and can + # only be used if the NRPE daemon was compiled with support for diff --git a/nrpe/packaging/scripts/centreon-nrpe4-daemon-postinstall.sh b/nrpe/packaging/scripts/centreon-nrpe4-daemon-postinstall.sh new file mode 100644 index 000000000..962391866 --- /dev/null +++ b/nrpe/packaging/scripts/centreon-nrpe4-daemon-postinstall.sh @@ -0,0 +1,31 @@ +#!/bin/sh + +startNrpeDaemon() { + systemctl daemon-reload ||: + systemctl unmask centreon-nrpe4.service ||: + systemctl preset centreon-nrpe4.service ||: + systemctl enable centreon-nrpe4.service ||: + systemctl restart centreon-nrpe4.service ||: +} + +action="$1" +if [ "$1" = "configure" ] && [ -z "$2" ]; then + # Alpine linux does not pass args, and deb passes $1=configure + action="install" +elif [ "$1" = "configure" ] && [ -n "$2" ]; then + # deb passes $1=configure $2= + action="upgrade" +fi + +case "$action" in + "1" | "install") + startNrpeDaemon + ;; + "2" | "upgrade") + startNrpeDaemon + ;; + *) + # $1 == version being installed + startNrpeDaemon + ;; +esac diff --git a/nrpe/packaging/scripts/centreon-nrpe4-daemon-preinstall.sh b/nrpe/packaging/scripts/centreon-nrpe4-daemon-preinstall.sh new file mode 100644 index 000000000..e15030f85 --- /dev/null +++ b/nrpe/packaging/scripts/centreon-nrpe4-daemon-preinstall.sh @@ -0,0 +1,6 @@ +#!/bin/sh + +getent group centreon-engine > /dev/null 2>&1 || groupadd -r centreon-engine +getent passwd centreon-engine > /dev/null 2>&1 || useradd -g centreon-engine --shell /bin/bash -m -d /var/lib/centreon-engine -r centreon-engine > /dev/null 2>&1 ||: +mkdir -p /var/lib/centreon/centplugins/ +chown centreon-engine: /var/lib/centreon/centplugins/ diff --git a/nrpe/packaging/scripts/centreon-nrpe4-daemon-preremove.sh b/nrpe/packaging/scripts/centreon-nrpe4-daemon-preremove.sh new file mode 100644 index 000000000..7bcbd7bea --- /dev/null +++ b/nrpe/packaging/scripts/centreon-nrpe4-daemon-preremove.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +systemctl stop centreon-nrpe4.service ||: diff --git a/packaging/centreon-plugin-Operatingsystems-Linux-Local/deb.json b/packaging/centreon-plugin-Operatingsystems-Linux-Local/deb.json index 8b49667cf..5c7b077db 100644 --- a/packaging/centreon-plugin-Operatingsystems-Linux-Local/deb.json +++ b/packaging/centreon-plugin-Operatingsystems-Linux-Local/deb.json @@ -1,5 +1,7 @@ { "dependencies": [ + "libdatetime-perl", + "libxml-libxml-perl", "net-tools", "quota" ] diff --git a/packaging/centreon-plugin-Operatingsystems-Linux-Local/rpm.json b/packaging/centreon-plugin-Operatingsystems-Linux-Local/rpm.json index 9804af008..f2003e275 100644 --- a/packaging/centreon-plugin-Operatingsystems-Linux-Local/rpm.json +++ b/packaging/centreon-plugin-Operatingsystems-Linux-Local/rpm.json @@ -2,9 +2,12 @@ "dependencies": [ "net-tools", "quota", + "lsof", "perl(Data::Dumper)", - "perl(Pod::Parser)", + "perl(DateTime)", "perl(Digest::MD5)", - "perl(NetAddr::IP)" + "perl(NetAddr::IP)", + "perl(Pod::Parser)", + "perl(XML::LibXML)" ] }