jenkins

Установка Jenkins 2

Лицензия Статус сборки Статус сборки Galaxy Ansible Ansible

Обзор

Эта роль:

  • устанавливает jenkins2 на Ubuntu, CentOS7, RHEL7
  • выполняет минимальную конфигурацию (например, настройки SMTP, установка плагинов)

Задачи роли

  • Установка Jenkins
  • Установка плагинов
  • Настройка плагинов через JCasC
    • Настройка SMTP через JCasC
    • Добавление учетных данных через JCasC
  • Настройка плагинов через groovy скрипты
    • Настройка SMTP через groovy скрипты
    • Добавление учетных данных через groovy скрипты
  • Генерация ssh ключей и их копирование на узлы-рабочие

Требования

  • Минимальная версия Ansible для установки: 2.7
  • Java 8 Статус сборки
  • Поддерживаемые ОС:
    • CentOS
      • 8
    • RHEL
      • 8
    • Amazon Linux 2
    • Ubuntu 18
    • Debian 9

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


конфигурация для jenkins

  • jenkins2_user - пользователь и группа ОС, используемые для запуска jenkins
    по умолчанию: jenkins
  • jenkins2_package_version - имя пакета для установки jenkins
    по умолчанию: jenkins
  • jenkins2_release_line - версия пакета для установки: стабильная или последняя
    по умолчанию: stable
  • jenkins2_disable_gpg_check - пропуск проверки gpg (только для yum)
    по умолчанию: false
  • jenkins2_key_validate_certs - проверять сертификаты во время установки ключа (только для yum)
    по умолчанию: true
  • jenkins2_context_path -Контекстный путь Jenkins
    по умолчанию: ''
  • jenkins2_cli_username - имя пользователя для подключения к jenkins cli
    по умолчанию: admin
  • jenkins2_cli_password - пароль пользователя для подключения к jenkins cli
    по умолчанию: admin
  • jenkins2_home_directory - каталог, где Jenkins хранит свою конфигурацию и рабочие файлы (проверки, отчеты о сборке, артефакты и т.д.)
    по умолчанию: /var/lib/jenkins

Параметры конфигурации Jenkins: используются в /etc/sysconfig/jenkins или в /etc/default/jenkins

  • jenkins2_config_java_cmd - Java исполняемая программа для запуска Jenkins
    по умолчанию: ''
  • jenkins2_config_java_options - Опции, передаваемые Java при запуске Jenkins.
    по умолчанию: -Djava.awt.headless=true -Djenkins.install.runSetupWizard=false -Dmail.smtp.starttls.enable='true' -Dhudson.slaves.WorkspaceList=_
  • jenkins2_config_http_port - Порт, на котором Jenkins слушает.
    по умолчанию: 8080
  • jenkins2_config_listen_address - IP-адрес, на котором Jenkins ожидает HTTP-запросы. По умолчанию - все интерфейсы (0.0.0.0).
    по умолчанию: ''
  • jenkins2_config_debug_level - Уровень отладки для логов -- чем выше значение, тем больше информации. 5 - это INFO.
    по умолчанию: 5
  • jenkins2_config_enable_access_log - Включить ли ведение журнала доступа или нет.
    по умолчанию: no
  • jenkins2_config_handler_max - Максимальное количество потоков-работников HTTP.
    по умолчанию: 100
  • jenkins2_config_handler_idle - Максимальное количество неподвижных потоков-работников HTTP.
    по умолчанию: 20
  • jenkins2_config_args - Передача произвольных аргументов Jenkins. Полный список опций: java -jar jenkins.war --help
    по умолчанию: ''

Включение HTTPS

  • jenkins2_https_enabled - Использовать или не использовать безопасное соединение.
    по умолчанию: true
  • jenkins2_http_disabled - Отключить незащищенное соединение.
    по умолчанию: false
  • jenkins2_config_https_port - Порт Jenkins для безопасного соединения (https).
    по умолчанию: 8443
  • jenkins2_local_keystore - Если да, - искать хранилище ключей на хосте ansible по пути {{ jenkins2_local_keystore_path }}. Если нет, - проверить хранилище ключей на удаленном хосте. по умолчанию: false
  • jenkins2_local_keystore_path - Путь к локальному файлу хранилища ключей (чтобы не создавать самоподписанный сертификат)
    по умолчанию: {{ role_path }}/files/{{ jenkins2_ssl_key_store_name }}
  • jenkins2_ssl_configure - Настроить или не настраивать ssl соединение для jenkins.
    по умолчанию: true
  • jenkins2_ssl_key_store_name - Имя файла хранилища ключей. Если файл с таким именем существует в папке роли/файлы - он будет использован как хранилище ключей.
    по умолчанию: jenkins2-ssl.keystore.jks
  • jenkins2_ssl_key_size - Размер ключа сертификата.
    по умолчанию: 4096
  • jenkins2_ssl_key_store_password - Пароль хранилища ключей.
    по умолчанию: 123456
  • jenkins2_ssl_key_store - Полный путь к файлу хранилища ключей.
    по умолчанию: '{{ jenkins2_home_directory }}/{{ jenkins2_ssl_key_store_name }}'
  • jenkins2_ssl_certificate_provider - Только для Linux ОС. https://docs.ansible.com/ansible/latest/openssl_certificate_module.html.
    по умолчанию: selfsigned

Сертификат

  • jenkins2_ca_domain - Доменное имя сертификата.
    по умолчанию: example.com
  • jenkins2_local_pkey_file_name - Имя частного сертификата.
    по умолчанию: {{ ansible_hostname }}.ca-pkey.pem
  • jenkins2_local_cert_file_name - Имя публичного сертификата.
    по умолчанию: {{ ansible_hostname }}.ca-cert.pem

Конфигурация прокси Jenkins

  • jenkins2_proxy_url - URL прокси для конфигурации загрузки плагинов
    по умолчанию: ''
  • jenkins2_proxy_host - Имя хоста прокси-сервера
    по умолчанию: ''
  • jenkins2_proxy_port - Порт прокси-сервера
    по умолчанию: 0
  • jenkins2_proxy_username - Имя пользователя для подключения к прокси
    по умолчанию: ''
  • jenkins2_proxy_password - Пароль для подключения к прокси
    по умолчанию: ''
  • jenkins2_proxy_no_proxy_hosts - Хосты, которые следует исключить из прокси
    по умолчанию: ''

Конфигурация генерации ssh-ключей

  • jenkins2_ssh_keys_generate - добавить возможность генерировать пары SSH-ключей под пользователем jenkins
    по умолчанию: false
  • jenkins2_ssh_keys_private_keyname - имя частного ключа
    по умолчанию: id_rsa
  • jenkins2_ssh_keys_size - размер ключа ssh rsa
    по умолчанию: 4096
  • jenkins2_ssh_keys_inv_slave_groupname - имя группы слейвов в инвентарном файле
    по умолчанию: jenkins_ssh_slaves

Способ конфигурации Jenkins

  • jenkins2_configure_by_casc - Установить конфигурацию по JCasC jenkins2_configure_by_groovy должно быть = false по умолчанию: true
  • jenkins2_jcasc_directory - Относительный путь, по которому JCasC будет искать yaml файлы по умолчанию: jcasc
  • jenkins2_jcasc_config - Конфигурация для JCasC, которую можно скопировать из существующей конфигурации и вставить в эту переменную Иногда конфигурация, скопированная из интерфейса Jenkins, может быть неприменима, её следует сначала протестировать

Если выбрана jenkins2_configure_by_casc, следующая конфигурация не должна использоваться:

  - Глобальная конфигурация инструментов
  - настройки smtp
  - конфигурация плагинов jenkins
  - конфигурация учетных данных
  - конфигурация проекта bitbucket
  - конфигурация sonarqube
  - копирование пользовательских файлов
  - конфигурация Gitlab
  - конфигурация Github
  - конфигурация Jira
  - конфигурация плагина EC2
  - Конфигурация безопасности и авторизации
  - Конфигурация плагина `active-directory` по умолчанию
  - Конфигурация плагина `LDAP` по умолчанию

Используйте только конфигурацию JCasC! Пожалуйста, смотрите примеры плейбуков ниже

  • jenkins2_configure_by_groovy - Установить конфигурацию по groovy, может использоваться, если конфигурация по groovy более удобна jenkins2_configure_by_casc должна быть = false по умолчанию : false

Глобальная конфигурация инструментов

  • jenkins2_globaltools_enable - включить автоконфигурацию для всех глобальных инструментов
    по умолчанию: false
  • jenkins2_globaltools_jdk_enable - включить автоконфигурацию для JDK
    по умолчанию: true
  • jenkins2_globaltools_jdk_version - список версий для JDK (определен как список)
    по умолчанию: []
  • jenkins2_globaltools_jdk_cred_user - имя пользователя для репозитория oracle
    по умолчанию: 'user'
  • jenkins2_globaltools_jdk_cred_password - пароль для репозитория oracle
    по умолчанию: 'password'
  • jenkins2_globaltools_jdk_template - Имя шаблона конфигурации JDK без .j2. Не забудьте настроить все необходимые переменные для шаблона по умолчанию: globaltools\jdk.groovy
  • jenkins2_globaltools_maven_enable - включить автоконфигурацию для Maven
    по умолчанию: true
  • jenkins2_globaltools_maven_version - список версий для Maven (определен как список)
    по умолчанию: []
  • jenkins2_globaltools_maven_template - Имя шаблона конфигурации Maven без .j2. Не забудьте настроить все необходимые переменные для шаблона по умолчанию: globaltools\maven.groovy
  • jenkins2_globaltools_ant_enable - включить автоконфигурацию для Ant
    по умолчанию: true
  • jenkins2_globaltools_ant_version - список версий для Ant (определен как список)
    по умолчанию: []
  • jenkins2_globaltools_ant_template - Имя шаблона конфигурации Ant без .j2. Не забудьте настроить все необходимые переменные для шаблона по умолчанию: globaltools\ant.groovy
  • jenkins2_globaltools_nodejs_enable - включить автоконфигурацию для Node.js
    по умолчанию: true
  • jenkins2_globaltools_nodejs_version - список версий для Node.js (определен как список)
    по умолчанию: []
  • jenkins2_globaltools_nodejs_template - Имя шаблона конфигурации Node.js без .j2. Не забудьте настроить все необходимые переменные для шаблона по умолчанию: globaltools\nodejs.groovy
  • jenkins2_globaltools_sonarscanner_enable - включить автоконфигурацию для SonarQube Scanner
    по умолчанию: true
  • jenkins2_globaltools_sonarscanner_version - список версий для SonarQube Scanner (определен как список)
    по умолчанию: []
  • jenkins2_globaltools_sonarscanner_template - Имя шаблона конфигурации SonarQube Scaner без .j2. Не забудьте настроить все необходимые переменные для шаблона по умолчанию: globaltools\sonarscanner.groovy
  • jenkins2_globaltools_sonarscannermsbuild_enable - включить автоконфигурацию для SonarQube Scanner для MSBuild
    по умолчанию: true
  • jenkins2_globaltools_sonarscannermsbuild_version - список версий для SonarQube Scanner для MSBuild (определен как список)
    по умолчанию: []
  • jenkins2_globaltools_sonarscannermsbuild_template - Имя шаблона конфигурации SonarQube Scaner для MSBuild без .j2. Не забудьте настроить все необходимые переменные для шаблона по умолчанию: globaltools\sonarscannermsbuild.groovy
  • jenkins2_globaltools_gradle_enable - включить автоконфигурацию для Gradle
    по умолчанию: true
  • jenkins2_globaltools_gradle_version - список версий для SonarQube Scanner для Gradle (определен как список)
    по умолчанию: []
  • jenkins2_globaltools_gradle_template - Имя шаблона конфигурации Gradle без .j2. Не забудьте настроить все необходимые переменные для шаблона по умолчанию: globaltools\gradle.groovy
  • jenkins2_globaltools_docker_enable - включить автоконфигурацию для Docker
    по умолчанию: true
  • jenkins2_globaltools_docker_version - список версий для Docker (определен как список)
    по умолчанию: []
  • jenkins2_globaltools_docker_template - Имя шаблона конфигурации Docker без .j2. Не забудьте настроить все необходимые переменные для шаблона по умолчанию: globaltools\docker.groovy

настройки smtp

  • jenkins2_smtp_enabled - для настройки конфигурации smtp
    по умолчанию: true
  • jenkins2_smtp_sysad_email - email администратора jenkins
    по умолчанию: [email protected]
  • jenkins2_smtp_user - email администратора jenkins
    по умолчанию: [email protected]
  • jenkins2_smtp_password - пароль пользователя smtp
    по умолчанию: password
  • jenkins2_smtp_port - порт smtp сервера
    по умолчанию: 587
  • jenkins2_smtp_host - имя хоста smtp сервера
    по умолчанию: smtp.office365.com

настройка плагинов jenkins

  • jenkins2_updates_url - URL Центра обновлений. Используется как базовый URL для загрузки плагинов и файла update-center.json.
    по умолчанию: https://updates.jenkins.io
  • jenkins2_plugins_timeout - тайм-аут установки плагинов
    по умолчанию: 2000
  • jenkins2_plugins_list - список плагинов (будет объединен с предложенным списком)
    по умолчанию: []
  • jenkins2_plugins_version - Включить указание номеров версий. Все зависимости плагинов должны быть указаны в jenkins2_plugins_dict.
    по умолчанию: false
  • jenkins2_plugins_install_dependencies - Установить зависимости плагинов, если точные версии плагинов не указаны.
    по умолчанию: true
  • jenkins2_plugins_dict - словарь плагинов, используемый вместо списков, если версия включена. Укажите версию в кавычках, чтобы предотвратить её интерпретацию как число с плавающей точкой. Пример: ssh-slaves: '1.30.0' по умолчанию: {}
    jenkins2_plugins_version: false

конфигурация учетных данных

  • jenkins2_credentials_enabled - для добавления учетных данных
    по умолчанию: true
  • jenkins2_credentials - карта учетных данных

конфигурация библиотек конвейера

  • jenkins2_pipeline_libraries_enabled - для настройки Глобальных Библиотек Конвейера
    по умолчанию: false
  • jenkins2_pipeline_libraries_name - Имя Библиотеки, используемое в аннотации @Library
    по умолчанию: Pipeline_Libraries
  • jenkins2_pipeline_libraries_url - URL удаленного репозитория
    по умолчанию: ''
  • jenkins2_pipeline_libraries_version - Версия библиотеки по умолчанию для загрузки, если другой не выбрана в скрипте. Может быть имя ветки, тег, хеш коммита и т.д., в зависимости от SCM.
    по умолчанию: 'master'

конфигурация проекта bitbucket

  • jenkins2_bitbucket_project_enabled - для настройки команды/проекта Bitbucket
    по умолчанию: false
  • jenkins2_bitbucket_project_owner - Имя команды Bitbucket или учетной записи пользователя Bitbucket. Это также может быть проект Bitbucket, если используется Bitbucket Server. В этом случае (Bitbucket Server): используйте ключ проекта, а не его название. Если используете учетную запись пользователя вместо проекта, добавьте символ "" перед именем пользователя, например "joe".
    по умолчанию: Bitbucket_Project_Owner
  • jenkins2_bitbucket_project_repo_regexp - Регулярное выражение Java для ограничения имен репозиториев. Имена репозиториев, не соответствующие указанному регулярному выражению, будут проигнорированы.
    по умолчанию: ''
  • jenkins2_bitbucket_project_discover_branches_strategy - Определяет, какие ветви будут обнаружены. 1 - Исключить ветви, которые также поданы как PR, 2 - Только ветви, которые также поданы как PR, 3 - Все ветви.
    по умолчанию: 1
  • jenkins2_bitbucket_project_discover_pr_strategy - Определяет, как обнаруживаются запросы на слияние. 1 - Слияние запроса на слияние с текущей ревизией целевой ветви, 2 - Текущая ревизия запроса на слияние, 3 - Как текущая ревизия запроса на слияние, так и запрос на слияние с текущей целевой ветвью.
    по умолчанию: 1
  • jenkins2_bitbucket_project_scan_interval - Максимальное время с момента последней индексации, по истечении которого будет инициирована индексация. по умолчанию: 60
  • jenkins2_bitbucket_project_autobuild_branches - Совпадающие ветки будут автоматически запущены.
    по умолчанию: 'master|develop|PR-[0-9]+'

конфигурация sonarqube

  • jenkins2_sonarqube_enabled - для добавления конфигурации SonarQube
    по умолчанию: false
  • jenkins2_sonarqube_name - Имя SonarQube
    по умолчанию: SonarQube
  • jenkins2_sonarqube_url - URL сервера SonarQube
    по умолчанию: http://localhost:9000
  • jenkins2_sonarqube_token - Токен аутентификации SonarQube. Обязателен, когда анонимный доступ отключен.
    по умолчанию: ''
  • jenkins2_sonarqube_maven_plugin - Версия sonar-maven-plugin. Если не указана, цель будет sonar:sonar.
    по умолчанию: ''
  • jenkins2_sonarqube_arguments - Дополнительные аргументы командной строки, которые будут переданы сканеру SonarQube. Например, -X.
    по умолчанию: ''
  • jenkins2_sonarqube_analysis_properties - Дополнительные свойства анализа в формате пар «ключ-значение». Например, sonar.analysis.mode=issues.
    по умолчанию: ''

копирование пользовательских файлов

  • jenkins2_custom_files_enabled - для копирования пользовательских файлов в Jenkins
    по умолчанию: false
  • jenkins2_custom_files - карта с параметрами файлов
    по умолчанию: log_parser: src: '{{ role_path }}/files/pipeline_error_in_init_console' dest: '{{ jenkins2_home_directory }}' owner: '{{ jenkins2_user }}' group: '{{ jenkins2_user }}' mode: '0755'

Конфигурация Gitlab

  • jenkins2_gitlab_enabled - для включения конфигурации gitlab
    по умолчанию: false
  • gitlab_external_url - внешний URL gitlab
    по умолчанию: https://localhost
  • jenkins2_gitlab_token_cred - ID токена gitlab (из учетных данных: gitlabtoken в примере ниже)
    по умолчанию: gitlab_token

Конфигурация Github

  • jenkins2_github_enabled - для включения конфигурации github
    по умолчанию: false
  • github_external_url - внешний URL github
    по умолчанию: https://localhost
  • github_manage_hooks - управлять хуками github
    по умолчанию: true
  • github_client_cache_size - размер кеша клиента github
    по умолчанию: 20
  • jenkins2_github_token_cred - ID токена github (из учетных данных: secrettext в примере ниже)
    по умолчанию: github_token

Конфигурация Jira

  • jenkins2_jira_enabled - для включения конфигурации jira
    по умолчанию: false
  • jenkins2_jira_url - URL jira
    по умолчанию: https://jira.example.com
  • jenkins2_jira_alternative_url - альтернативный URL jira
    по умолчанию: https://jira.example.com
  • jenkins2_jira_use_http_auth - Эта опция заставляет Jenkins подключаться к JIRA с использованием HTTP Basic Authentication, вместо входа через RPC
    по умолчанию: true
  • jenkins2_jira_support_wiki_notation - если true, JIRA поддерживает заметки Wiki в комментариях. Если true, Jenkins будет размещать комментарии, использующие заметки Wiki. Если false, Jenkins будет размещать только текстовые комментарии
    по умолчанию: true
  • jenkins2_jira_record_scm_changes - Если true, изменения scm будут записываться в JIRA : ссылка на обозреватель репозитория scm и изменения путей
    по умолчанию: false
  • jenkins2_jira_disable_changelog_annotations - Отключить создание гиперссылок JIRA в изменениях
    по умолчанию: false
  • jenkins2_jira_issue_pattern - Вы можете установить свою собственную маску для поиска идентификаторов проблем JIRA в журналах SCM
    по умолчанию: PATTERN.*
  • jenkins2_jira_update_relevant_issues - Если false, вопросы будут обновляться только в случае успешной или нестабильной сборки. Если true, связанные проблемы JIRA будут всегда обновляться, независимо от результата сборки
    по умолчанию: true
  • jenkins2_jira_credentials_id - ID учетных данных Jenkins для jira
    по умолчанию: jirauser
  • jenkins2_jira_connection_timeout - Таймаут соединения для вызовов JIRA REST API (в секундах)
    по умолчанию: 10
  • jenkins2_jira_read_timeout - Таймаут чтения для вызовов JIRA REST API (в секундах)
    по умолчанию: 30
  • jenkins2_jira_thread_executor_size - Размер пула потоков для запросов к Jira
    по умолчанию: 10
  • jenkins2_jira_visible_for_group - Укажите название группы JIRA, имеющей право на просмотр комментария, оставьте поле пустым, чтобы комментарий был доступен всем пользователям JIRA
    по умолчанию: ``
  • jenkins2_jira_visible_for_project_role - Укажите название роли проекта JIRA, имеющей право на просмотр комментария, оставьте поле пустым, чтобы комментарий был доступен всем пользователям JIRA
    по умолчанию: ``
  • jenkins2_jira_add_timestamps_for_comments - Если true, дата и время записи изменений SCM будут зарегистрированы в JIRA
    по умолчанию: true
  • jenkins2_jira_timestamp_format - См. javadoc для SimpleDateFormat для получения помощи. Если не установлено, будет использоваться DateFormat.SHORT для текущей локали.
    по умолчанию: EEE, d MMM yyyy HH:mm:ss Z

Включить плагин безопасного скрипта

  • jenkins2_permissive_script_enabled -включить разрешительную безопасность скриптов.
    по умолчанию: true

Конфигурация seed job

Более подробная информация о DSL https://jenkinsci.github.io/job-dsl-plugin/ https://github.com/jenkinsci/job-dsl-plugin

  • jenkins2_seed_job_enable - включить seed job jenkins
    по умолчанию: false
  • jenkins2_seed_job_template - Имя файла шаблона DSL без .j2. Не забудьте настроить все необходимые переменные для шаблона Для стандартного шаблона потребуются следующие переменные: gitlab_external_url, gitlab_project_group, gitlab_project_name, ci_test_jenkins_slave_label, feature_verification_jenkins_slave_label
    по умолчанию: dsl_hybris_create_job.groovy
  • jenkins2_seed_job_ignore_existing - игнорировать существующие задания и не перезаписывать их
    по умолчанию: true
  • jenkins2_seed_job_name - Имя seed job Jenkins
    по умолчанию: 'seed_job'

Используйте переменную jenkins2_credentials, чтобы установить параметры учетных данных

Для установки учетных данных AWS установите переменные:

  • aws_access_key
  • aws_secret_key

Для установки соединения с Gitlab установите:

  • gitlab_master_password
  • gitlab_master_username
  • gitlab_master_token

Для установки соединения с GitHub установите:

  • github_master_token
jenkins2_credentials_enabled: true # Установите false, чтобы отключить конфигурацию учетных данных
jenkins2_credentials:
  slave:
    type: 'password'
    id: 'ci_slave'
    description: 'учетные данные для jenkins slave'
    username: 'user'
    password: 'password'
  jira:
    type: 'password'
    id: 'jirauser'
    description: 'имя пользователя и пароль для jira'
    username: 'jiraUser'
    password: 'JiraUserPassword'
  pipeline_libraries:
    type: 'password'
    id: 'pipeline_libraries'
    description: 'имя пользователя и пароль для библиотек конвейера'
    username: 'pipelineLibrariesUser'
    password: 'pipelineLibrariesPassword'
  sshconnection:
    type: 'key'
    keySource: 0
    key: >
      -----BEGIN RSA PRIVATE KEY-----
      Здесь может быть ваш частный ключ, 
      но мы настоятельно рекомендуем хранить частные ключи в сервисе хранилища, 
      таком как Ansible-vault или Hashicorp-vault, и т.д.
      -----END RSA PRIVATE KEY-----
    id: 'sshagent'
    username: 'hybris'
    passphrase: ''
    description: 'учетные данные для пользователя hybris для удаленного подключения'
  cidbsysuser:
    type: 'password'
    id: 'ciDBsysUser'
    description: 'системный пользователь для CI базы данных'
    username: 'root'
    password: 'Qwerty_123'
  fqa1dbuser:
    type: 'password'
    id: 'fqa1DBuser'
    description: 'пользователь базы данных fqa1'
    username: 'fqa1user'
    password: 'fqa1password'
  dbtempuser:
    type: 'password'
    id: 'tempDBuser'
    description: 'пользователь базы данных для datacut'
    username: 'DB_TEMP'
    password: 'DB_TEMP'
  gitlab_creds:
    type: 'password'
    id: 'GIT_CREDENTIALS'
    description: 'учетные данные gitlab имя пользователя с паролем'
    username: '{{ gitlab_master_username | default("admin") }}'
    password: '{{ gitlab_master_password | default("password") }}'
  jenkinshttpconnectionuser:
    type: 'password'
    id: 'Jenkins_http_connection'
    description: 'для подключения через jenkins cli; используется для проверки синтаксиса конвейера'
    username: '{{ jenkins2_cli_username }}'
    password: '{{ jenkins2_cli_password }}'
  gitlabusertoken:
    type: 'password'
    id: 'GIT_CREDENTIALS_TOKEN'
    description: 'для использования с GL10.2+, но также можно использовать с более ранними версиями'
    username: '{{ gitlab_master_username | default("admin") }}'
    password: '{{ gitlab_master_token | default("ToKen12345") }}'
  aws_credentials:
    type: 'password'
    id: 'AWS_CREDENTIALS'
    description: 'для операций в AWS'
    username: '{{ aws_access_key | default("AWSaccessKey") }}'
    password: '{{ aws_secret_key | default("AWSsecretKey") }}'
  gitlabtoken:
    type: 'gitlabtoken'
    id: 'gitlab_token'
    description: 'gitlab соединение с токеном'
    token: '{{ gitlab_master_token | default("ToKen12345") }}'
  githubtoken:
    type: 'secrettext'
    id: 'github_token'
    description: 'GiHub соединение с токеном'
    token: '{{ github_master_token | default("ToKen12345") }}'
  aws_ec2_credentials:
    type: 'aws_creds'
    id: 'AWS_EC2_CREDS'
    description: 'для плагина ec2 для создания ec2 для узлов-рабочих'
    access_key: '{{ aws_access_key | default("AWSaccessKey") }}'
    sec_key: '{{ aws_secret_key | default("AWSsecretKey") }}'
  bitbucket_project:
    type: 'password'
    id: 'bitbucket_project'
    description: 'учетные данные и пароль для проекта bitbucket'
    username: 'bitbucketProjectUser'
    password: 'bitbucketProjectPassword'

type имеет доступные опции:

  1. key - если вы хотите настроить SSH-частный ключ
  2. password - если вы хотите настроить пакет имя пользователя/пароль
  3. gitlabtoken - если вы хотите настроить gitlab токен (необходим установленный плагин gitlab)
  4. aws_creds - если вы хотите настроить учетные данные ec2 (необходим установленный плагин ec2)
  5. secrettext - если вы хотите настроить токен секретного текста (используется плагином GITHUB, токен должен быть зарегистрирован с областями "admin:repo_hook", "repo", "repo:status")

keySource указывает метод предоставления частного ключа:

  • 0 - DirectEntryPrivateKeySource. Если это значение установлено, необходимо поместить ваш частный ключ в переменную key в открытом виде.
  • 1 - FileOnMasterPrivateKeySource. Если это значение установлено, необходимо указать абсолютный путь к вашему частному ключу в переменной key.
  • 2 - UsersPrivateKeySource. Если это значение установлено, Jenkins будет использовать стандартные частные ключи из ~/.ssh.

Конфигурация плагина EC2

jenkins2_ec2_cloud_parameters:
  cloud_name: 'AWS_cloud'
  credentials_id: 'AWS_EC2_CREDS'
  ssh_keys_credentials_id: 'SSH_CREDS'
  instance_cap_str: '2'
  private_key: |
    -----BEGIN RSA PRIVATE KEY-----
    Здесь может быть ваш частный ключ, 
    но мы настоятельно рекомендуем хранить частные ключи в сервисе хранилища, 
    таком как Ansible-vault или Hashicorp-vault, и т.д.
    -----END RSA PRIVATE KEY-----
  region: 'us-east-1'
  use_instance_profile_for_credentials: false
  role_arn: ''
  role_session_name: ''
jenkins2_ec2_ami_list:
  ci_ami:
    ami: 'ami-AAAAAAAA'
    associatePublicIp: false
    connectBySSHProcess: true
    connectUsingPublicIp: false
    customDeviceMapping: ''
    deleteRootOnTermination: true
    description: 'Рабочий узел Jenkins для CI'
    ebsOptimized: false
    iamInstanceProfile: ''
    idleTerminationMinutes: '5'
    initScript: ''
    instanceCapStr: '5'
    jvmopts: ''
    labelString: 'ci_slaves'
    launchTimeoutStr: ''
    numExecutors: '1'
    remoteAdmin: 'ec2-user'
    remoteFS: '/opt/jenkins'
    securityGroups: 'sg-11111111'
    stopOnTerminate: false
    subnetId: 'subnet-SSSSSSSS'
    tags:
      - {name: 'Name', value: 'CI Slave'}
      - {name: 'Name2', value: 'CI2 Slave'}
    tmpDir: ''
    type: 't2.medium'
    useEphemeralDevices: true
    usePrivateDnsName: true
    userData: ''
    zone: 'us-east-1a,us-east-1b'
    monitoring: false
    SpotConfiguration:
      enabled: true
      useBidPrice: true
      spotMaxBidPrice: '0.0139'
      spotBlockReservationDuration: '0'
      fallbackToOndemand: false
    t2Unlimited: false
  fv_ami:
    ami: 'ami-BBBBBBBB'
    associatePublicIp: false
    connectBySSHProcess: true
    connectUsingPublicIp: false
    customDeviceMapping: ''
    deleteRootOnTermination: true
    description: 'Рабочий узел Jenkins для FV'
    ebsOptimized: false
    iamInstanceProfile: ''
    idleTerminationMinutes: '5'
    initScript: ''
    instanceCapStr: '5'
    jvmopts: ''
    labelString: 'ci_slaves'
    launchTimeoutStr: ''
    numExecutors: '1'
    remoteAdmin: 'ec2-user'
    remoteFS: '/opt/jenkins'
    securityGroups: 'sg-11111111'
    stopOnTerminate: false
    subnetId: 'subnet-SSSSSSSS'
    tags:
      - {name: 'Name', value: 'FV Slave'}
    tmpDir: ''
    type: 't2.medium'
    useEphemeralDevices: true
    usePrivateDnsName: true
    userData: ''
    zone: 'us-east-1a,us-east-1b'
    monitoring: false
    SpotConfiguration:
      enabled: false
      useBidPrice: true
      spotMaxBidPrice: '0.0139'
      spotBlockReservationDuration: '0'
      fallbackToOndemand: false
    t2Unlimited: false

Конфигурация безопасности и авторизации

  • jenkins2_security_enable: включить безопасность Jenkins.
    по умолчанию: true

  • jenkins2_security_realm: Выберите тип безопасности Jenkins. Доступные: basic, ldap, active-directory по умолчанию: 'basic'

    Конфигурация плагина по умолчанию active-directory

    jenkins2_active_directory_domain_name: 'domain.com'
    jenkins2_active_directory_domain_controller: 'server.domain.com:3268'
    jenkins2_active_directory_site: 'null'
    jenkins2_active_directory_bind_name: '[email protected]'
    jenkins2_active_directory_bind_pass: 'password'
    jenkins2_active_directory_start_tls: true
    jenkins2_active_directory_remove_irrelevant_groups: false
    

    Конфигурация плагина по умолчанию LDAP

    jenkins2_ldap_server: 'ldap.server.com:3268'
    jenkins2_ldap_root_dn: 'dc=server,dc=com'
    jenkins2_ldap_user_search_base: ''
    jenkins2_ldap_user_search: 'mail={0}'
    jenkins2_ldap_group_search_base: ''
    jenkins2_ldap_group_search_filter: ''
    jenkins2_ldap_group_membership_filter: 'null'
    jenkins2_ldap_manager_dn: 'CN=User,OU=Auto Users,OU=Service,OU=Managed by Enterprise Admins,DC=server,DC=com'
    jenkins2_ldap_manager_password: 'Pa$$word'
    jenkins2_ldap_inhibit_infer_root_dn: true
    jenkins2_ldap_disable_mail_address_resolver: false
    jenkins2_ldap_display_name_attribute_name: 'displayname'
    jenkins2_ldap_mail_address_attribute_name: 'mail'
    
  • jenkins2_authorization_strategy_configure: включить конфигурацию стратегии авторизации
    по умолчанию: true

  • jenkins2_authorization_strategy: тип стратегии авторизации. Доступные: logged-in, matrix-based
    по умолчанию: "logged-in"

  • jenkins2_authorization_strategy_logged_in_allow_anonymous_read: разрешать анонимный доступ для чтения
    по умолчанию: false

=======

  • jenkins2_ssh_keys_slave_hosts - словарь, описывающий слейв-хосты с удаленными ssh-пользователями, например:

    jenkins2_ssh_keys_slave_hosts:

    • host: test-jenkins-s1 users:
      • user1
      • user2

    vars: jenkins2_ssh_keys_slave_hosts: - {host: 'test-jenkins-s1', users: ['user1', 'user2']}

Пример инвентаря

[jenkins] server.example.com

[jenkins_ssh_slaves] slave1.example.com slave2.example.com

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

- name: Установка и настройка Jenkins
  hosts: jenkins
  vars:
    jenkins2_ssh_keys_generate: true
    jenkins2_ssh_keys_slave_hosts:
      - {host: 'slave1.example.com', users: ['root', 'jenkins']}
      - {host: 'slave2.example.com', users: ['root', 'jenkins']}
  roles:
    - role: lean_delivery.java
      java_distribution: openjdk
      java_major_version: 11
      transport: repositories
    - role: lean_delivery.jenkins

Лицензия

Apache Лицензия

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

авторы:

О проекте

Jenkins installation and configuration

Установить
ansible-galaxy install lean-delivery/ansible-role-jenkins
Лицензия
apache-2.0
Загрузки
23499
Владелец
Simplify by using!