New in version 2.2.
Ansible module which helps to manage Jenkins plugins.
| parameter | required | default | choices | comments |
|---|---|---|---|---|
| group | no | jenkins | Name of the Jenkins group on the OS. |
|
| jenkins_home | no | /var/lib/jenkins | Home directory of the Jenkins user. |
|
| mode | no | 0664 | File mode applied on versioned plugins. |
|
| name | yes | Plugin name. |
||
| owner | no | jenkins | Name of the Jenkins user on the OS. |
|
| params | no | Option used to allow the user to overwrite any of the other options. To remove an option, set the value of the option to null. |
||
| state | no | present |
|
Desired plugin state.
If the
latest is set, the check for new version will be performed every time. This is suitable to keep the plugin up-to-date. |
| timeout | no | 30 | Server connection timeout in secs. |
|
| updates_expiration | no | 86400 |
Number of seconds after which a new copy of the update-center.json file is downloaded. This is used to avoid the need to download the plugin to calculate its checksum when
latest is specified.Set it to
0 if no cache file should be used. In that case, the plugin file will always be downloaded to calculate its checksum when latest is specified. |
|
| updates_url | no | https://updates.jenkins-ci.org |
URL of the Update Centre.
Used as the base URL to download the plugins and the update-center.json JSON file.
|
|
| url | no | http://localhost:8080 | URL of the Jenkins server. |
|
| version | no |
Plugin version number.
If this option is specified, all plugin dependencies must be installed manually.
It might take longer to verify that the correct version is installed. This is especially true if a specific version number is specified.
|
||
| with_dependencies | no | yes |
| Defines whether to install plugin dependencies. |
- name: Install plugin
jenkins_plugin:
name: build-pipeline-plugin
- name: Install plugin without its dependencies
jenkins_plugin:
name: build-pipeline-plugin
with_dependencies: no
- name: Make sure the plugin is always up-to-date
jenkins_plugin:
name: token-macro
state: latest
- name: Install specific version of the plugin
jenkins_plugin:
name: token-macro
version: 1.15
- name: Pin the plugin
jenkins_plugin:
name: token-macro
state: pinned
- name: Unpin the plugin
jenkins_plugin:
name: token-macro
state: unpinned
- name: Enable the plugin
jenkins_plugin:
name: token-macro
state: enabled
- name: Disable the plugin
jenkins_plugin:
name: token-macro
state: disabled
- name: Uninstall plugin
jenkins_plugin:
name: build-pipeline-plugin
state: absent
#
# Example of how to use the params
#
# Define a variable and specify all default parameters you want to use across
# all jenkins_plugin calls:
#
# my_jenkins_params:
# url_username: admin
# url_password: p4ssw0rd
# url: http://localhost:8888
#
- name: Install plugin
jenkins_plugin:
name: build-pipeline-plugin
params: "{{ my_jenkins_params }}"
#
# Example of a Play which handles Jenkins restarts during the state changes
#
- name: Jenkins Master play
hosts: jenkins-master
vars:
my_jenkins_plugins:
token-macro:
enabled: yes
build-pipeline-plugin:
version: 1.4.9
pinned: no
enabled: yes
tasks:
- name: Install plugins without a specific version
jenkins_plugin:
name: "{{ item.key }}"
register: my_jenkins_plugin_unversioned
when: >
'version' not in item.value
with_dict: my_jenkins_plugins
- name: Install plugins with a specific version
jenkins_plugin:
name: "{{ item.key }}"
version: "{{ item.value['version'] }}"
register: my_jenkins_plugin_versioned
when: >
'version' in item.value
with_dict: my_jenkins_plugins
- name: Initiate the fact
set_fact:
jenkins_restart_required: no
- name: Check if restart is required by any of the versioned plugins
set_fact:
jenkins_restart_required: yes
when: item.changed
with_items: my_jenkins_plugin_versioned.results
- name: Check if restart is required by any of the unversioned plugins
set_fact:
jenkins_restart_required: yes
when: item.changed
with_items: my_jenkins_plugin_unversioned.results
- name: Restart Jenkins if required
service:
name: jenkins
state: restarted
when: jenkins_restart_required
- name: Wait for Jenkins to start up
uri:
url: http://localhost:8080
status_code: 200
timeout: 5
register: jenkins_service_status
# Keep trying for 5 mins in 5 sec intervals
retries: 60
delay: 5
until: >
'status' in jenkins_service_status and
jenkins_service_status['status'] == 200
when: jenkins_restart_required
- name: Reset the fact
set_fact:
jenkins_restart_required: no
when: jenkins_restart_required
- name: Plugin pinning
jenkins_plugin:
name: "{{ item.key }}"
state: "{{ 'pinned' if item.value['pinned'] else 'unpinned'}}"
when: >
'pinned' in item.value
with_dict: my_jenkins_plugins
- name: Plugin enabling
jenkins_plugin:
name: "{{ item.key }}"
state: "{{ 'enabled' if item.value['enabled'] else 'disabled'}}"
when: >
'enabled' in item.value
with_dict: my_jenkins_plugins
Common return values are documented here Common Return Values, the following are the fields unique to this module:
| name | description | returned | type | sample |
|---|---|---|---|---|
| state | state of the target, after execution | success | string | present |
| plugin | plugin name | success | string | build-pipeline-plugin |
Note
Plugin installation shoud be run under root or the same user which owns the plugin files on the disk. Only if the plugin is not installed yet and no version is specified, the API installation is performed which requires only the Web UI credentials.
Note
It’s necessary to notify the handler or call the service module to restart the Jenkins service after a new plugin was installed.
Note
Pinning works only if the plugin is installed and Jenkis service was successfully restarted after the plugin installation.
Note
It is not possible to run the module remotely by changing the url parameter to point to the Jenkins server. The module must be used on the host where Jenkins runs as it needs direct access to the plugin files.
For more information on what this means please read Extras Modules
For help in developing on modules, should you be so inclined, please read Community Information & Contributing, developing_test_pr and Developing Modules.
© 2012–2016 Michael DeHaan
© 2016 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/jenkins_plugin_module.html