first commit
This commit is contained in:
91
Jenkinsfile
vendored
Normal file
91
Jenkinsfile
vendored
Normal 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"
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user