lean_delivery.jenkins
Установка Jenkins 2
Обзор
Эта роль:
- устанавливает 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
- CentOS
Переменные роли
конфигурация для jenkins
jenkins2_user- пользователь и группа ОС, используемые для запуска jenkins
по умолчанию:jenkinsjenkins2_package_version- имя пакета для установки jenkins
по умолчанию:jenkinsjenkins2_release_line- версия пакета для установки: стабильная или последняя
по умолчанию:stablejenkins2_disable_gpg_check- пропуск проверки gpg (только для yum)
по умолчанию:falsejenkins2_key_validate_certs- проверять сертификаты во время установки ключа (только для yum)
по умолчанию:truejenkins2_context_path-Контекстный путь Jenkins
по умолчанию:''jenkins2_cli_username- имя пользователя для подключения к jenkins cli
по умолчанию:adminjenkins2_cli_password- пароль пользователя для подключения к jenkins cli
по умолчанию:adminjenkins2_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 слушает.
по умолчанию:8080jenkins2_config_listen_address- IP-адрес, на котором Jenkins ожидает HTTP-запросы. По умолчанию - все интерфейсы (0.0.0.0).
по умолчанию:''jenkins2_config_debug_level- Уровень отладки для логов -- чем выше значение, тем больше информации. 5 - это INFO.
по умолчанию:5jenkins2_config_enable_access_log- Включить ли ведение журнала доступа или нет.
по умолчанию:nojenkins2_config_handler_max- Максимальное количество потоков-работников HTTP.
по умолчанию:100jenkins2_config_handler_idle- Максимальное количество неподвижных потоков-работников HTTP.
по умолчанию:20jenkins2_config_args- Передача произвольных аргументов Jenkins. Полный список опций: java -jar jenkins.war --help
по умолчанию:''
Включение HTTPS
jenkins2_https_enabled- Использовать или не использовать безопасное соединение.
по умолчанию:truejenkins2_http_disabled- Отключить незащищенное соединение.
по умолчанию:falsejenkins2_config_https_port- Порт Jenkins для безопасного соединения (https).
по умолчанию:8443jenkins2_local_keystore- Если да, - искать хранилище ключей на хосте ansible по пути {{ jenkins2_local_keystore_path }}. Если нет, - проверить хранилище ключей на удаленном хосте. по умолчанию:falsejenkins2_local_keystore_path- Путь к локальному файлу хранилища ключей (чтобы не создавать самоподписанный сертификат)
по умолчанию:{{ role_path }}/files/{{ jenkins2_ssl_key_store_name }}jenkins2_ssl_configure- Настроить или не настраивать ssl соединение для jenkins.
по умолчанию:truejenkins2_ssl_key_store_name- Имя файла хранилища ключей. Если файл с таким именем существует в папке роли/файлы - он будет использован как хранилище ключей.
по умолчанию:jenkins2-ssl.keystore.jksjenkins2_ssl_key_size- Размер ключа сертификата.
по умолчанию:4096jenkins2_ssl_key_store_password- Пароль хранилища ключей.
по умолчанию:123456jenkins2_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.comjenkins2_local_pkey_file_name- Имя частного сертификата.
по умолчанию:{{ ansible_hostname }}.ca-pkey.pemjenkins2_local_cert_file_name- Имя публичного сертификата.
по умолчанию:{{ ansible_hostname }}.ca-cert.pem
Конфигурация прокси Jenkins
jenkins2_proxy_url- URL прокси для конфигурации загрузки плагинов
по умолчанию:''jenkins2_proxy_host- Имя хоста прокси-сервера
по умолчанию:''jenkins2_proxy_port- Порт прокси-сервера
по умолчанию:0jenkins2_proxy_username- Имя пользователя для подключения к прокси
по умолчанию:''jenkins2_proxy_password- Пароль для подключения к прокси
по умолчанию:''jenkins2_proxy_no_proxy_hosts- Хосты, которые следует исключить из прокси
по умолчанию:''
Конфигурация генерации ssh-ключей
jenkins2_ssh_keys_generate- добавить возможность генерировать пары SSH-ключей под пользователем jenkins
по умолчанию:falsejenkins2_ssh_keys_private_keyname- имя частного ключа
по умолчанию:id_rsajenkins2_ssh_keys_size- размер ключа ssh rsa
по умолчанию:4096jenkins2_ssh_keys_inv_slave_groupname- имя группы слейвов в инвентарном файле
по умолчанию:jenkins_ssh_slaves
Способ конфигурации Jenkins
jenkins2_configure_by_casc- Установить конфигурацию по JCasC jenkins2_configure_by_groovy должно быть = false по умолчанию:truejenkins2_jcasc_directory- Относительный путь, по которому JCasC будет искать yaml файлы по умолчанию:jcascjenkins2_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- включить автоконфигурацию для всех глобальных инструментов
по умолчанию:falsejenkins2_globaltools_jdk_enable- включить автоконфигурацию для JDK
по умолчанию:truejenkins2_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.groovyjenkins2_globaltools_maven_enable- включить автоконфигурацию для Maven
по умолчанию:truejenkins2_globaltools_maven_version- список версий для Maven (определен как список)
по умолчанию:[]jenkins2_globaltools_maven_template- Имя шаблона конфигурации Maven без .j2. Не забудьте настроить все необходимые переменные для шаблона по умолчанию:globaltools\maven.groovyjenkins2_globaltools_ant_enable- включить автоконфигурацию для Ant
по умолчанию:truejenkins2_globaltools_ant_version- список версий для Ant (определен как список)
по умолчанию:[]jenkins2_globaltools_ant_template- Имя шаблона конфигурации Ant без .j2. Не забудьте настроить все необходимые переменные для шаблона по умолчанию:globaltools\ant.groovyjenkins2_globaltools_nodejs_enable- включить автоконфигурацию для Node.js
по умолчанию:truejenkins2_globaltools_nodejs_version- список версий для Node.js (определен как список)
по умолчанию:[]jenkins2_globaltools_nodejs_template- Имя шаблона конфигурации Node.js без .j2. Не забудьте настроить все необходимые переменные для шаблона по умолчанию:globaltools\nodejs.groovyjenkins2_globaltools_sonarscanner_enable- включить автоконфигурацию для SonarQube Scanner
по умолчанию:truejenkins2_globaltools_sonarscanner_version- список версий для SonarQube Scanner (определен как список)
по умолчанию:[]jenkins2_globaltools_sonarscanner_template- Имя шаблона конфигурации SonarQube Scaner без .j2. Не забудьте настроить все необходимые переменные для шаблона по умолчанию:globaltools\sonarscanner.groovyjenkins2_globaltools_sonarscannermsbuild_enable- включить автоконфигурацию для SonarQube Scanner для MSBuild
по умолчанию:truejenkins2_globaltools_sonarscannermsbuild_version- список версий для SonarQube Scanner для MSBuild (определен как список)
по умолчанию:[]jenkins2_globaltools_sonarscannermsbuild_template- Имя шаблона конфигурации SonarQube Scaner для MSBuild без .j2. Не забудьте настроить все необходимые переменные для шаблона по умолчанию:globaltools\sonarscannermsbuild.groovyjenkins2_globaltools_gradle_enable- включить автоконфигурацию для Gradle
по умолчанию:truejenkins2_globaltools_gradle_version- список версий для SonarQube Scanner для Gradle (определен как список)
по умолчанию:[]jenkins2_globaltools_gradle_template- Имя шаблона конфигурации Gradle без .j2. Не забудьте настроить все необходимые переменные для шаблона по умолчанию:globaltools\gradle.groovyjenkins2_globaltools_docker_enable- включить автоконфигурацию для Docker
по умолчанию:truejenkins2_globaltools_docker_version- список версий для Docker (определен как список)
по умолчанию:[]jenkins2_globaltools_docker_template- Имя шаблона конфигурации Docker без .j2. Не забудьте настроить все необходимые переменные для шаблона по умолчанию:globaltools\docker.groovy
настройки smtp
jenkins2_smtp_enabled- для настройки конфигурации smtp
по умолчанию:truejenkins2_smtp_sysad_email- email администратора jenkins
по умолчанию:[email protected]jenkins2_smtp_user- email администратора jenkins
по умолчанию:[email protected]jenkins2_smtp_password- пароль пользователя smtp
по умолчанию:passwordjenkins2_smtp_port- порт smtp сервера
по умолчанию:587jenkins2_smtp_host- имя хоста smtp сервера
по умолчанию:smtp.office365.com
настройка плагинов jenkins
jenkins2_updates_url- URL Центра обновлений. Используется как базовый URL для загрузки плагинов и файла update-center.json.
по умолчанию:https://updates.jenkins.iojenkins2_plugins_timeout- тайм-аут установки плагинов
по умолчанию:2000jenkins2_plugins_list- список плагинов (будет объединен с предложенным списком)
по умолчанию:[]jenkins2_plugins_version- Включить указание номеров версий. Все зависимости плагинов должны быть указаны в jenkins2_plugins_dict.
по умолчанию:falsejenkins2_plugins_install_dependencies- Установить зависимости плагинов, если точные версии плагинов не указаны.
по умолчанию:truejenkins2_plugins_dict- словарь плагинов, используемый вместо списков, если версия включена. Укажите версию в кавычках, чтобы предотвратить её интерпретацию как число с плавающей точкой. Пример:ssh-slaves: '1.30.0'по умолчанию:{}
jenkins2_plugins_version: false
конфигурация учетных данных
jenkins2_credentials_enabled- для добавления учетных данных
по умолчанию:truejenkins2_credentials- карта учетных данных
конфигурация библиотек конвейера
jenkins2_pipeline_libraries_enabled- для настройки Глобальных Библиотек Конвейера
по умолчанию:falsejenkins2_pipeline_libraries_name- Имя Библиотеки, используемое в аннотации @Library
по умолчанию:Pipeline_Librariesjenkins2_pipeline_libraries_url- URL удаленного репозитория
по умолчанию:''jenkins2_pipeline_libraries_version- Версия библиотеки по умолчанию для загрузки, если другой не выбрана в скрипте. Может быть имя ветки, тег, хеш коммита и т.д., в зависимости от SCM.
по умолчанию:'master'
конфигурация проекта bitbucket
jenkins2_bitbucket_project_enabled- для настройки команды/проекта Bitbucket
по умолчанию:falsejenkins2_bitbucket_project_owner- Имя команды Bitbucket или учетной записи пользователя Bitbucket. Это также может быть проект Bitbucket, если используется Bitbucket Server. В этом случае (Bitbucket Server): используйте ключ проекта, а не его название. Если используете учетную запись пользователя вместо проекта, добавьте символ "" перед именем пользователя, например "joe".
по умолчанию:Bitbucket_Project_Ownerjenkins2_bitbucket_project_repo_regexp- Регулярное выражение Java для ограничения имен репозиториев. Имена репозиториев, не соответствующие указанному регулярному выражению, будут проигнорированы.
по умолчанию:''jenkins2_bitbucket_project_discover_branches_strategy- Определяет, какие ветви будут обнаружены. 1 - Исключить ветви, которые также поданы как PR, 2 - Только ветви, которые также поданы как PR, 3 - Все ветви.
по умолчанию:1jenkins2_bitbucket_project_discover_pr_strategy- Определяет, как обнаруживаются запросы на слияние. 1 - Слияние запроса на слияние с текущей ревизией целевой ветви, 2 - Текущая ревизия запроса на слияние, 3 - Как текущая ревизия запроса на слияние, так и запрос на слияние с текущей целевой ветвью.
по умолчанию:1jenkins2_bitbucket_project_scan_interval- Максимальное время с момента последней индексации, по истечении которого будет инициирована индексация. по умолчанию:60jenkins2_bitbucket_project_autobuild_branches- Совпадающие ветки будут автоматически запущены.
по умолчанию:'master|develop|PR-[0-9]+'
конфигурация sonarqube
jenkins2_sonarqube_enabled- для добавления конфигурации SonarQube
по умолчанию:falsejenkins2_sonarqube_name- Имя SonarQube
по умолчанию:SonarQubejenkins2_sonarqube_url- URL сервера SonarQube
по умолчанию:http://localhost:9000jenkins2_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
по умолчанию:falsejenkins2_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
по умолчанию:falsegitlab_external_url- внешний URL gitlab
по умолчанию:https://localhostjenkins2_gitlab_token_cred- ID токена gitlab (из учетных данных: gitlabtoken в примере ниже)
по умолчанию:gitlab_token
Конфигурация Github
jenkins2_github_enabled- для включения конфигурации github
по умолчанию:falsegithub_external_url- внешний URL github
по умолчанию:https://localhostgithub_manage_hooks- управлять хуками github
по умолчанию:truegithub_client_cache_size- размер кеша клиента github
по умолчанию:20jenkins2_github_token_cred- ID токена github (из учетных данных: secrettext в примере ниже)
по умолчанию:github_token
Конфигурация Jira
jenkins2_jira_enabled- для включения конфигурации jira
по умолчанию:falsejenkins2_jira_url- URL jira
по умолчанию:https://jira.example.comjenkins2_jira_alternative_url- альтернативный URL jira
по умолчанию:https://jira.example.comjenkins2_jira_use_http_auth- Эта опция заставляет Jenkins подключаться к JIRA с использованием HTTP Basic Authentication, вместо входа через RPC
по умолчанию:truejenkins2_jira_support_wiki_notation- если true, JIRA поддерживает заметки Wiki в комментариях. Если true, Jenkins будет размещать комментарии, использующие заметки Wiki. Если false, Jenkins будет размещать только текстовые комментарии
по умолчанию:truejenkins2_jira_record_scm_changes- Если true, изменения scm будут записываться в JIRA : ссылка на обозреватель репозитория scm и изменения путей
по умолчанию:falsejenkins2_jira_disable_changelog_annotations- Отключить создание гиперссылок JIRA в изменениях
по умолчанию:falsejenkins2_jira_issue_pattern- Вы можете установить свою собственную маску для поиска идентификаторов проблем JIRA в журналах SCM
по умолчанию:PATTERN.*jenkins2_jira_update_relevant_issues- Если false, вопросы будут обновляться только в случае успешной или нестабильной сборки. Если true, связанные проблемы JIRA будут всегда обновляться, независимо от результата сборки
по умолчанию:truejenkins2_jira_credentials_id- ID учетных данных Jenkins для jira
по умолчанию:jirauserjenkins2_jira_connection_timeout- Таймаут соединения для вызовов JIRA REST API (в секундах)
по умолчанию:10jenkins2_jira_read_timeout- Таймаут чтения для вызовов JIRA REST API (в секундах)
по умолчанию:30jenkins2_jira_thread_executor_size- Размер пула потоков для запросов к Jira
по умолчанию:10jenkins2_jira_visible_for_group- Укажите название группы JIRA, имеющей право на просмотр комментария, оставьте поле пустым, чтобы комментарий был доступен всем пользователям JIRA
по умолчанию: ``jenkins2_jira_visible_for_project_role- Укажите название роли проекта JIRA, имеющей право на просмотр комментария, оставьте поле пустым, чтобы комментарий был доступен всем пользователям JIRA
по умолчанию: ``jenkins2_jira_add_timestamps_for_comments- Если true, дата и время записи изменений SCM будут зарегистрированы в JIRA
по умолчанию:truejenkins2_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
по умолчанию:falsejenkins2_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.groovyjenkins2_seed_job_ignore_existing- игнорировать существующие задания и не перезаписывать их
по умолчанию:truejenkins2_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 имеет доступные опции:
key- если вы хотите настроить SSH-частный ключpassword- если вы хотите настроить пакет имя пользователя/парольgitlabtoken- если вы хотите настроить gitlab токен (необходим установленный плагин gitlab)aws_creds- если вы хотите настроить учетные данные ec2 (необходим установленный плагин ec2)secrettext- если вы хотите настроить токен секретного текста (используется плагином GITHUB, токен должен быть зарегистрирован с областями "admin:repo_hook", "repo", "repo:status")
keySource указывает метод предоставления частного ключа:
0- DirectEntryPrivateKeySource. Если это значение установлено, необходимо поместить ваш частный ключ в переменнуюkeyв открытом виде.1- FileOnMasterPrivateKeySource. Если это значение установлено, необходимо указать абсолютный путь к вашему частному ключу в переменнойkey.2- UsersPrivateKeySource. Если это значение установлено, Jenkins будет использовать стандартные частные ключи из~/.ssh.
Конфигурация плагина EC2
jenkins2_ec2_enable- включить настройку плагина jenkins ec2 https://wiki.jenkins.io/display/JENKINS/Amazon+EC2+Plugin
по умолчанию:false
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.
по умолчанию:truejenkins2_security_realm: Выберите тип безопасности Jenkins. Доступные:basic,ldap,active-directoryпо умолчанию:'basic'Конфигурация плагина по умолчанию
active-directoryjenkins2_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Конфигурация плагина по умолчанию
LDAPjenkins2_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: включить конфигурацию стратегии авторизации
по умолчанию:truejenkins2_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']}
- host: test-jenkins-s1
users:
Пример инвентаря
[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
Лицензия
Информация об авторах
авторы:
- Команда Lean Delivery team@lean-delivery.com
ansible-galaxy install lean_delivery.jenkins