Для Ansible имеется плагин, позволяющий выполнить установку плагинов для Jenkins
jenkins_plugin_module
.
Достаточно интересный модуль, ниже пример его использования и решение ошибки «Connection refused«.
При попытке установить плагин с его помощью:
... - name: Start Jenkins service service: name=jenkins state=restarted enabled=yes - name: Install Jenkins plugins jenkins_plugin: name: "{{ item }}" url_username: "{{ jenkins_ui_admin_user }}" url_password: "{{ jenkins_ui_admin_pass }}" state: present with_items: - locale
Возникает ошибка:
Причина — после выполнения systemctl restart jenkins.service
в предыдущей задаче — Jenkins не успевает запуститься до того, как начинается выполнение задачи по установке плагинов, которая использует
Для исправления — добавим вызов модуля uri
... - name: Start Jenkins service service: name=jenkins state=restarted enabled=yes - name: Wait for Jenkins to start up uri: url: http://localhost:8080 status_code: 200 user: "{{ jenkins_ui_admin_user }}" password: "{{ jenkins_ui_admin_pass }}" timeout: 5 force_basic_auth: yes register: jenkins_service_status retries: 10 delay: 5 until: > 'status' in jenkins_service_status and jenkins_service_status['status'] == 200 - name: Check Jenkins status debug: msg: "Jenkins status: {{ jenkins_service_status['status'] }}" - name: Install Jenkins plugins jenkins_plugin: name: "{{ item }}" url_username: "{{ jenkins_ui_admin_user }}" url_password: "{{ jenkins_ui_admin_pass }}" state: present with_items: - locale when: jenkins_service_status['status'] == 200
Проверяем:
Готово.
P.S. Но jenkins_plugin
имеет ещё одну проблему — падает с ошибкой «Jenkins home directory doesn’t exist» при повторном запуске, т.е. при попытке установить уже имеющиеся плагины. И вообще он в preview.