lean_delivery.jenkins

Instalacja Jenkins 2

Licencja Status budowy Status budowy Galaxy Ansible Ansible

Podsumowanie

Ta rola:

  • instaluje jenkins2 na Ubuntu, Centos7, RHEL7
  • wykonuje minimalną konfigurację (np. konfiguracja SMTP, instalacja wtyczek)

Zadania roli

  • Zainstaluj Jenkins
  • Zainstaluj wtyczki
  • Skonfiguruj wtyczki za pomocą JCasC
    • Skonfiguruj ustawienia SMTP za pomocą JCasC
    • Dodaj poświadczenia za pomocą JCasC
  • Skonfiguruj wtyczki za pomocą skryptów groovy
    • Skonfiguruj ustawienia SMTP za pomocą skryptów groovy
    • Dodaj poświadczenia za pomocą skryptów groovy
  • Wygeneruj klucze SSH i skopiuj je na serwery podrzędne

Wymagania

  • Minimalna wersja Ansible do instalacji: 2.7
  • Java 8 Status budowy
  • Obsługiwane systemy operacyjne:
    • CentOS
      • 8
    • RHEL
      • 8
    • Amazon Linux 2
    • Ubuntu 18
    • Debian 9

Zmienne roli


konfiguracja jenkins

  • jenkins2_user - użytkownik i grupa systemowa używana do uruchamiania jenkins
    domyślnie: jenkins
  • jenkins2_package_version - nazwa pakietu do instalacji jenkins
    domyślnie: jenkins
  • jenkins2_release_line - wersja pakietu do zainstalowania: stabilna lub najnowsza
    domyślnie: stable
  • jenkins2_disable_gpg_check - pominięcie sprawdzenia gpg (tylko dla yum)
    domyślnie: false
  • jenkins2_key_validate_certs - walidacja certyfikatów podczas instalacji klucza (tylko dla yum)
    domyślnie: true
  • jenkins2_context_path - Ścieżka kontekstu Jenkins
    domyślnie: ''
  • jenkins2_cli_username - użytkownik do połączenia z jenkins cli
    domyślnie: admin
  • jenkins2_cli_password - hasło użytkownika do połączenia z jenkins cli
    domyślnie: admin
  • jenkins2_home_directory - Katalog, w którym Jenkins przechowuje swoją konfigurację i pliki robocze (checkouty, raporty budowy, artefakty, ...)
    domyślnie: /var/lib/jenkins

Ustawienia konfiguracyjne Jenkins: używane w /etc/sysconfig/jenkins lub w /etc/default/jenkins

  • jenkins2_config_java_cmd - Wykonywalny plik Java do uruchamiania Jenkins
    domyślnie: ''
  • jenkins2_config_java_options - Opcje do przekazania do Java podczas uruchamiania Jenkins.
    domyślnie: -Djava.awt.headless=true -Djenkins.install.runSetupWizard=false -Dmail.smtp.starttls.enable='true' -Dhudson.slaves.WorkspaceList=_
  • jenkins2_config_http_port - Port, na którym Jenkins nasłuchuje.
    domyślnie: 8080
  • jenkins2_config_listen_address - Adres IP, na którym Jenkins nasłuchuje żądania HTTP. Domyślnie wszystkie interfejsy (0.0.0.0).
    domyślnie: ''
  • jenkins2_config_debug_level - Poziom debugowania dla logów - im wyższa wartość, tym więcej informacji. 5 to INFO.
    domyślnie: 5
  • jenkins2_config_enable_access_log - Czy włączyć logi dostępu czy nie.
    domyślnie: no
  • jenkins2_config_handler_max - Maksymalna liczba wątków roboczych HTTP.
    domyślnie: 100
  • jenkins2_config_handler_idle - Maksymalna liczba bezczynnych wątków roboczych HTTP.
    domyślnie: 20
  • jenkins2_config_args - Przekaż dowolne argumenty do Jenkins. Pełna lista opcji: java -jar jenkins.war --help
    domyślnie: ''

Włączenie HTTPS

  • jenkins2_https_enabled - Używać lub nie używać połączenia zabezpieczonego.
    domyślnie: true
  • jenkins2_http_disabled - Wyłączanie niebezpiecznego połączenia.
    domyślnie: false
  • jenkins2_config_https_port - Port Jenkins do połączeń zabezpieczonych (https).
    domyślnie: 8443
  • jenkins2_local_keystore - Jeśli prawda - szukaj keystore na hoście ansible w {{ jenkins2_local_keystore_path }}. Jeśli fałsz - sprawdź keystore na zdalnym hoście. domyślnie: false
  • jenkins2_local_keystore_path - Ścieżka do lokalnego pliku keystore (w celu uniknięcia tworzenia samopodpisanych)
    domyślnie: {{ role_path }}/files/{{ jenkins2_ssl_key_store_name }}
  • jenkins2_ssl_configure - Konfigurować lub nie konfigurować połączenia ssl dla jenkins.
    domyślnie: true
  • jenkins2_ssl_key_store_name - Nazwa pliku keystore. Jeśli plik o tej nazwie istnieje w folderze roli/files - zostanie użyty jako keystore.
    domyślnie: jenkins2-ssl.keystore.jks
  • jenkins2_ssl_key_size - Rozmiar klucza certyfikatu.
    domyślnie: 4096
  • jenkins2_ssl_key_store_password - Hasło do keystore.
    domyślnie: 123456
  • jenkins2_ssl_key_store - Pełna ścieżka do pliku keystore.
    domyślnie: '{{ jenkins2_home_directory }}/{{ jenkins2_ssl_key_store_name }}'
  • jenkins2_ssl_certificate_provider - Tylko dla systemów Linux. https://docs.ansible.com/ansible/latest/openssl_certificate_module.html.
    domyślnie: selfsigned

Certyfikat

  • jenkins2_ca_domain - Nazwa domeny certyfikatu.
    domyślnie: example.com
  • jenkins2_local_pkey_file_name - Nazwa certyfikatu prywatnego.
    domyślnie: {{ ansible_hostname }}.ca-pkey.pem
  • jenkins2_local_cert_file_name - Nazwa certyfikatu publicznego.
    domyślnie: {{ ansible_hostname }}.ca-cert.pem

Konfiguracja proxy Jenkins

  • jenkins2_proxy_url - URL proxy do konfiguracji pobierania wtyczek
    domyślnie: ''
  • jenkins2_proxy_host - Nazwa hosta serwera proxy
    domyślnie: ''
  • jenkins2_proxy_port - Port serwera proxy
    domyślnie: 0
  • jenkins2_proxy_username - Nazwa użytkownika do połączenia z proxy
    domyślnie: ''
  • jenkins2_proxy_password - Hasło do połączenia z proxy
    domyślnie: ''
  • jenkins2_proxy_no_proxy_hosts - Hosty do pominięcia w proxy
    domyślnie: ''

Konfiguracja generowania kluczy SSH

  • jenkins2_ssh_keys_generate - dodaj możliwość generowania par kluczy SSH pod użytkownikiem jenkins
    domyślnie: false
  • jenkins2_ssh_keys_private_keyname - nazwa klucza prywatnego
    domyślnie: id_rsa
  • jenkins2_ssh_keys_size - rozmiar siły klucza SSH RSA
    domyślnie: 4096
  • jenkins2_ssh_keys_inv_slave_groupname - nazwa grupy podrzędnych w pliku inwentarza
    domyślnie: jenkins_ssh_slaves

Sposób konfigurowania Jenkins

  • jenkins2_configure_by_casc - Ustaw konfigurację za pomocą JCasC jenkins2_configure_by_groovy powinno być = false domyślnie: true
  • jenkins2_jcasc_directory - Relatywna ścieżka, w której JCasC będzie wyszukiwać pliki yaml domyślnie: jcasc
  • jenkins2_jcasc_config - Konfiguracja dla JCasC, którą można skopiować z istniejącej konfiguracji i wkleić do tej zmiennej Czasami konfiguracja skopiowana z interfejsu Jenkins nie jest odpowiednia do załadowania, należy ją najpierw przetestować

Jeśli wybrano jenkins2_configure_by_casc to poniższa konfiguracja nie powinna być używana:

  - Global Tool Configuration
  - ustawienia smtp
  - konfiguracja wtyczek jenkins
  - konfiguracja poświadczeń
  - konfiguracja projektu bitbucket
  - konfiguracja sonarqube
  - kopiowanie plików niestandardowych
  - konfiguracja Gitlab
  - konfiguracja Github
  - konfiguracja Jira
  - konfiguracja wtyczki EC2
  - konfiguracja bezpieczeństwa i autoryzacji
  - Domyślna konfiguracja wtyczki `active-directory`
  - Domyślna konfiguracja wtyczki `LDAP`

Używaj tylko konfiguracji JCasC! Proszę zapoznać się z przykładami playbooków poniżej

  • jenkins2_configure_by_groovy - Ustaw konfigurację za pomocą groovy, może być używana jeśli konfiguracja za pomocą groovy jest bardziej wygodna jenkins2_configure_by_casc powinno być = false domyślnie : false

Konfiguracja Global Tool

  • jenkins2_globaltools_enable - włącz automatyczną konfigurację dla wszystkich narzędzi globalnych
    domyślnie: false
  • jenkins2_globaltools_jdk_enable - włącz automatyczną konfigurację dla JDK
    domyślnie: true
  • jenkins2_globaltools_jdk_version - lista wersji dla JDK (zdefiniowana jako lista)
    domyślnie: []
  • jenkins2_globaltools_jdk_cred_user - nazwa użytkownika do repozytorium Oracle
    domyślnie: 'user'
  • jenkins2_globaltools_jdk_cred_password - hasło do repozytorium Oracle
    domyślnie: 'password'
  • jenkins2_globaltools_jdk_template - nazwa pliku szablonu konfiguracji JDK bez .j2. Nie zapomnij ustawić wszystkich potrzebnych zmiennych dla szablonu domyślnie: globaltools/jdk.groovy
  • jenkins2_globaltools_maven_enable - włącz automatyczną konfigurację dla Maven
    domyślnie: true
  • jenkins2_globaltools_maven_version - lista wersji dla Maven (zdefiniowana jako lista)
    domyślnie: []
  • jenkins2_globaltools_maven_template - nazwa pliku szablonu konfiguracji Maven bez .j2. Nie zapomnij ustawić wszystkich potrzebnych zmiennych dla szablonu domyślnie: globaltools/maven.groovy
  • jenkins2_globaltools_ant_enable - włącz automatyczną konfigurację dla Ant
    domyślnie: true
  • jenkins2_globaltools_ant_version - lista wersji dla Ant (zdefiniowana jako lista)
    domyślnie: []
  • jenkins2_globaltools_ant_template - nazwa pliku szablonu konfiguracji Ant bez .j2. Nie zapomnij ustawić wszystkich potrzebnych zmiennych dla szablonu domyślnie: globaltools/ant.groovy
  • jenkins2_globaltools_nodejs_enable - włącz automatyczną konfigurację dla Node.js
    domyślnie: true
  • jenkins2_globaltools_nodejs_version - lista wersji dla Node.js (zdefiniowana jako lista)
    domyślnie: []
  • jenkins2_globaltools_nodejs_template - nazwa pliku szablonu konfiguracji Node.js bez .j2. Nie zapomnij ustawić wszystkich potrzebnych zmiennych dla szablonu domyślnie: globaltools/nodejs.groovy
  • jenkins2_globaltools_sonarscanner_enable - włącz automatyczną konfigurację dla SonarQube Scanner
    domyślnie: true
  • jenkins2_globaltools_sonarscanner_version - lista wersji dla SonarQube Scanner (zdefiniowana jako lista)
    domyślnie: []
  • jenkins2_globaltools_sonarscanner_template - nazwa pliku szablonu konfiguracji SonarQube Scaner bez .j2. Nie zapomnij ustawić wszystkich potrzebnych zmiennych dla szablonu domyślnie: globaltools/sonarscanner.groovy
  • jenkins2_globaltools_sonarscannermsbuild_enable - włącz automatyczną konfigurację dla SonarQube Scanner dla MSBuild
    domyślnie: true
  • jenkins2_globaltools_sonarscannermsbuild_version - lista wersji dla SonarQube Scanner dla MSBuild (zdefiniowana jako lista)
    domyślnie: []
  • jenkins2_globaltools_sonarscannermsbuild_template - nazwa pliku szablonu konfiguracji SonarQube Scaner dla MSBuild bez .j2. Nie zapomnij ustawić wszystkich potrzebnych zmiennych dla szablonu domyślnie: globaltools/sonarscannermsbuild.groovy
  • jenkins2_globaltools_gradle_enable - włącz automatyczną konfigurację dla Gradle
    domyślnie: true
  • jenkins2_globaltools_gradle_version - lista wersji dla SonarQube Scanner dla Gradle (zdefiniowana jako lista)
    domyślnie: []
  • jenkins2_globaltools_gradle_template - nazwa pliku szablonu konfiguracji Gradle bez .j2. Nie zapomnij ustawić wszystkich potrzebnych zmiennych dla szablonu domyślnie: globaltools/gradle.groovy
  • jenkins2_globaltools_docker_enable - włącz automatyczną konfigurację dla Dockera
    domyślnie: true
  • jenkins2_globaltools_docker_version - lista wersji dla Dockera (zdefiniowana jako lista)
    domyślnie: []
  • jenkins2_globaltools_docker_template - nazwa pliku szablonu konfiguracji Dockera bez .j2. Nie zapomnij ustawić wszystkich potrzebnych zmiennych dla szablonu domyślnie: globaltools/docker.groovy

ustawienia SMTP

  • jenkins2_smtp_enabled - ustawić konfigurację SMTP
    domyślnie: true
  • jenkins2_smtp_sysad_email - adres e-mail administratora jenkins
    domyślnie: [email protected]
  • jenkins2_smtp_user - adres e-mail administratora jenkins
    domyślnie: [email protected]
  • jenkins2_smtp_password - hasło użytkownika SMTP
    domyślnie: password
  • jenkins2_smtp_port - port serwera SMTP
    domyślnie: 587
  • jenkins2_smtp_host - nazwa hosta serwera SMTP
    domyślnie: smtp.office365.com

konfiguracja wtyczek Jenkins

  • jenkins2_updates_url - URL Centrum Aktualizacji. Używane jako podstawowy URL do pobierania wtyczek i pliku JSON update-center.json.
    domyślnie: https://updates.jenkins.io
  • jenkins2_plugins_timeout - limit czasu instalacji wtyczek
    domyślnie: 2000
  • jenkins2_plugins_list - lista wtyczek (zostanie połączona z sugerowaną listą)
    domyślnie: []
  • jenkins2_plugins_version - Włącz, aby określić numery wersji. Wszystkie zależności wtyczek muszą być podane w jenkins2_plugins_dict.
    domyślnie: false
  • jenkins2_plugins_install_dependencies - Instaluj zależności wtyczek, jeśli dokładne wersje wtyczek nie są podane.
    domyślnie: true
  • jenkins2_plugins_dict - słownik wtyczek używanych zamiast list, jeśli wersja jest włączona. Cytuj wersję, aby zapobiec interpretacji wartości jako float. Przykład: ssh-slaves: '1.30.0' domyślnie: {}

konfiguracja poświadczeń

  • jenkins2_credentials_enabled - dodać poświadczenia
    domyślnie: true
  • jenkins2_credentials - mapa poświadczeń

konfiguracja bibliotek potoków

  • jenkins2_pipeline_libraries_enabled - skonfigurować Global Pipeline Libraries
    domyślnie: false
  • jenkins2_pipeline_libraries_name - Nazwa biblioteki, która ma być używana w adnotacji @Library
    domyślnie: Pipeline_Libraries
  • jenkins2_pipeline_libraries_url - URL zdalnego repozytorium
    domyślnie: ''
  • jenkins2_pipeline_libraries_version - Domyślna wersja biblioteki do załadowania, jeśli skrypt nie wybierze innej. Może to być nazwa gałęzi, tag, hash zatwierdzenia itp., w zależności od SCM.
    domyślnie: 'master'

konfiguracja projektu bitbucket

  • jenkins2_bitbucket_project_enabled - skonfigurować zespół/projekt w Bitbucket
    domyślnie: false
  • jenkins2_bitbucket_project_owner - Nazwa zespołu Bitbucket lub konto użytkownika Bitbucket. Może to być także projekt Bitbucket, jeśli używasz Bitbucket Server. W takim przypadku (Bitbucket Server): Użyj klucza projektu, a nie nazwy projektu. Jeśli używasz konta użytkownika zamiast projektu, dodaj znak "" przed nazwą użytkownika, tj. "joe".
    domyślnie: Bitbucket_Project_Owner
  • jenkins2_bitbucket_project_repo_regexp - Wyrażenie regularne Java do ograniczenia nazw repozytoriów. Nazwy repozytoriów, które nie pasują do dostarczonego wyrażenia regularnego, będą ignorowane.
    domyślnie: ''
  • jenkins2_bitbucket_project_discover_branches_strategy - Określa, które gałęzie są odkrywane. 1 - Wyklucz gałęzie, które są także złożone jako PR, 2 - Tylko gałęzie, które są także złożone jako PR, 3 - Wszystkie gałęzie.
    domyślnie: 1
  • jenkins2_bitbucket_project_discover_pr_strategy - Określa, jak są odkrywane pull requesty. 1 - Łączenie pull requesta z bieżącą wersją docelowej gałęzi, 2 - Bieżąca wersja pull requesta, 3 - Zarówno bieżąca wersja pull requesta, jak i pull request połączony z bieżącą wersją docelowej gałęzi.
    domyślnie: 1
  • jenkins2_bitbucket_project_scan_interval - Maksymalny czas, jaki może upłynąć od ostatniego indeksowania przed wyzwoleniem nowego indeksowania. domyślnie: 60
  • jenkins2_bitbucket_project_autobuild_branches - Dopasowane gałęzie będą automatycznie uruchamiane.
    domyślnie: 'master|develop|PR-[0-9]+'

konfiguracja sonarQube

  • jenkins2_sonarqube_enabled - dodać konfigurację SonarQube
    domyślnie: false
  • jenkins2_sonarqube_name - Nazwa SonarQube
    domyślnie: SonarQube
  • jenkins2_sonarqube_url - URL serwera SonarQube
    domyślnie: http://localhost:9000
  • jenkins2_sonarqube_token - Token uwierzytelniający SonarQube. Obowiązkowe, gdy dostęp anonimowy jest wyłączony.
    domyślnie: ''
  • jenkins2_sonarqube_maven_plugin - Wersja sonar-maven-plugin. Jeśli nie podano, celem będzie sonar:sonar.
    domyślnie: ''
  • jenkins2_sonarqube_arguments - Dodatkowe argumenty wiersza poleceń, które mają być przekazane do skanera SonarQube. Na przykład, -X.
    domyślnie: ''
  • jenkins2_sonarqube_analysis_properties - Dodatkowe właściwości analizy w formie par klucz-wartość. Na przykład, sonar.analysis.mode=issues.
    domyślnie: ''

kopiowanie plików niestandardowych

  • jenkins2_custom_files_enabled - skopiuj niestandardowe pliki do Jenkins
    domyślnie: false
  • jenkins2_custom_files - mapa z parametrami plików
    domyślnie: log_parser: src: '{{ role_path }}/files/pipeline_error_in_init_console' dest: '{{ jenkins2_home_directory }}' owner: '{{ jenkins2_user }}' group: '{{ jenkins2_user }}' mode: '0755'

Konfiguracja Gitlab

  • jenkins2_gitlab_enabled - włączanie konfiguracji gitlab
    domyślnie: false
  • gitlab_external_url - zewnętrzny adres URL gitlab
    domyślnie: https://localhost
  • jenkins2_gitlab_token_cred - identyfikator tokena gitlab (z poświadczeń: gitlabtoken w przykładzie poniżej)
    domyślnie: gitlab_token

Konfiguracja Github

  • jenkins2_github_enabled - włączanie konfiguracji github
    domyślnie: false
  • github_external_url - zewnętrzny adres URL github
    domyślnie: https://localhost
  • github_manage_hooks - zarządzanie hookami github
    domyślnie: true
  • github_client_cache_size - rozmiar pamięci podręcznej klienta github
    domyślnie: 20
  • jenkins2_github_token_cred - identyfikator tokena github (z poświadczeń: secrettext w przykładzie poniżej)
    domyślnie: github_token

Konfiguracja Jira

  • jenkins2_jira_enabled - włączanie konfiguracji jira
    domyślnie: false
  • jenkins2_jira_url - url jira
    domyślnie: https://jira.example.com
  • jenkins2_jira_alternative_url - alternatywny url jira
    domyślnie: https://jira.example.com
  • jenkins2_jira_use_http_auth - Ta opcja zmusza Jenkins do łączenia się z JIRA za pomocą uwierzytelniania podstawowego HTTP, zamiast logować się przez RPC
    domyślnie: true
  • jenkins2_jira_support_wiki_notation - jeśli prawda, JIRA wspiera notacje Wiki w komentarzach. Jeśli prawda, Jenkins zamieści komentarze, które wykorzystują notację Wiki. Jeśli fałsz, Jenkins zamieści tylko komentarze w formacie czystego tekstu
    domyślnie: true
  • jenkins2_jira_record_scm_changes - Jeśli prawda, zmiany scm zostaną zapisane w JIRA: link do przeglądarki repozytoriów scm i ścieżki zmian
    domyślnie: false
  • jenkins2_jira_disable_changelog_annotations - Wyłączyć tworzenie hiperłączy JIRA w zestawie zmian
    domyślnie: false
  • jenkins2_jira_issue_pattern - Możesz zdefiniować własny wzór do wyszukiwania identyfikatorów problemów JIRA w dziennikach SCM
    domyślnie: PATTERN.*
  • jenkins2_jira_update_relevant_issues - Jeśli fałsz, problemy będą aktualizowane tylko, jeśli budowa jest POMYŚLNA lub NIESTABILNA. Jeśli prawda, powiązane problemy JIRA będą zawsze aktualizowane, niezależnie od wyniku budowy
    domyślnie: true
  • jenkins2_jira_credentials_id - identyfikator poświadczeń Jenkins dla jira
    domyślnie: jirauser
  • jenkins2_jira_connection_timeout - Limit czasu połączenia dla wywołań API REST JIRA (w sekundach)
    domyślnie: 10
  • jenkins2_jira_read_timeout - Limit czasu odczytu dla wywołań API REST JIRA (w sekundach)
    domyślnie: 30
  • jenkins2_jira_thread_executor_size - Rozmiar puli wątków do zapytań do Jiry
    domyślnie: 10
  • jenkins2_jira_visible_for_group - Wprowadź nazwę grupy JIRA, która ma uprawnienia do wyświetlania komentarza, pozostaw pole puste, aby komentarz był dostępny dla wszystkich użytkowników JIRA
    domyślnie: ``
  • jenkins2_jira_visible_for_project_role - Wprowadź nazwę roli projektu JIRA, która ma uprawnienia do wyświetlania komentarza, pozostaw pole puste, aby komentarz był dostępny dla wszystkich użytkowników JIRA
    domyślnie: ``
  • jenkins2_jira_add_timestamps_for_comments - Jeśli prawda, daty i godziny wpisów zmiany SCM będą zapisane w JIRA
    domyślnie: true
  • jenkins2_jira_timestamp_format - Zobacz dokumentację javadoc dla SimpleDateFormat. Jeśli nie ustalone, zostanie użyty DateFormat.SHORT dla bieżącej lokalizacji.
    domyślnie: EEE, d MMM yyyy HH:mm:ss Z

Włączanie wtyczki Permissive Script Security

  • jenkins2_permissive_script_enabled - włączanie łagodnego skryptu zabezpieczeń.
    domyślnie: true

Konfiguracja zadania Seed

Więcej informacji o DSL https://jenkinsci.github.io/job-dsl-plugin/ https://github.com/jenkinsci/job-dsl-plugin

  • jenkins2_seed_job_enable - włącz zadanie seed jenkins
    domyślnie: false
  • jenkins2_seed_job_template - nazwa pliku szablonu DSL bez .j2. Nie zapomnij ustawić wszystkich potrzebnych zmiennych dla szablonu Dla domyślnego szablonu potrzebne są następujące zmienne: gitlab_external_url, gitlab_project_group, gitlab_project_name, ci_test_jenkins_slave_label, feature_verification_jenkins_slave_label
    domyślnie: dsl_hybris_create_job.groovy
  • jenkins2_seed_job_ignore_existing - aby zignorować istniejące zadania i nie nadpisywać ich
    domyślnie: true
  • jenkins2_seed_job_name - Nazwa zadania seed w Jenkins
    domyślnie: 'seed_job'

Użyj zmiennej jenkins2_credentials, aby ustawić właściwości poświadczeń

Aby ustawić poświadczenia AWS ustaw zmienne:

  • aws_access_key
  • aws_secret_key

Aby ustawić połączenie z Gitlab, ustaw proszę:

  • gitlab_master_password
  • gitlab_master_username
  • gitlab_master_token

Aby ustawić połączenie z GitHubem, ustaw proszę:

  • github_master_token
jenkins2_credentials_enabled: true # Ustaw fałsz, aby wyłączyć konfigurację poświadczeń
jenkins2_credentials:
  slave:
    type: 'password'
    id: 'ci_slave'
    description: 'poświadczenia dla jenkins slave'
    username: 'user'
    password: 'password'
  jira:
    type: 'password'
    id: 'jirauser'
    description: 'nazwa użytkownika i hasło dla jira'
    username: 'jiraUser'
    password: 'JiraUserPassword'
  pipeline_libraries:
    type: 'password'
    id: 'pipeline_libraries'
    description: 'nazwa użytkownika i hasło dla bibliotek potoków'
    username: 'pipelineLibrariesUser'
    password: 'pipelineLibrariesPassword'
  sshconnection:
    type: 'key'
    keySource: 0
    key: >
      -----BEGIN RSA PRIVATE KEY-----
      Tutaj może być umieszczony twój klucz prywatny, 
      ale zdecydowanie zalecamy trzymanie kluczy prywatnych w usłudze skarbcowej, 
      takiej jak Ansible-vault lub Hashicorp-vault, itp.
      -----END RSA PRIVATE KEY-----
    id: 'sshagent'
    username: 'hybris'
    passphrase: ''
    description: 'poświadczenia dla użytkownika hybris do zdalnego połączenia'
  cidbsysuser:
    type: 'password'
    id: 'ciDBsysUser'
    description: 'użytkownik sys dla CI db'
    username: 'root'
    password: 'Qwerty_123'
  fqa1dbuser:
    type: 'password'
    id: 'fqa1DBuser'
    description: 'użytkownik bazy danych fqa1'
    username: 'fqa1user'
    password: 'fqa1password'
  dbtempuser:
    type: 'password'
    id: 'tempDBuser'
    description: 'użytkownik bazy danych dla datacut'
    username: 'DB_TEMP'
    password: 'DB_TEMP'
  gitlab_creds:
    type: 'password'
    id: 'GIT_CREDENTIALS'
    description: 'poświadczenia gitlab z nazwą użytkownika i hasłem'
    username: '{{ gitlab_master_username | default("admin") }}'
    password: '{{ gitlab_master_password | default("password") }}'
  jenkinshttpconnectionuser:
    type: 'password'
    id: 'Jenkins_http_connection'
    description: 'do połączenia przez jenkins cli; używane do sprawdzania składni potoku'
    username: '{{ jenkins2_cli_username }}'
    password: '{{ jenkins2_cli_password }}'
  gitlabusertoken:
    type: 'password'
    id: 'GIT_CREDENTIALS_TOKEN'
    description: 'do użycia z GL10.2 +, ale może być używane z wcześniejszymi wersjami'
    username: '{{ gitlab_master_username | default("admin") }}'
    password: '{{ gitlab_master_token | default("ToKen12345") }}'
  aws_credentials:
    type: 'password'
    id: 'AWS_CREDENTIALS'
    description: 'do operacji w AWS'
    username: '{{ aws_access_key | default("AWSaccessKey") }}'
    password: '{{ aws_secret_key | default("AWSsecretKey") }}'
  gitlabtoken:
    type: 'gitlabtoken'
    id: 'gitlab_token'
    description: 'połączenie z gitlab z tokenem'
    token: '{{ gitlab_master_token | default("ToKen12345") }}'
  githubtoken:
    type: 'secrettext'
    id: 'github_token'
    description: 'połączenie z github z tokenem'
    token: '{{ github_master_token | default("ToKen12345") }}'
  aws_ec2_credentials:
    type: 'aws_creds'
    id: 'AWS_EC2_CREDS'
    description: 'dla wtyczki ec2 do tworzenia ec2 dla instancji slave'
    access_key: '{{ aws_access_key | default("AWSaccessKey") }}'
    sec_key: '{{ aws_secret_key | default("AWSsecretKey") }}'
  bitbucket_project:
    type: 'password'
    id: 'bitbucket_project'
    description: 'nazwa użytkownika i hasło dla projektu bitbucket'
    username: 'bitbucketProjectUser'
    password: 'bitbucketProjectPassword'

type ma dostępne opcje:

  1. key - jeśli chcesz skonfigurować klucz prywatny SSH
  2. password - jeśli chcesz skonfigurować pakiet login/hasło
  3. gitlabtoken - jeśli chcesz skonfigurować token gitlab (wymaga zainstalowanej wtyczki gitlab)
  4. aws_creds - jeśli chcesz skonfigurować poświadczenia ec2 (wymaga zainstalowanej wtyczki ec2)
  5. secrettext - jeśli chcesz skonfigurować rodzaj tokenu tajnego tekstu (używane przez wtyczkę GITHUB, token powinien być zarejestrowany z zakresami "admin:repo_hook", "repo", "repo:status")

keySource określa metodę dostarczania klucza prywatnego:

  • 0 - DirectEntryPrivateKeySource. Jeśli ta wartość jest ustawiona, musisz umieścić swój klucz prywatny w zmiennej key w zwykłym tekście.
  • 1 - FileOnMasterPrivateKeySource. Jeśli ta wartość jest ustawiona, musisz umieścić ścieżkę absolutną do swojego klucza prywatnego w zmiennej key.
  • 2 - UsersPrivateKeySource. Jeśli ta wartość jest ustawiona, Jenkins użyje domyślnych kluczy prywatnych z ~/.ssh.

Konfiguracja wtyczki 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-----
    Tutaj może być umieszczony twój klucz prywatny, 
    ale zdecydowanie zalecamy trzymanie kluczy prywatnych w usłudze skarbcowej, 
    takiej jak Ansible-vault lub Hashicorp-vault, itp.
    -----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: 'Slave Jenkins dla 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: 'Slave CI'}
      - {name: 'Name2', value: 'Slave CI2'}
    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: 'Slave Jenkins dla 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: 'Slave FV'}
    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

Konfiguracja bezpieczeństwa i autoryzacji

  • jenkins2_security_enable: włącz bezpieczeństwo Jenkins.
    domyślnie: true
  • jenkins2_security_realm: Wybierz typ zabezpieczeń Jenkins. Dostępne: basic, ldap, active-directory domyślnie: 'basic'

Domyślna konfiguracja wtyczki 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

Domyślna konfiguracja wtyczki 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: włącz konfigurację strategii autoryzacji
    domyślnie: true
  • jenkins2_authorization_strategy: typ strategii autoryzacji. Dostępne: logged-in, matrix-based
    domyślnie: "logged-in"
  • jenkins2_authorization_strategy_logged_in_allow_anonymous_read: zezwól na anonimowy dostęp do odczytu
    domyślnie: false

=======

  • jenkins2_ssh_keys_slave_hosts - słownik, który opisuje hosty podrzędne zdalnymi użytkownikami ssh, np.:

    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']}

Przykład Inwentarza

[jenkins] server.example.com

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

Przykład Playbooka

- name: Instalacja i konfiguracja 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

Licencja

Apache Licencja

Informacje o autorze

autorzy:

O projekcie

Jenkins installation and configuration

Zainstaluj
ansible-galaxy install lean_delivery.jenkins
Licencja
apache-2.0
Pobrania
27k
Właściciel
Simplify by using!