mirror of
https://github.com/centreon/centreon-plugins.git
synced 2025-07-27 07:34:35 +02:00
CTOR-1656-move-centreon-plugins-sudoers-to-centreon-plugin-repository (#5598)
Co-authored-by: Kevin Duret <kduret@centreon.com>
This commit is contained in:
parent
1e61535258
commit
eec431c060
131
.github/workflows/centreon-plugins-sudoers.yml
vendored
Normal file
131
.github/workflows/centreon-plugins-sudoers.yml
vendored
Normal file
@ -0,0 +1,131 @@
|
||||
name: centreon-plugins-sudoers
|
||||
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
|
||||
cancel-in-progress: true
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
pull_request:
|
||||
paths:
|
||||
- "dependencies/centreon-plugins-sudoers/**"
|
||||
push:
|
||||
branches:
|
||||
- develop
|
||||
- master
|
||||
paths:
|
||||
- "dependencies/centreon-plugins-sudoers/**"
|
||||
|
||||
env:
|
||||
module_name: centreon-plugins-sudoers
|
||||
jobs:
|
||||
get-environment:
|
||||
uses: ./.github/workflows/get-environment.yml
|
||||
|
||||
package:
|
||||
needs: [get-environment]
|
||||
if: |
|
||||
needs.get-environment.outputs.skip_workflow == 'false' &&
|
||||
needs.get-environment.outputs.stability != 'stable'
|
||||
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
include:
|
||||
- image: packaging-plugins-alma8
|
||||
distrib: el8
|
||||
package_extension: rpm
|
||||
- image: packaging-plugins-alma9
|
||||
distrib: el9
|
||||
package_extension: rpm
|
||||
- image: packaging-plugins-bullseye
|
||||
distrib: bullseye
|
||||
package_extension: deb
|
||||
- image: packaging-plugins-bookworm
|
||||
distrib: bookworm
|
||||
package_extension: deb
|
||||
- image: packaging-plugins-jammy
|
||||
distrib: jammy
|
||||
package_extension: deb
|
||||
- image: packaging-plugins-noble
|
||||
distrib: noble
|
||||
package_extension: deb
|
||||
|
||||
runs-on: ubuntu-24.04
|
||||
|
||||
container:
|
||||
image: ${{ vars.DOCKER_INTERNAL_REGISTRY_URL }}/${{ matrix.image }}:latest
|
||||
credentials:
|
||||
username: ${{ secrets.HARBOR_CENTREON_PULL_USERNAME }}
|
||||
password: ${{ secrets.HARBOR_CENTREON_PULL_TOKEN }}
|
||||
|
||||
name: package ${{ matrix.distrib }}
|
||||
|
||||
steps:
|
||||
- name: Checkout sources
|
||||
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
|
||||
|
||||
- name: Package
|
||||
uses: ./.github/actions/package-nfpm
|
||||
with:
|
||||
nfpm_file_pattern: "dependencies/centreon-plugins-sudoers/centreon-plugins-sudoers.yaml"
|
||||
distrib: ${{ matrix.distrib }}
|
||||
package_extension: ${{ matrix.package_extension }}
|
||||
version: ${{ needs.get-environment.outputs.version }}
|
||||
release: ${{ needs.get-environment.outputs.release }}
|
||||
arch: all
|
||||
commit_hash: ${{ github.sha }}
|
||||
cache_key: cache-${{ github.run_id }}-${{ matrix.package_extension }}-${{ env.module_name }}-${{ matrix.distrib }}
|
||||
rpm_gpg_key: ${{ secrets.RPM_GPG_SIGNING_KEY }}
|
||||
rpm_gpg_signing_key_id: ${{ secrets.RPM_GPG_SIGNING_KEY_ID }}
|
||||
rpm_gpg_signing_passphrase: ${{ secrets.RPM_GPG_SIGNING_PASSPHRASE }}
|
||||
stability: ${{ needs.get-environment.outputs.stability }}
|
||||
|
||||
deliver-packages:
|
||||
needs: [get-environment, package]
|
||||
if: |
|
||||
(contains(fromJson('["testing", "unstable"]'), needs.get-environment.outputs.stability) || ( needs.get-environment.outputs.stability == 'stable' && github.event_name != 'workflow_dispatch')) &&
|
||||
! cancelled() &&
|
||||
! contains(needs.*.result, 'failure') &&
|
||||
! contains(needs.*.result, 'cancelled')
|
||||
runs-on: ubuntu-24.04
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
include:
|
||||
- distrib: el8
|
||||
package_extension: rpm
|
||||
- distrib: el9
|
||||
package_extension: rpm
|
||||
- distrib: bullseye
|
||||
package_extension: deb
|
||||
- distrib: bookworm
|
||||
package_extension: deb
|
||||
- distrib: jammy
|
||||
package_extension: deb
|
||||
- distrib: noble
|
||||
package_extension: deb
|
||||
|
||||
name: deliver ${{ matrix.distrib }}
|
||||
steps:
|
||||
- name: Checkout sources
|
||||
uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938 # v4.2.0
|
||||
|
||||
- name: Delivery
|
||||
uses: ./.github/actions/package-delivery
|
||||
with:
|
||||
module_name: ${{ env.module_name }}
|
||||
distrib: ${{ matrix.distrib }}
|
||||
cache_key: cache-${{ github.run_id }}-${{ matrix.package_extension }}-${{ env.module_name }}-${{ matrix.distrib }}
|
||||
stability: ${{ needs.get-environment.outputs.stability }}
|
||||
release_type: ${{ needs.get-environment.outputs.release_type }}
|
||||
artifactory_token: ${{ secrets.ARTIFACTORY_ACCESS_TOKEN }}
|
||||
|
||||
set-skip-label:
|
||||
needs: [get-environment, deliver-packages]
|
||||
if: |
|
||||
needs.get-environment.outputs.skip_workflow == 'false' &&
|
||||
! cancelled() &&
|
||||
! contains(needs.*.result, 'failure') &&
|
||||
! contains(needs.*.result, 'cancelled')
|
||||
uses: ./.github/workflows/set-pull-request-skip-label.yml
|
40
dependencies/centreon-plugins-sudoers/centreon-plugins-sudoers.yaml
vendored
Normal file
40
dependencies/centreon-plugins-sudoers/centreon-plugins-sudoers.yaml
vendored
Normal file
@ -0,0 +1,40 @@
|
||||
name: "centreon-plugins-sudoers"
|
||||
arch: "all"
|
||||
platform: "linux"
|
||||
version_schema: "none"
|
||||
version: "${VERSION}"
|
||||
release: "${RELEASE}${DIST}"
|
||||
section: "default"
|
||||
priority: "optional"
|
||||
maintainer: "Centreon <contact@centreon.com>"
|
||||
description: |
|
||||
Sudoers configuration for centreon plugins
|
||||
Commit: @COMMIT_HASH@
|
||||
vendor: "Centreon"
|
||||
homepage: "https://www.centreon.com"
|
||||
license: "Apache-2.0"
|
||||
|
||||
contents:
|
||||
- src: ./sudoersCentreonPlugins
|
||||
dst: /etc/sudoers.d/centreon-plugins
|
||||
file_info:
|
||||
mode: 0600
|
||||
|
||||
overrides:
|
||||
rpm:
|
||||
provides:
|
||||
- centreon-cwrapper-perl
|
||||
replaces:
|
||||
- centreon-cwrapper-perl
|
||||
depends:
|
||||
- sudo
|
||||
deb:
|
||||
depends:
|
||||
- sudo
|
||||
|
||||
rpm:
|
||||
summary: Sudoers configuration for centreon plugins
|
||||
compression: zstd
|
||||
signature:
|
||||
key_file: ${RPM_SIGNING_KEY_FILE}
|
||||
key_id: ${RPM_SIGNING_KEY_ID}
|
6
dependencies/centreon-plugins-sudoers/sudoersCentreonPlugins
vendored
Normal file
6
dependencies/centreon-plugins-sudoers/sudoersCentreonPlugins
vendored
Normal file
@ -0,0 +1,6 @@
|
||||
User_Alias CENTREON_COLLECT_USERS=centreon-engine,centreon-gorgone
|
||||
Defaults:CENTREON_COLLECT_USERS !requiretty
|
||||
|
||||
CENTREON_COLLECT_USERS ALL = NOPASSWD: /usr/lib/centreon/plugins/centreon_protocol_dhcp.pl *
|
||||
CENTREON_COLLECT_USERS ALL = NOPASSWD: /usr/lib/centreon/plugins/centreon_protocol_udp.pl *
|
||||
CENTREON_COLLECT_USERS ALL = NOPASSWD: /usr/lib/centreon/plugins/centreon_nmap_cli.pl *
|
33
tests/apps/nmap/cli/discovery.robot
Normal file
33
tests/apps/nmap/cli/discovery.robot
Normal file
@ -0,0 +1,33 @@
|
||||
*** Settings ***
|
||||
Documentation Test the Podman container-usage mode
|
||||
Library Collections
|
||||
|
||||
Resource ${CURDIR}${/}..${/}..${/}..${/}resources/import.resource
|
||||
|
||||
Test Timeout 120s
|
||||
|
||||
*** Variables ***
|
||||
${MOCKOON_JSON} ${CURDIR}${/}podman.json
|
||||
|
||||
${cmd} ${CENTREON_PLUGINS}
|
||||
... --plugin=apps::nmap::cli::plugin
|
||||
... --mode=discovery
|
||||
|
||||
*** Test Cases ***
|
||||
Container usage ${tc}
|
||||
[Documentation] Check nmap discovery
|
||||
[Tags] apps nmap
|
||||
Log To Console \n
|
||||
${command} Catenate
|
||||
... ${cmd}
|
||||
... --subnet='127.0.0.1/32'
|
||||
... ${extraoptions}
|
||||
|
||||
Ctn Run Command And Check Result As Json ${command} ${expected_result}
|
||||
|
||||
Examples: tc extraoptions expected_result --
|
||||
... 1 ${EMPTY} {"end_time":1747232859,"discovered_items":1,"results":[{"hostname":"localhost","ip":"127.0.0.1","hostnames":[{"type":"PTR","name":"localhost"}],"vendor":null,"status":"up","addresses":[{"address":"127.0.0.1","type":"ipv4"}],"os_accuracy":null,"os":null,"services":null,"type":"unknown"}],"duration":0,"start_time":1747232859}
|
||||
... 2 --nmap-options='-sS -sU -R -O --osscan-limit --osscan-guess -p U:161,162,T:21-25,80,139,443,3306,5985,5986,8080,8443 -oX - ' {"end_time":1747232859,"discovered_items":1,"results":[{"hostname":"localhost","ip":"127.0.0.1","hostnames":[{"type":"PTR","name":"localhost"}],"vendor":null,"status":"up","addresses":[{"address":"127.0.0.1","type":"ipv4"}],"os_accuracy":null,"os":null,"services":null,"type":"unknown"}],"duration":1,"start_time":1747232859}
|
||||
... 3 --nmap-options='-sS -oX - ' {"results":[{"ip":"127.0.0.1","type":"unknown","os_accuracy":null,"status":"up","services":null,"hostnames":[{"type":"PTR","name":"localhost"}],"os":null,"hostname":"localhost","vendor":null,"addresses":[{"address":"127.0.0.1","type":"ipv4"}]}],"duration":0,"discovered_items":1,"start_time":1747234100,"end_time":1747234100}
|
||||
|
||||
*** Keywords ***
|
96
tests/centreon/plugins/misc.t
Normal file
96
tests/centreon/plugins/misc.t
Normal file
@ -0,0 +1,96 @@
|
||||
use strict;
|
||||
use warnings;
|
||||
use Test2::V0;
|
||||
use Test2::Tools::Compare qw{is like match};
|
||||
use FindBin;
|
||||
use lib "$FindBin::RealBin/../../../src";
|
||||
use centreon::plugins::misc;
|
||||
use centreon::plugins::output;
|
||||
use centreon::plugins::options;
|
||||
# in real world one should use execute(), but as many options are not supported by windows_execute,
|
||||
# the signature is not coherent, and we want to test everything on this unix_execute()
|
||||
sub test_unix_execute {
|
||||
my $mock_output = mock 'centreon::plugins::output'; # this is from Test2::Tools::Mock, included by Test2::V0
|
||||
|
||||
my $option = centreon::plugins::options->new();
|
||||
my $output = centreon::plugins::output->new(options => $option);
|
||||
|
||||
my @tests = (
|
||||
{
|
||||
expect => '"string to" output "$( echo noworking)"',
|
||||
msg => 'double quote stay when no interpretation',
|
||||
args => {
|
||||
command_path => "/bin",
|
||||
command => 'echo',
|
||||
command_options => '"string to" output "$( echo noworking)"',
|
||||
no_shell_interpretation => 1,
|
||||
}
|
||||
},
|
||||
{
|
||||
expect => 'string to output noworking',
|
||||
msg => 'double quote diseapear when interpretation is enabled',
|
||||
args => {
|
||||
command_path => "/bin",
|
||||
command => 'echo',
|
||||
command_options => '"string to" output "$( echo noworking)"',
|
||||
}
|
||||
},
|
||||
{
|
||||
expect => 'stringToOutput adding',
|
||||
msg => 'interpretation by default active',
|
||||
args => {
|
||||
command => 'echo stringToOutput $(echo adding)',
|
||||
}
|
||||
},
|
||||
{
|
||||
expect => 'stringToOutput $(echo adding)',
|
||||
msg => 'interpretation by default active',
|
||||
args => {
|
||||
command => 'echo stringToOutput $(echo adding)',
|
||||
no_shell_interpretation => 1,
|
||||
}
|
||||
},
|
||||
{
|
||||
expect => '',
|
||||
msg => "no error when no argument given to command without interpolation",
|
||||
args => {
|
||||
command => 'echo',
|
||||
no_shell_interpretation => 1,
|
||||
}
|
||||
}
|
||||
|
||||
);
|
||||
for my $test (@tests) {
|
||||
my ($stdout, $exit_code) = centreon::plugins::misc::unix_execute(
|
||||
output => $output,
|
||||
options => { timeout => 10 },
|
||||
no_quit => 1,
|
||||
%{$test->{args}},
|
||||
);
|
||||
is($stdout, $test->{expect}, $test->{msg});
|
||||
}
|
||||
|
||||
my ($stdout, $exit_code) = centreon::plugins::misc::unix_execute(
|
||||
output => $output,
|
||||
options => { timeout => 10 },
|
||||
command => 'NoBinary',
|
||||
command_output => '"string to" output "$( echo noworking)"',
|
||||
no_shell_interpretation => 1,
|
||||
no_quit => 1
|
||||
);
|
||||
like($stdout, qr/Can't exec "NoBinary": No such file or directory at.*/, 'no_quit option always return');
|
||||
($stdout, $exit_code) = centreon::plugins::misc::unix_execute(
|
||||
output => $output,
|
||||
options => { timeout => 10 },
|
||||
sudo => 1,
|
||||
command => 'NoBinary',
|
||||
command_output => '"string to" output "$( echo noworking)"',
|
||||
no_shell_interpretation => 1,
|
||||
no_quit => 1
|
||||
);
|
||||
like($stdout, qr/Can't exec "sudo": No such file or directory at.*/, 'sudo option add sudo binary before command');
|
||||
|
||||
}
|
||||
|
||||
test_unix_execute();
|
||||
done_testing();
|
@ -85,3 +85,13 @@ Ctn Verify Command Output
|
||||
... Wrong output result for command:\n${command}\n\nObtained:\n${output}\n\nExpected:\n${expected_result}\n
|
||||
... values=False
|
||||
... collapse_spaces=True
|
||||
|
||||
Ctn Run Command And Check Result As Json
|
||||
[Arguments] ${command} ${expected}
|
||||
Log To Console ${command}
|
||||
${output} Run ${command}
|
||||
${output} Strip String ${output}
|
||||
${json_output}= evaluate json.loads('''${output}''') json
|
||||
${json_expected}= evaluate json.loads('''${expected}''') json
|
||||
Dictionaries Should Be Equal ${json_output} ${json_expected} ignore_keys=['end_time', 'start_time', 'duration']
|
||||
Log Dictionary ${json_output}
|
Loading…
x
Reference in New Issue
Block a user