Running Ansible playbook with Jenkins plugin ... now need to add git

Hi,

I have a ansible server, which i use mainly to manage ntp client/dns client/time zone/create users/install software etc on various linux servers… so no development to say, just as “infrastructure as code”

On same server i installed Jenkins & on Jenkins i installed ansible plugin. Now i have a UI ( Front end ) for my playbooks. So Jenkins runs the playbooks.

So far so good.

Now i am scratching my head & doing google ( and various online training ) how do i ensure all those playbook & roles etc to add to GIT & then manage with GIT.

This is what i did so far

  • Install git plugin of Jenkins on same server
  • Install git server on same server, now this server acts as Jenkins+Ansible + Git
  • Test my git server by creating a project on it & testing with a work-station

All stuff on my ansible is under /etc/ansible ie playbook in /etc/ansible/playbooks , roles in /etc/ansible/roles , inventory at /etc/ansible/hosts

Please suggest ( any good blog/web page/book ) or otherwise any suggestions will help

Thanks
Kiran

This looks like a question about how to use git, in combination with Jenkins, neither of which this list is supporting. You might get more response from a support forum on Jenkins.

Hi

To achieve the above mentioned objective you can wirte Jenkins file and package all the files using fpm and deploy that package in jenkins server and then you can run playbooks using ansible jenkins by providing path to playbook.

Thanks and Regards,
Vivek

Thanks Vivek

Hi,
first thing you should version all your playbooks and roles in a git repository.
Then you tell Jenkins to pull such git repository and run the playbook you want to.

Be sure that on the Jenkins host you have installed all the required software: ansible, git.

You can create a Jenkinsfile at the root of your project that describes the steps that Jenkins has to perform in order to run your playbook:
Example for my Jenkinsfile that does something on my aws instances:

pipeline {
agent any

environment {
AWS_ID = credentials(“aws_credentials”)
AWS_ACCESS_KEY_ID = “${env.AWS_ID_USR}”
AWS_SECRET_ACCESS_KEY = “${env.AWS_ID_PSW}”

ANSIBLE_VAULT_PASSWORD_FILE = credentials(“ansible-vault-password-file”)

SSH_PRIVATE_KEY_FILE = credentials(“ssh-private-key-file”)
}

stages {
stage(“prepare virtualenv”) {
steps {
withPythonEnv(‘python’) {
sh “”"
pip install -r ansible/pip/pip-requirements.txt
“”"
}
}
}

stage(“run playbook”) {
steps {
withPythonEnv(‘python’) {
sh “”"
cd ansible
ansible-playbook my-playbook.yml --extra-vars “target=targethost” --private-key $SSH_PRIVATE_KEY_FILE --vault-password-file $ANSIBLE_VAULT_PASSWORD_FILE
“”"
}
}
}
}
}