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

    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

    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