Have I to install ansible in the same Jenkins host?

Hi.
I would like to play ansible playbook from Jenkins.
I installed Jenkins as docker container.

Ansible server is a different host.

Have I to install ansible into the Jenkins container?
Could you help me?

Thanks a lot

Mario

Jenkins setup:
Jenkins: 2.462.2
OS: Linux - 5.15.0-107-generic
Java: 17.0.12 - Eclipse Adoptium (OpenJDK 64-Bit Server VM)
---
ansible:403.v8d0ca_dcb_b_502
ant:511.v0a_a_1a_334f41b_
antisamy-markup-formatter:162.v0e6ec0fcfcf6
apache-httpcomponents-client-4-api:4.5.14-208.v438351942757
asm-api:9.7-33.v4d23ef79fcc8
bootstrap5-api:5.3.3-1
bouncycastle-api:2.30.1.78.1-248.ve27176eb_46cb_
branch-api:2.1178.v969d9eb_c728e
build-timeout:1.33
caffeine-api:3.1.8-133.v17b_1ff2e0599
checks-api:2.2.1
cloudbees-folder:6.955.v81e2a_35c08d3
commons-lang3-api:3.17.0-84.vb_b_938040b_078
commons-text-api:1.12.0-129.v99a_50df237f7
credentials:1378.v81ef4269d764
credentials-binding:681.vf91669a_32e45
dark-theme:479.v661b_1b_911c01
display-url-api:2.204.vf6fddd8a_8b_e9
durable-task:577.v2a_8a_4b_7c0247
echarts-api:5.5.1-1
eddsa-api:0.3.0-4.v84c6f0f4969e
email-ext:1844.v3ea_a_b_842374a_
font-awesome-api:6.6.0-2
git:5.5.1
git-client:5.0.0
github:1.40.0
github-api:1.321-468.v6a_9f5f2d5a_7e
github-branch-source:1797.v86fdb_4d57d43
gradle:2.13
gson-api:2.11.0-41.v019fcf6125dc
instance-identity:201.vd2a_b_5a_468a_a_6
ionicons-api:74.v93d5eb_813d5f
jackson2-api:2.17.0-379.v02de8ec9f64c
jakarta-activation-api:2.1.3-1
jakarta-mail-api:2.1.3-1
javax-activation-api:1.2.0-7
jaxb:2.3.9-1
jjwt-api:0.11.5-112.ve82dfb_224b_a_d
joda-time-api:2.13.0-85.vb_64d1c2921f1
jquery3-api:3.7.1-2
json-api:20240303-41.v94e11e6de726
json-path-api:2.9.0-58.v62e3e85b_a_655
junit:1302.va_b_878c32eb_b_5
ldap:725.v3cb_b_711b_1a_ef
locale:519.v4e20f313cfa_f
mailer:488.v0c9639c1a_eb_3
matrix-auth:3.2.2
matrix-project:832.va_66e270d2946
metrics:4.2.21-451.vd51df8df52ec
mina-sshd-api-common:2.13.2-125.v200281b_61d59
mina-sshd-api-core:2.13.2-125.v200281b_61d59
okhttp-api:4.11.0-172.vda_da_1feeb_c6e
pam-auth:1.11
pipeline-build-step:540.vb_e8849e1a_b_d8
pipeline-github-lib:61.v629f2cc41d83
pipeline-graph-analysis:216.vfd8b_ece330ca_
pipeline-graph-view:340.v28cecee8b_25f
pipeline-groovy-lib:730.ve57b_34648c63
pipeline-input-step:495.ve9c153f6067b_
pipeline-milestone-step:119.vdfdc43fc3b_9a_
pipeline-model-api:2.2214.vb_b_34b_2ea_9b_83
pipeline-model-definition:2.2214.vb_b_34b_2ea_9b_83
pipeline-model-extensions:2.2214.vb_b_34b_2ea_9b_83
pipeline-stage-step:312.v8cd10304c27a_
pipeline-stage-tags-metadata:2.2214.vb_b_34b_2ea_9b_83
plain-credentials:183.va_de8f1dd5a_2b_
plugin-util-api:5.1.0
resource-disposer:0.24
scm-api:696.v778d637b_a_762
script-security:1362.v67dc1f0e1b_b_3
snakeyaml-api:2.3-123.v13484c65210a_
ssh-credentials:343.v884f71d78167
ssh-slaves:2.973.v0fa_8c0dea_f9f
structs:338.v848422169819
theme-manager:262.vc57ee4a_eda_5d
timestamper:1.27
token-macro:400.v35420b_922dcb_
trilead-api:2.147.vb_73cc728a_32e
variant:60.v7290fc0eb_b_cd
workflow-aggregator:600.vb_57cdd26fdd7
workflow-api:1336.vee415d95c521
workflow-basic-steps:1058.vcb_fc1e3a_21a_9
workflow-cps:3969.vdc9d3a_efcc6a_
workflow-durable-task-step:1371.vb_7cec8f3b_95e
workflow-job:1436.vfa_244484591f
workflow-multibranch:795.ve0cb_1f45ca_9a_
workflow-scm-step:427.v4ca_6512e7df1
workflow-step-api:678.v3ee58b_469476
workflow-support:926.v9f4f9b_b_98c19
ws-cleanup:0.46

Hello and welcome to this community, @jenkiniano. :wave:

To run an Ansible playbook from Jenkins, you don’t necessarily need to install Ansible inside the Jenkins container. Instead, you can configure Jenkins to execute Ansible commands on a remote host where Ansible is installed.

1 Like

Thanks a lot @poddingue however, I haven’t found a guide about configuring Jenkins to execute ansible remotely.

In my Scenario:
hostA with Ansible installation
Jenkins in a docker container on the hostA

Could you give me a link with a sample configuration?

Thanks a lot
Mario

  1. Install the Ansible Plugin in Jenkins:
    . Go to Manage Jenkins > Plugins > Available Plugins.
    . Search for the Ansible plugin and install it.
  2. Configure SSH Credentials in Jenkins:
    . Go to Manage Jenkins > Credentials.
    . Add a new SSH credential for the Ansible server.
  3. Configure the Ansible Plugin:
    . Go to Manage Jenkins > Tools.
    . Scroll down to the Ansible section and add a new Ansible installation if needed.
  4. Create a Jenkins Pipeline:
    . Create a new pipeline job in Jenkins.
    . Use the following example Jenkinsfile to run an Ansible playbook on the remote host.
pipeline {
    agent any

    environment {
        ANSIBLE_HOST = 'ansible-server.example.com'
        ANSIBLE_USER = 'your-ansible-user'
        ANSIBLE_PLAYBOOK = '/path/to/your/playbook.yml'
    }

    stages {
        stage('Run Ansible Playbook') {
            steps {
                sshagent(['your-ssh-credential-id']) {
                    sh """
                    ssh -o StrictHostKeyChecking=no ${ANSIBLE_USER}@${ANSIBLE_HOST} \\
                    'ansible-playbook ${ANSIBLE_PLAYBOOK}'
                    """
                }
            }
        }
    }
}
  • sshagent: Uses the SSH credentials stored in Jenkins to connect to the Ansible server.
  • sh: Executes the ansible-playbook command on the remote Ansible server.

By following these steps, I think you could run Ansible playbooks from Jenkins without installing Ansible inside the Jenkins container. :crossed_fingers:

It works!!
Thanks a lot!

Suuuper!

1 Like

That’s great news, thanks a lot for the feedback! :hugs: