jenkins2

Статус сборки

Роль Ansible для Jenkins 2+

Эта роль Ansible может быть использована для установки и управления Jenkins 2.

Требования

Эта роль требует Ansible версии 2.4 или выше, с включенной функциональностью Ansible pipelining или доступной командой setfacl на управляемой системе (в соответствии с Переходом на пользователя без привилегий).

Роль на данный момент поддерживает Ubuntu 14.04 (Trusty) и Ubuntu 16.04 (Xenial), однако мы приветствуем участия по поддержке других платформ!

Переменные роли

Эта роль поддерживает следующие переменные, указанные здесь с их значениями по умолчанию из defaults/main.yml:

  • jenkins_release_line: 'weekly'
    • Если установлено в long_term_support, роль установит LTS релизы Jenkins.
    • Если установлено в weekly, роль установит еженедельные релизы Jenkins.
  • jenkins_release_update: true
    • Если true, пакет Jenkins (YUM, APT и т.д.) будет обновлен до последней версии при выполнении этой роли.
  • jenkins_home: /var/lib/jenkins
    • Директория, в которой будет храниться (большинство) данных Jenkins.
    • Из-за ограничений установщика Jenkins, учетная запись сервиса jenkins все равно будет использовать значение по умолчанию в качестве домашней директории. Это особенно важно для SSH ключей.
  • jenkins_port: 8080
    • Порт, на котором будет работать Jenkins для HTTP запросов.
    • На большинстве систем это значение должно быть больше 1024, так как Jenkins не работает под пользователем root.
  • jenkins_context_path: ''
    • Контекстный путь, по которому будет размещен Jenkins, например, /foo в http://localhost:8080/foo. Оставьте как '', чтобы разместить на корневом пути.
  • jenkins_url_external: ''
    • Внешний URL, который пользователи будут использовать для доступа к Jenkins. Устанавливается в конфигурации Jenkins и используется в электронных письмах, вебхуках и т.д.
    • Если это значение оставить пустым или None, конфигурация не будет установлена, и Jenkins попытается автоматически определить URL (что не сработает корректно, если он находится за прокси).
  • jenkins_admin_username: (не определено)
    • Если определены jenkins_admin_username и jenkins_admin_password, то оба должны быть определены.
    • Переопределите эту переменную, чтобы указать учетные данные администратора Jenkins, которые должны использоваться для каждой возможной области безопасности.
    • Если оставить неопределенной, роль попытается использовать анонимную аутентификацию.
    • Обратите внимание, что роль автоматически обнаружит, если Jenkins настроен на разрешение анонимной аутентификации (как это происходит сразу после установки) и обработает это соответствующим образом.
  • jenkins_admin_password: (не определено)
    • Если определены jenkins_admin_username и jenkins_admin_password, то оба должны быть определены.
    • Переопределите эту переменную, чтобы указать учетные данные администратора Jenkins, которые должны использоваться для каждой возможной области безопасности.
  • jenkins_session_timeout: 30
    • Количество минут, прежде чем сессии Jenkins истекут, т.е. как долго авторизации будут действительными.
    • Значение по умолчанию — 30 минут.
    • Может быть установлено в 0, чтобы никогда не истекало.
  • jenkins_plugins_extra: []
    • Переопределите эту переменную, чтобы установить дополнительные плагины Jenkins.
    • Эти плагины будут добавлены к плагинам, рекомендованным новым мастером настройки Jenkins 2, которые автоматически устанавливаются этой ролью (см. jenkins_plugins_recommended в defaults/main.yml).
  • jenkins_plugins_timeout: 60
    • Количество времени (в секундах), прежде чем установка/обновление плагина будет признано неудачным. Это значение передается параметру тайм-аута в модуле jenkins_plugin. (Подробнее см. тут: http://docs.ansible.com/ansible/latest/jenkins_plugin_module.html#options.)
  • jenkins_plugins_update: true
    • Если true, плагины Jenkins будут обновлены при выполнении этой роли. (Обратите внимание, что отсутствующие плагины всегда будут установлены.)
  • jenkins_java_args_extra: ''
    • Дополнительные параметры, которые будут добавлены к JAVA_ARGS для процесса Jenkins, такие как настройки памяти JVM, например, -Xmx4g.
  • jenkins_http_proxy_server, jenkins_http_proxy_port, jenkins_http_proxy_no_proxy_hosts: (все неопределены)
    • Эти параметры выполняют ту же функцию, что и системные свойства JVM http.proxyHost, http.proxyPort и http.nonProxyHosts, за исключением того, что настройки будут использоваться как для HTTP, так и для HTTPS запросов.
    • В частности, эти параметры будут использованы для настройки:
      • Свойств системы Jenkins JVM http.proxyHost, http.proxyPort, https.proxyHost, https.proxyPort и http.nonProxyHosts, как задокументировано в Java Networking and Proxies.
      • Специфических для Jenkins настроек прокси (которые требуют некоторые плагины, такие как GitHub плагин), как задокументировано в JenkinsBehindProxy.
      • Значение jenkins_http_proxy_no_proxy_hosts должно быть списком, например, ['localhost', 'example.com'].

Зависимости

Эта роль не имеет прямых зависимостей от других ролей Ansible. Однако она требует, чтобы JRE Java была доступна в системном пути.

Пример плейбука

Эту роль можно установить следующим образом:

$ ansible-galaxy install karlmdavis.jenkins2

Эту роль можно применить следующим образом:

- хосты: some_box
  задачи:
    - import_role:
        name: karlmdavis.ansible-jenkins2
      vars:
        jenkins_plugins_extra:
          - github-oauth

Запуск Groovy скриптов для настройки Jenkins

После установки Jenkins, можно запускать Groovy скрипты через Ansible для дальнейшей настройки Jenkins.

Например, вот как установить Jenkins и затем настроить его для использования HudsonPrivateSecurityRealm, для локальных аккаунтов Jenkins:

- хосты: some_box
  задачи:

    - import_role:
        name: karlmdavis.ansible-jenkins2
      vars:
        # Не будет требоваться при первом запуске, но будет на предыдущих запусках (после
        # включения безопасности, как указано ниже).
        jenkins_admin_username: test
        jenkins_admin_password: supersecret

    # Убедитесь, что Jenkins перезапустился, если это необходимо.
    - meta: flush_handlers

    # Настройка безопасности для использования локальных аккаунтов Jenkins.
    - name: Настроить безопасность
      jenkins_script:
        url: "{{ jenkins_url_local }}"
        user: "{{ jenkins_dynamic_admin_username | default(omit) }}"
        password: "{{ jenkins_dynamic_admin_password | default(omit) }}"
        script: |
          // Это базовые импорты, которые интерактивная консоль скриптов Jenkins
          // включает автоматически.
          import jenkins.*;
          import jenkins.model.*;
          import hudson.*;
          import hudson.model.*;

          // Настройка области безопасности, которая отвечает за аутентификацию.
          def securityRealm = new hudson.security.HudsonPrivateSecurityRealm(false)
          if(!securityRealm.equals(Jenkins.instance.getSecurityRealm())) {
            Jenkins.instance.setSecurityRealm(securityRealm)

            // Создайте пользователя для входа. Убедитесь, что пользователь связан
            // с SSH ключом системного локального пользователя `jenkins`, чтобы обеспечить
            // возможность использования этой учетной записи с CLI Jenkins.
            def testUser = securityRealm.createAccount("test", "supersecret")
            testUser.addProperty(new hudson.tasks.Mailer.UserProperty("[email protected]"));
            testUser.save()

            Jenkins.instance.save()
            println "Изменена аутентификация."
          }

          // Настройка стратегии авторизации, которая определяет, кто может делать
          // что.
          def authorizationStrategy = new hudson.security.FullControlOnceLoggedInAuthorizationStrategy()
          if(!authorizationStrategy.equals(Jenkins.instance.getAuthorizationStrategy())) {
            authorizationStrategy.setAllowAnonymousRead(false)
            Jenkins.instance.setAuthorizationStrategy(authorizationStrategy)
            Jenkins.instance.save()
            println "Изменена авторизация."
          }
      register: shell_jenkins_security
      changed_when: "(shell_jenkins_security | success) and 'Changed' not in shell_jenkins_security.stdout"

Или скрипты Groovy могут быть сохранены как отдельные файлы и загружены с использованием lookup(...), как показано ниже:

- хосты: some_box
  задачи:

    - import_role:
        name: karlmdavis.ansible-jenkins2
      vars:
        # Не будет требоваться при первом запуске, но будет на предыдущих запусках (после
        # включения безопасности, как указано ниже).
        jenkins_admin_username: test
        jenkins_admin_password: supersecret

    # Убедитесь, что Jenkins перезапустился, если это необходимо.
    - meta: flush_handlers

    # Настройка безопасности для использования локальных аккаунтов Jenkins.
    - name: Настроить безопасность
      jenkins_script:
        url: "{{ jenkins_url_local }}"
        user: "{{ jenkins_dynamic_admin_username | default(omit) }}"
        password: "{{ jenkins_dynamic_admin_password | default(omit) }}"
        script: "{{ lookup('template', 'templates/jenkins_security.groovy.j2') }}"

Лицензия

Этот проект свободен для использования и находится в общественном достоянии. Как указано в CONTRIBUTING:

Этот проект находится в общественном достоянии в пределах Соединенных Штатов, и авторские права и сопутствующие права на работу во всем мире отменены через CC0 1.0 Universal public domain dedication.

Все вклады в этот проект будут выпущены под CC0. Отправляя запрос на изменение, вы соглашаетесь с отказом от авторских прав.

Информация об авторе

Этот плагин был создан Карлом М. Дэвисом (https://justdavis.com/karl/).

О проекте

This Ansible role can be used to install and manage Jenkins 2.

Установить
ansible-galaxy install karlmdavis/ansible-role-jenkins2
Лицензия
other
Загрузки
875
Владелец