Spec-Zone.ru › Ansible

Модуль community.general.jenkins_plugin — добавление или удаление плагина Jenkins

Примечание

Этот модуль входит в коллекцию community.general (версия 12.6.1).

Возможно, эта коллекция уже установлена, если вы используете пакет ansible. Она не включена в ansible-core. Чтобы проверить, установлена ли она, выполните ansible-galaxy collection list.

Чтобы установить её, используйте: ansible-galaxy collection install community.general.

Чтобы использовать её в плейбуке, укажите: community.general.jenkins_plugin.

  • Краткое описание
  • Параметры
  • Атрибуты
  • Примечания
  • Примеры
  • Возвращаемые значения

Краткое описание

  • Модуль Ansible для управления плагинами Jenkins.

Параметры

Параметр

Комментарии

attributes

псевдонимы: attr

строка

Атрибуты, которые должен иметь результирующий объект файловой системы.

Список поддерживаемых флагов см. на странице руководства chattr целевой системы.

Эта строка должна содержать атрибуты в том же порядке, в котором они отображаются командой lsattr.

По умолчанию предполагается оператор =, в противном случае в строку необходимо включить оператор + или -.

client_cert

путь

Файл цепочки сертификатов в формате PEM для аутентификации SSL-клиента.

Этот файл также может содержать ключ. Если ключ включён в файл, параметр client_key не требуется.

client_key

путь

Файл в формате PEM, содержащий закрытый ключ для аутентификации SSL-клиента.

Если client_cert содержит и сертификат, и ключ, этот параметр не требуется.

force

логический

Если yes, не использовать кэшированную копию.

Варианты:

  • false ← (по умолчанию)
  • true

force_basic_auth

логический

Передавать учётные данные, указанные с помощью url_username и url_password, в заголовке HTTP.

Варианты:

  • false ← (по умолчанию)
  • true

group

строка

GID или имя группы Jenkins в ОС.

По умолчанию: "jenkins"

http_agent

строка

Значение заголовка для идентификации; обычно оно отображается в журналах веб-сервера.

По умолчанию: "ansible-httpget"

jenkins_home

путь

Домашний каталог пользователя Jenkins.

По умолчанию: "/var/lib/jenkins"

latest_plugins_url_segments

список / элементы=строка

добавлен в community.general 3.3.0

Путь внутри updates_url, откуда получать последние версии плагинов.

По умолчанию: ["latest"]

mode

любой

Режим файла, применяемый к плагинам с указанной версией.

По умолчанию: "0644"

name

строка / обязательный

Имя плагина.

owner

строка

UID или имя пользователя Jenkins в ОС.

По умолчанию: "jenkins"

plugin_versions_url_segment

список / элементы=строка

добавлен в community.general 11.2.0

Список сегментов URL для получения JSON-файла с версиями плагинов.

По умолчанию: ["plugin-versions.json", "current/plugin-versions.json"]

selevel

строка

Уровень контекста объекта файловой системы SELinux.

Это атрибут MLS/MCS, иногда называемый range.

Если задано значение _default, будет использоваться часть политики level, если она доступна.

serole

строка

Роль контекста объекта файловой системы SELinux.

Если задано значение _default, будет использоваться часть политики role, если она доступна.

setype

строка

Тип контекста объекта файловой системы SELinux.

Если задано значение _default, будет использоваться часть политики type, если она доступна.

seuser

строка

Пользователь контекста объекта файловой системы SELinux.

По умолчанию используется политика system, если это применимо.

Если задано значение _default, будет использоваться часть политики user, если она доступна.

state

строка

Требуемое состояние плагина.

Если задано значение latest, проверка наличия новой версии выполняется при каждом запуске. Это удобно для поддержания плагина в актуальном состоянии.

Варианты:

  • "absent"
  • "present" ← (по умолчанию)
  • "pinned"
  • "unpinned"
  • "enabled"
  • "disabled"
  • "latest"

timeout

целое число

Тайм-аут подключения к серверу в секундах.

По умолчанию: 30

unsafe_writes

логический

Определяет, когда использовать атомарную операцию для предотвращения повреждения данных или несогласованного чтения целевого объекта файловой системы.

По умолчанию этот модуль использует атомарные операции для предотвращения повреждения данных или несогласованного чтения целевых объектов файловой системы, однако в некоторых случаях конфигурация систем или их неисправности этому препятствуют. Например, объекты файловой системы, смонтированные Docker, нельзя атомарно обновить из контейнера — их можно записывать только небезопасным способом.

Этот параметр позволяет Ansible при сбое атомарных операций использовать небезопасные методы обновления объектов файловой системы (однако он не заставляет Ansible выполнять небезопасную запись).

ВАЖНО! Небезопасная запись подвержена состояниям гонки и может привести к повреждению данных.

Варианты:

  • false ← (по умолчанию)
  • true

update_json_url_segment

список / элементы=строка

добавлен в community.general 3.3.0

Список сегментов URL для получения JSON-файла центра обновлений.

По умолчанию: ["update-center.json", "updates/update-center.json"]

updates_expiration

целое число

Количество секунд, по истечении которых загружается новая копия файла update-center.json. Это позволяет не загружать плагин для вычисления его контрольной суммы, если задан параметр state=latest.

Задайте значение 0, если файл кэша использовать не следует. В этом случае файл плагина всегда загружается для вычисления его контрольной суммы, если задан параметр state=latest.

По умолчанию: 86400

updates_url

список / элементы=строка

Список базовых URL для получения update-center.json и файлов плагинов напрямую.

Начиная с community.general 3.3.0 можно использовать список URL.

По умолчанию: ["https://updates.jenkins.io", "http://mirrors.jenkins.io"]

updates_url_password

строка

добавлен в community.general 11.2.0

Если используется пользовательский updates_url, укажите здесь пароль пользователя, имеющего доступ к URL.

Если для пользовательского updates_url аутентификация не требуется, это поле можно оставить пустым.

updates_url_username

строка

добавлен в community.general 11.2.0

Если используется пользовательский updates_url, укажите здесь имя пользователя, имеющего доступ к URL.

Если для пользовательского updates_url аутентификация не требуется, это поле можно оставить пустым.

url

строка

URL сервера Jenkins.

По умолчанию: "http://localhost:8080"

url_password

строка

Пароль для HTTP-аутентификации Basic.

Если параметр url_username не указан, параметр url_password использоваться не будет.

url_username

строка

Имя пользователя для HTTP-аутентификации Basic.

Этот параметр можно использовать без url_password на сайтах, допускающих пустые пароли.

use_gssapi

логический

добавлен в ansible-core 2.11

Использовать GSSAPI для аутентификации; обычно это Kerberos или Kerberos через аутентификацию Negotiate.

Требуется установить библиотеку Python gssapi.

Учётные данные для GSSAPI можно указать с помощью url_username/url_password или переменной среды GSSAPI KRB5CCNAME, задающей пользовательский кэш учётных данных Kerberos.

Аутентификация NTLM не поддерживается, даже если установлен механизм GSSAPI для NTLM.

Варианты:

  • false ← (по умолчанию)
  • true

use_proxy

логический

Если no, прокси использоваться не будет, даже если он задан в переменной среды на целевых узлах.

Варианты:

  • false
  • true ← (по умолчанию)

validate_certs

логический

Если no, сертификаты SSL проверяться не будут.

Используйте этот параметр только на сайтах под вашим контролем, где применяются самоподписанные сертификаты.

Варианты:

  • false
  • true ← (по умолчанию)

version

строка

Номер версии плагина.

Если этот параметр указан, все зависимости плагина необходимо устанавливать вручную.

Проверка установки нужной версии может занять больше времени. Особенно это касается случаев, когда указан конкретный номер версии.

Заключите версию в кавычки, чтобы значение не было интерпретировано как число с плавающей запятой. Например, если 1.20 не заключить в кавычки, оно станет 1.2.

versioned_plugins_url_segments

список / элементы=строка

добавлен в community.general 3.3.0

Путь внутри updates_url, откуда получать плагины определённой версии.

По умолчанию: ["download/plugins", "plugins"]

with_dependencies

логический

Определяет, устанавливать ли зависимости плагина.

В предыдущих версиях этот параметр не действовал, если была задана конкретная version. Начиная с community.general 11.2.0, зависимости устанавливаются также для плагинов с указанной версией.

Варианты:

  • false
  • true ← (по умолчанию)

Атрибуты

Атрибут

Поддержка

Описание

check_mode

Поддержка: полная

Может работать в режиме check_mode и возвращать прогноз изменения состояния без внесения изменений в целевую систему.

diff_mode

Поддержка: нет

В режиме diff возвращает сведения об изменениях (или возможных изменениях в check_mode).

Примечания

Примечание

  • Установку плагина следует выполнять от имени root или того же пользователя, которому принадлежат файлы плагина на диске. Если плагин ещё не установлен и версия не указана, установка выполняется через API; для неё достаточно учётных данных веб-интерфейса.
  • После установки нового плагина необходимо вызвать обработчик или модуль ansible.builtin.service, чтобы перезапустить службу Jenkins.
  • Закрепление версии работает только в том случае, если плагин установлен и после его установки служба Jenkins была успешно перезапущена.
  • Нельзя запустить модуль удалённо, изменив параметр url и указав сервер Jenkins. Модуль необходимо запускать на узле, где работает Jenkins, поскольку ему нужен прямой доступ к файлам плагинов.
  • При использовании пользовательского updates_url убедитесь, что URL предоставляет файл plugin-versions.json. Этот файл должен содержать метаданные всех доступных версий плагинов для разрешения совместимости версий. Формат файла должен совпадать с форматом файла центра обновлений Jenkins (https://updates.jenkins.io/current/plugin-versions.json).

Примеры

- name: Install plugin
  community.general.jenkins_plugin:
    name: build-pipeline-plugin

- name: Install plugin without its dependencies
  community.general.jenkins_plugin:
    name: build-pipeline-plugin
    with_dependencies: false

- name: Make sure the plugin is always up-to-date
  community.general.jenkins_plugin:
    name: token-macro
    state: latest

- name: Install specific version of the plugin
  community.general.jenkins_plugin:
    name: token-macro
    version: "1.15"

- name: Pin the plugin
  community.general.jenkins_plugin:
    name: token-macro
    state: pinned

- name: Unpin the plugin
  community.general.jenkins_plugin:
    name: token-macro
    state: unpinned

- name: Enable the plugin
  community.general.jenkins_plugin:
    name: token-macro
    state: enabled

- name: Disable the plugin
  community.general.jenkins_plugin:
    name: token-macro
    state: disabled

- name: Uninstall plugin
  community.general.jenkins_plugin:
    name: build-pipeline-plugin
    state: absent

#
# Example of how to authenticate
#
- name: Install plugin
  community.general.jenkins_plugin:
    name: build-pipeline-plugin
    url_username: admin
    url_password: p4ssw0rd
    url: http://localhost:8888

#
# Example of how to authenticate with serverless deployment
#
- name: Update plugins on ECS Fargate Jenkins instance
  community.general.jenkins_plugin:
    # plugin name and version
    name: ws-cleanup
    version: '0.45'
    # Jenkins home path mounted on ec2-helper VM (example)
    jenkins_home: "/mnt/{{ jenkins_instance }}"
    # matching the UID/GID to one in official Jenkins image
    owner: 1000
    group: 1000
    # Jenkins instance URL and admin credentials
    url: "https://{{ jenkins_instance }}.com/"
    url_username: admin
    url_password: p4ssw0rd
  # make module work from EC2 which has local access
  # to EFS mount as well as Jenkins URL
  delegate_to: ec2-helper
  vars:
    jenkins_instance: foobar

#
# 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: true
      build-pipeline-plugin:
        version: "1.4.9"
        pinned: false
        enabled: true
  tasks:
    - name: Install plugins without a specific version
      community.general.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
      community.general.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
      ansible.builtin.set_fact:
        jenkins_restart_required: false

    - name: Check if restart is required by any of the versioned plugins
      ansible.builtin.set_fact:
        jenkins_restart_required: true
      when: item.changed
      with_items: "{{ my_jenkins_plugin_versioned.results }}"

    - name: Check if restart is required by any of the unversioned plugins
      ansible.builtin.set_fact:
        jenkins_restart_required: true
      when: item.changed
      with_items: "{{ my_jenkins_plugin_unversioned.results }}"

    - name: Restart Jenkins if required
      ansible.builtin.service:
        name: jenkins
        state: restarted
      when: jenkins_restart_required

    - name: Wait for Jenkins to start up
      ansible.builtin.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
      ansible.builtin.set_fact:
        jenkins_restart_required: false
      when: jenkins_restart_required

    - name: Plugin pinning
      community.general.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
      community.general.jenkins_plugin:
        name: "{{ item.key }}"
        state: "{{ 'enabled' if item.value['enabled'] else 'disabled'}}"
      when: >
        'enabled' in item.value
      with_dict: "{{ my_jenkins_plugins }}"

Возвращаемые значения

Общие возвращаемые значения описаны здесь; ниже перечислены поля, уникальные для этого модуля:

Ключ

Описание

plugin

строка

Имя плагина.

Возвращается: при успешном выполнении

Пример: "build-pipeline-plugin"

state

строка

Состояние целевого объекта после выполнения.

Возвращается: при успешном выполнении

Пример: "present"

Авторы

  • Jiri Tyr (@jtyr)

Ссылки на коллекцию

  • Отслеживание проблем
  • Репозиторий (исходный код)
  • Задать вопрос
  • Сообщить об ошибке
  • Предложить новую функцию
  • Связь с сообществом

© 2012–2018 Michael DeHaan
© 2018–2025 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/projects/ansible/latest/collections/community/general/jenkins_plugin_module.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API