Compare commits

...

4 Commits

Author SHA1 Message Date
Jenkins
d069da5c79 Merge branch 'jenkins-build-2' into 'master'
Auto-merge for build 2

See merge request puppet/confdroid_ssh!2
2026-04-05 15:21:41 +02:00
Jenkins Server
dfec1a2790 Merge remote-tracking branch 'origin/master' into jenkins-build-2 2026-04-05 15:17:07 +02:00
1d2e0097ba OP#561 add firewall 2026-04-05 15:16:48 +02:00
Jenkins
f980cb2260 Merge branch 'jenkins-build-1' into 'master'
Auto-merge for build 1

See merge request puppet/confdroid_ssh!1
2026-04-05 12:40:35 +00:00
6 changed files with 37 additions and 109 deletions

105
Jenkinsfile vendored
View File

@@ -1,105 +0,0 @@
pipeline {
agent {
label 'puppet'
}
post {
always {
deleteDir() /* clean up our workspace */
}
success {
updateGitlabCommitStatus state: 'success'
}
failure {
updateGitlabCommitStatus state: 'failed'
step([$class: 'Mailer', notifyEveryUnstableBuild: true, recipients: 'support@confdroid.com', sendToIndividuals: true])
}
}
options {
gitLabConnection('gitlab.confdroid.com')
}
stages {
stage('pull master') {
steps {
sshagent(['edd05eb6-26b5-4c7b-a5cc-ea2ab899f4fa']) {
sh '''
git config user.name "Jenkins Server"
git config user.email jenkins@confdroid.com
# Ensure we're on the development branch (triggered by push)
git checkout development
# Create jenkins branch from development
git checkout -b jenkins-build-$BUILD_NUMBER
# Optionally merge master into jenkins to ensure compatibility
git merge origin/master --no-ff || { echo "Merge conflict detected"; exit 1; }
'''
}
}
}
stage('puppet parser') {
steps {
sh '''for file in $(find . -iname \'*.pp\'); do
/opt/puppetlabs/bin/puppet parser validate --color false --render-as s --modulepath=modules $file || exit 1;
done;'''
}
}
stage('check templates') {
steps{
sh '''for file in $(find . -iname \'*.erb\');
do erb -P -x -T "-" $file | ruby -c || exit 1;
done;'''
}
}
stage('puppet-lint') {
steps {
sh '''/usr/local/bin/puppet-lint . \\
--no-variable_scope-check \\
|| { echo "Puppet lint failed"; exit 1; }
'''
}
}
stage('SonarScan') {
steps {
withCredentials([string(credentialsId: 'sonar-token', variable: 'SONAR_TOKEN')]) {
sh '''
/opt/sonar-scanner/bin/sonar-scanner \
-Dsonar.projectKey=confdroid_ssh \
-Dsonar.sources=. \
-Dsonar.host.url=https://sonarqube.confdroid.com \
-Dsonar.token=$SONAR_TOKEN
'''
}
}
}
stage('create Puppet documentation') {
steps {
sh '/opt/puppetlabs/bin/puppet strings'
}
}
stage('update repo') {
steps {
sshagent(['edd05eb6-26b5-4c7b-a5cc-ea2ab899f4fa']) {
sh '''
git config user.name "Jenkins Server"
git config user.email jenkins@confdroid.com
git add -A && git commit -am "Recommit for updates in build $BUILD_NUMBER" || echo "No changes to commit"
git push -o merge_request.create \
-o merge_request.target=master \
-o merge_request.title="Auto-merge for build $BUILD_NUMBER" \
-o merge_request.description="Automated changes from Jenkins build $BUILD_NUMBER" \
-o merge_request.merge_when_pipeline_succeeds=true \
origin jenkins-build-$BUILD_NUMBER
'''
}
}
}
}
}

View File

@@ -23,6 +23,11 @@
## Features ## Features
- install required binaries
- manage configuration based on parameters
- manage service
- (optional) manage firewall
## Support ## Support
- Rocky 9 - Rocky 9

View File

@@ -0,0 +1,17 @@
## confdroid_ssh::firewall::iptables.pp
# Module name: confdroid_ssh
# Author: 12ww1160 (12ww1160@confdroid.com)
# @summary Class manages firewall rules for SSH
##############################################################################
class confdroid_ssh::firewall::iptables (
) inherits confdroid_ssh::params {
if $ssh_use_firewall {
firewall { "${ssh_fw_order}${ssh_fw_port} allow SSH on port ${ssh_fw_port}":
ensure => 'present',
jump => 'accept',
proto => 'tcp',
dport => $ssh_fw_port,
}
}
}

View File

@@ -5,7 +5,7 @@
############################################################################## ##############################################################################
class confdroid_ssh::main::install ( class confdroid_ssh::main::install (
) inherits confdroid_ssh::params { ) inherits confdroid_ssh::params {
package { $reqpackages: package { $ssh_reqpackages:
ensure => $pkg_ensure, ensure => $pkg_ensure,
} }
} }

View File

@@ -6,6 +6,9 @@
class confdroid_ssh::main::service ( class confdroid_ssh::main::service (
) inherits confdroid_ssh::params { ) inherits confdroid_ssh::params {
require confdroid_ssh::main::files require confdroid_ssh::main::files
if $ssh_use_firewall {
require confdroid_ssh::firewall::iptables
}
service { $sshd_service: service { $sshd_service:
ensure => running, ensure => running,

View File

@@ -2,14 +2,22 @@
# Module name: confdroid_ssh # Module name: confdroid_ssh
# Author: 12ww1160 (12ww1160@confdroid.com) # Author: 12ww1160 (12ww1160@confdroid.com)
# @summary Class contains all class parameters for confdroid_ssh # @summary Class contains all class parameters for confdroid_ssh
# @param [Array] reqpackages packages to install # @param [Array] ssh_reqpackages packages to install
# @param [String] pkg_ensure version to install: 'present' or 'latest' # @param [String] pkg_ensure version to install: 'present' or 'latest'
# @param [Boolean] ssh_use_firewall whether to manage firewall settings
# @param [String] ssh_fw_port port to use for SSHD and in fw
# @param [String] ssh_fw_order order of firewall rule
############################################################################## ##############################################################################
class confdroid_ssh::params ( class confdroid_ssh::params (
Array $reqpackages = ['openssh','openssh-clients','openssh-server'], Array $ssh_reqpackages = ['openssh','openssh-clients','openssh-server'],
String $pkg_ensure = 'present', String $pkg_ensure = 'present',
# firewall settings
Boolean $ssh_use_firewall = true,
String $ssh_fw_port = '22',
String $ssh_fw_order = '50',
) { ) {
# default facts # default facts
$fqdn = $facts['networking']['fqdn'] $fqdn = $facts['networking']['fqdn']