pipeline { agent any // Define parameters parameters { string(name: 'host_ip', description: 'Target System Address') string(name: 'new_hostname', description: 'New Target Hostname') booleanParam(name: 'add_domain', defaultValue: true, description: 'When checked hostname will have home.cosmos appended') } environment { ANSIBLE_FORCE_COLOR = '1' } options { ansiColor('xterm') } stages { stage('Generate Inventory File') { steps { // Generate the dynamic inventory file sh """ cd /var/jenkins_home/ansible chmod +x /var/jenkins_home/ansible/inventory/generate_inventory.sh /var/jenkins_home/ansible/inventory/generate_inventory.sh ${params.host_ip} """ } } stage('Ansible Pipeline') { steps { //Run the cosmos-base ansible playbook sh """ cd /var/jenkins_home/ansible ansible-playbook -i /var/jenkins_home/ansible/.inv/inventory-${params.host_ip}.yml \ /var/jenkins_home/ansible/playbooks/rename-endpoint.yaml --ssh-common-args='-o StrictHostKeyChecking=no' \ --extra-vars "new_hostname=${params.new_hostname} add_domain=${params.add_domain}" """ } } } post { always { // Remove dynamic Inventory file sh "rm /var/jenkins_home/ansible/.inv/inventory-${params.host_ip}.yml" } } }