ansible jenkins_plugins mdule: ошибка при повторном воспроизведении книги воспроизведения: Jenkins Home не найден - PullRequest
0 голосов
/ 24 июня 2019

У меня проблема с модулем jenkins_plugins. В книге игр, которая извлекает образ докера jenkins (jenkins / jenkins: lts-alpine) и запускает его для установки экземпляра и его настройки, у меня есть задача, которая устанавливает список плагинов для экземпляра, а именно:

- name: Install plugins
  jenkins_plugin:
    owner: "{{ jenkins_process_user }}"
    group: "{{ jenkins_process_group }}"
    name: "{{ item }}"
    state: latest
    timeout: 120
    url: "http://{{ jenkins_hostname }}:{{ jenkins_http_port }}{{ jenkins_url_prefix }}"
    url_username: "{{ jenkins_admin_name }}"
    url_password: "{{ jenkins_admin_password }}"
    with_dependencies: yes
  loop: "{{ jenkinsPlugins }}"
  register: pluginResult
  until: not pluginResult.failed
  retries: 5
  notify: restart_image
  become: True
  become_user: "{{ jenkins_process_user }}"

Работает корректно при первом запуске playbook. Все плагины установлены и, возможно, повторены в случае проблем.

Но, когда я перезапускаю одну и ту же книгу воспроизведения, каждая установка плагина повторяется до максимального количества попыток и завершается с ошибкой (например):

failed: [devEnv] (item=blueocean) => {"ansible_loop_var": "item", "attempts": 5, "changed": false, "item": "blueocean", "msg": "Jenkins home directory doesn't exist."}

Конечно, я проверил, что домашний каталог jenkins действительно существует и имеет ожидаемый "{{jenkins_process_user}}" и Владелец и группа "{{jenkins_process_group}}", которая является jenkins: jenkins.

Обратите внимание, что док-контейнер связан с локальным каталогом, который принадлежит jenkins: jenkins. Чтобы убедиться, что uid и gid одинаковы на локальном компьютере (виртуальная машина, созданная с помощью vagrant) и на контейнере, при запуске контейнера для uid: gid устанавливается значение 1001: 1001. Я также проверил, что это действительно так.

Я действительно не могу объяснить, почему я получаю эту ошибку, что явно делает этот сборник идей не идемпотентным!

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

Конечно, я могу дать всю книгу, если вам нужна дополнительная информация.

Спасибо за вашу помощь. J-L

1 Ответ

0 голосов
/ 24 июня 2019

Хорошо, я понимаю проблему. Еще раз прочитав документацию jenkins_plugins и просмотрев код модуля jenkins_plugins, я обнаружил, что при установке и проверке уже установленной версии плагина не выполняется один и тот же код (две разные альтернативы теста). А для второго необходимо определить **JENKINS_HOME**, что необязательно (по умолчанию /var/lib/jenkins) для параметров модуля. Я не установил это. Ну, это на самом деле /var/lib/jenkins на контейнере, но не на контроллере докера, который является заданной целью playbook, где он /home/jenkins/jenkins_home.

Итак ... Этот вопрос закрыт, если у кого-то нет дополнительной информации. Не за что!

С наилучшими пожеланиями.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...