first commit

This commit is contained in:
2026-01-30 14:40:48 -05:00
commit 2301a87a6e
4 changed files with 240 additions and 0 deletions

91
Jenkinsfile vendored Normal file
View File

@@ -0,0 +1,91 @@
pipeline {
agent any
parameters {
choice(
name: 'PLAYBOOK',
choices: ['update.yaml', 'snapshotAndUpdate.yaml', 'dockerUpdate.yml', 'dockerPrune.yaml', 'newMachine.yaml'],
description: 'Select the playbook to run'
)
string(
name: 'LIMIT',
defaultValue: '',
description: 'Limit to specific hosts or groups (e.g., "vms", "lxcs", "update_targets", or hostname) no.lan required'
)
booleanParam(
name: 'DRY_RUN',
defaultValue: false,
description: 'Run in check mode (no changes made)'
)
booleanParam(
name: 'CLEANUP_SNAPSHOTS',
defaultValue: false,
description: 'Remove snapshots after successful update (only for snapshotAndUpdate.yaml)'
)
}
environment {
PROXMOX_URL = 'https://192.168.0.166:8006'
PROXMOX_USER = 'dynamic-inventory@pve'
PROXMOX_TOKEN_ID = 'dynamic-inventory'
PROXMOX_TOKEN_SECRET = credentials('PROXMOX_TOKEN_SECRET')
ANSIBLE_HOST_KEY_CHECKING = 'False'
}
stages {
stage('Checkout') {
steps {
checkout scm
}
}
stage('Verify Inventory') {
steps {
sh '''
echo "Testing dynamic inventory connection..."
ansible-inventory -i inventories/inventory.proxmox.yml --list | head -10
'''
}
}
stage('Run Playbook') {
steps {
script {
// Set default limits based on playbook if not specified
def limitValue = params.LIMIT
if (!params.LIMIT) {
if (params.PLAYBOOK in ['dockerUpdate.yml', 'dockerPrune.yaml']) {
limitValue = 'docker_hosts'
}
}
def limitFlag = limitValue ? "--limit '${limitValue}'" : ''
def checkFlag = (params.DRY_RUN == true) ? '--check --diff' : ''
def extraVars = (params.CLEANUP_SNAPSHOTS == true) ? "-e cleanup_old_snapshots=true" : ''
echo "DRY_RUN parameter: ${params.DRY_RUN}"
echo "Check flag: '${checkFlag}'"
echo "Limit: '${limitValue}'"
sh """
ansible-playbook \
-i inventories/inventory.proxmox.yml \
playbooks/${params.PLAYBOOK} \
${limitFlag} \
${checkFlag} \
${extraVars} \
-v
"""
}
}
}
}
post {
success {
echo "Playbook ${params.PLAYBOOK} completed successfully"
}
failure {
echo "Playbook ${params.PLAYBOOK} failed"
}
}
}