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
по умолчанию: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
имеет доступные опции:
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.
по умолчанию: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']}
- 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/ansible-role-jenkins