ansible.builtin.jenkins_plugin (v2.9.27) — module

Add or remove Jenkins plugin

| "added in version" 2.2 of ansible.builtin"

Authors: Jiri Tyr (@jtyr)

preview | supported by community

Install Ansible via pip

Install with pip install ansible==2.9.27

Description

Ansible module which helps to manage Jenkins plugins.

Usage examples

  • Success
    Steampunk Spotter scan finished with no errors, warnings or hints.
- name: Install plugin
  jenkins_plugin:
    name: build-pipeline-plugin
  • Success
    Steampunk Spotter scan finished with no errors, warnings or hints.
- name: Install plugin without its dependencies
  jenkins_plugin:
    name: build-pipeline-plugin
    with_dependencies: no
  • Success
    Steampunk Spotter scan finished with no errors, warnings or hints.
- name: Make sure the plugin is always up-to-date
  jenkins_plugin:
    name: token-macro
    state: latest
  • Success
    Steampunk Spotter scan finished with no errors, warnings or hints.
- name: Install specific version of the plugin
  jenkins_plugin:
    name: token-macro
    version: "1.15"
  • Success
    Steampunk Spotter scan finished with no errors, warnings or hints.
- name: Pin the plugin
  jenkins_plugin:
    name: token-macro
    state: pinned
  • Success
    Steampunk Spotter scan finished with no errors, warnings or hints.
- name: Unpin the plugin
  jenkins_plugin:
    name: token-macro
    state: unpinned
  • Success
    Steampunk Spotter scan finished with no errors, warnings or hints.
- name: Enable the plugin
  jenkins_plugin:
    name: token-macro
    state: enabled
  • Success
    Steampunk Spotter scan finished with no errors, warnings or hints.
- name: Disable the plugin
  jenkins_plugin:
    name: token-macro
    state: disabled
  • Success
    Steampunk Spotter scan finished with no errors, warnings or hints.
- name: Uninstall plugin
  jenkins_plugin:
    name: build-pipeline-plugin
    state: absent
  • Success
    Steampunk Spotter scan finished with no errors, warnings or hints.
#
# Example of how to authenticate
#
- name: Install plugin
  jenkins_plugin:
    name: build-pipeline-plugin
    url_username: admin
    url_password: p4ssw0rd
    url: http://localhost:8888
  • Success
    Steampunk Spotter scan finished with no errors, warnings or hints.
#
# 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 }}"

Inputs

    
url:
    default: http://localhost:8080
    description:
    - URL of the Jenkins server.
    type: str

mode:
    default: '0644'
    description:
    - File mode applied on versioned plugins.

name:
    description:
    - Plugin name.
    required: true

force:
    default: false
    description:
    - If V(yes) do not get a cached copy.
    type: bool

group:
    default: jenkins
    description:
    - Name of the Jenkins group on the OS.

owner:
    default: jenkins
    description:
    - Name of the Jenkins user on the OS.

state:
    choices:
    - absent
    - present
    - pinned
    - unpinned
    - enabled
    - disabled
    - latest
    default: present
    description:
    - Desired plugin state.
    - If the C(latest) is set, the check for new version will be performed every time.
      This is suitable to keep the plugin up-to-date.

timeout:
    default: 30
    description:
    - Server connection timeout in secs.

version:
    description:
    - 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.
    - Quote the version to prevent the value to be interpreted as float. For example if
      C(1.20) would be unquoted, it would become C(1.2).

use_proxy:
    default: true
    description:
    - If V(no), it will not use a proxy, even if one is defined in an environment variable
      on the target hosts.
    type: bool

client_key:
    description:
    - PEM formatted file that contains your private key to be used for SSL client authentication.
    - If O(client_cert) contains both the certificate and key, this option is not required.
    type: path

http_agent:
    default: ansible-httpget
    description:
    - Header to identify as, generally appears in web server logs.
    type: str

use_gssapi:
    default: false
    description:
    - Use GSSAPI to perform the authentication, typically this is for Kerberos or Kerberos
      through Negotiate authentication.
    - Requires the Python library L(gssapi,https://github.com/pythongssapi/python-gssapi)
      to be installed.
    - Credentials for GSSAPI can be specified with O(url_username)/O(url_password) or
      with the GSSAPI env var C(KRB5CCNAME) that specified a custom Kerberos credential
      cache.
    - NTLM authentication is B(not) supported even if the GSSAPI mech for NTLM has been
      installed.
    type: bool
    version_added: '2.11'
    version_added_collection: ansible.builtin

client_cert:
    description:
    - PEM formatted certificate chain file to be used for SSL client authentication.
    - This file can also include the key as well, and if the key is included, O(client_key)
      is not required.
    type: path

updates_url:
    default: https://updates.jenkins.io
    description:
    - URL of the Update Centre.
    - Used as the base URL to download the plugins and the I(update-center.json) JSON
      file.

jenkins_home:
    default: /var/lib/jenkins
    description:
    - Home directory of the Jenkins user.

url_password:
    description:
    - The password for use in HTTP basic authentication.
    - If the O(url_username) parameter is not specified, the O(url_password) parameter
      will not be used.
    type: str

url_username:
    description:
    - The username for use in HTTP basic authentication.
    - This parameter can be used without O(url_password) for sites that allow empty passwords
    type: str

validate_certs:
    default: true
    description:
    - If V(no), SSL certificates will not be validated.
    - This should only be used on personally controlled sites using self-signed certificates.
    type: bool

force_basic_auth:
    default: false
    description:
    - Credentials specified with O(url_username) and O(url_password) should be passed
      in HTTP Header.
    type: bool

with_dependencies:
    default: true
    description:
    - Defines whether to install plugin dependencies.
    - This option takes effect only if the I(version) is not defined.
    type: bool

updates_expiration:
    default: 86400
    description:
    - Number of seconds after which a new copy of the I(update-center.json) file is downloaded.
      This is used to avoid the need to download the plugin to calculate its checksum
      when C(latest) is specified.
    - Set it to C(0) if no cache file should be used. In that case, the plugin file will
      always be downloaded to calculate its checksum when C(latest) is specified.

Outputs

plugin:
  description: plugin name
  returned: success
  sample: build-pipeline-plugin
  type: str
state:
  description: state of the target, after execution
  returned: success
  sample: present
  type: str