lean_delivery.jenkins
Installation de Jenkins 2
Résumé
Ce rôle :
- installe Jenkins 2 sur Ubuntu, Centos7, RHEL7
- effectue une configuration minimale (ex. configuration SMTP, installation de plugins)
Tâches du rôle
- Installer Jenkins
- Installer des plugins
- Configurer des plugins via JCasC
- Configurer les paramètres SMTP via JCasC
- Ajouter des identifiants via JCasC
- Configurer des plugins via des scripts Groovy
- Configurer les paramètres SMTP via des scripts Groovy
- Ajouter des identifiants via des scripts Groovy
- Générer des clés SSH et les copier sur les serveurs esclaves
Exigences
- Version minimale d'Ansible pour l'installation : 2.7
- Java 8
- Systèmes d'exploitation pris en charge :
- CentOS
- 8
- RHEL
- 8
- Amazon Linux 2
- Ubuntu 18
- Debian 9
- CentOS
Variables du rôle
Configuration pour Jenkins
jenkins2_user
- Utilisateur et groupe OS utilisés pour démarrer Jenkins
par défaut :jenkins
jenkins2_package_version
- Nom du package pour l'installation de Jenkins
par défaut :jenkins
jenkins2_release_line
- Version du package à installer : stable ou dernière
par défaut :stable
jenkins2_disable_gpg_check
- Vérification GPG ignorée (uniquement pour yum)
par défaut :false
jenkins2_key_validate_certs
- Vérifier les certificats lors de l'installation de la clé (uniquement pour yum)
par défaut :true
jenkins2_context_path
- Chemin de contexte de Jenkins
par défaut :''
jenkins2_cli_username
- Utilisateur pour la connexion CLI de Jenkins
par défaut :admin
jenkins2_cli_password
- Mot de passe de l'utilisateur pour la connexion CLI de Jenkins
par défaut :admin
jenkins2_home_directory
- Répertoire où Jenkins stocke sa configuration et ses fichiers de travail (checkouts, rapports de construction, artefacts, ...)
par défaut :/var/lib/jenkins
Configuration des paramètres de Jenkins : utilisés dans /etc/sysconfig/jenkins ou dans /etc/default/jenkins
jenkins2_config_java_cmd
- Exécutable Java pour exécuter Jenkins
par défaut :''
jenkins2_config_java_options
- Options à passer à Java lors de l'exécution de Jenkins.
par défaut :-Djava.awt.headless=true -Djenkins.install.runSetupWizard=false -Dmail.smtp.starttls.enable='true' -Dhudson.slaves.WorkspaceList=_
jenkins2_config_http_port
- Port sur lequel Jenkins écoute.
par défaut :8080
jenkins2_config_listen_address
- Adresse IP sur laquelle Jenkins écoute pour les requêtes HTTP. Par défaut, toutes les interfaces (0.0.0.0).
par défaut :''
jenkins2_config_debug_level
- Niveau de débogage pour les journaux -- plus la valeur est élevée, plus le niveau de détail est important. 5 est INFO.
par défaut :5
jenkins2_config_enable_access_log
- Autoriser ou non l'enregistrement des accès.
par défaut :no
jenkins2_config_handler_max
- Nombre maximum de threads de travail HTTP.
par défaut :100
jenkins2_config_handler_idle
- Nombre maximum de threads de travail HTTP inactifs.
par défaut :20
jenkins2_config_args
- Passer des arguments arbitraires à Jenkins. Liste complète des options : java -jar jenkins.war --help
par défaut :''
Activer HTTPS
jenkins2_https_enabled
- Utiliser ou non une connexion sécurisée.
par défaut :true
jenkins2_http_disabled
- Désactiver la connexion non sécurisée.
par défaut :false
jenkins2_config_https_port
- Port de Jenkins pour la connexion sécurisée (https).
par défaut :8443
jenkins2_local_keystore
- Si vrai, cherche le keystore sur l'hôte Ansible à {{ jenkins2_local_keystore_path }}. Si faux, vérifie le keystore sur l'hôte distant. par défaut :false
jenkins2_local_keystore_path
- Chemin vers le fichier de keystore local (pour ne pas créer de certificat auto-signé)
par défaut :{{ role_path }}/files/{{ jenkins2_ssl_key_store_name }}
jenkins2_ssl_configure
- Configurer ou non la connexion SSL pour Jenkins.
par défaut :true
jenkins2_ssl_key_store_name
- Nom du fichier de keystore. Si un fichier portant ce nom existe dans le dossier des rôles/fichiers, il sera utilisé comme keystore.
par défaut :jenkins2-ssl.keystore.jks
jenkins2_ssl_key_size
- Taille de la clé du certificat.
par défaut :4096
jenkins2_ssl_key_store_password
- Mot de passe du keystore.
par défaut :123456
jenkins2_ssl_key_store
- Chemin complet vers le fichier de keystore.
par défaut :{{ jenkins2_home_directory }}/{{ jenkins2_ssl_key_store_name }}
jenkins2_ssl_certificate_provider
- Uniquement pour les systèmes d'exploitation Linux. https://docs.ansible.com/ansible/latest/openssl_certificate_module.html.
par défaut :selfsigned
Certificat
jenkins2_ca_domain
- Nom de domaine du certificat.
par défaut :example.com
jenkins2_local_pkey_file_name
- Nom du certificat privé.
par défaut :{{ ansible_hostname }}.ca-pkey.pem
jenkins2_local_cert_file_name
- Nom du certificat public.
par défaut :{{ ansible_hostname }}.ca-cert.pem
Configuration du proxy Jenkins
jenkins2_proxy_url
- URL du proxy pour la configuration du téléchargement des plugins
par défaut :''
jenkins2_proxy_host
- Nom d'hôte du serveur proxy
par défaut :''
jenkins2_proxy_port
- Port du serveur proxy
par défaut :0
jenkins2_proxy_username
- Nom d'utilisateur pour la connexion au proxy
par défaut :''
jenkins2_proxy_password
- Mot de passe pour la connexion au proxy
par défaut :''
jenkins2_proxy_no_proxy_hosts
- Hôtes à ignorer lors de l'utilisation du proxy
par défaut :''
Configuration de génération de clés SSH
jenkins2_ssh_keys_generate
- ajouter la capacité de générer des paires de clés SSH sous l'utilisateur Jenkins
par défaut :false
jenkins2_ssh_keys_private_keyname
- nom de la clé privée
par défaut :id_rsa
jenkins2_ssh_keys_size
- taille de la clé SSH RSA
par défaut :4096
jenkins2_ssh_keys_inv_slave_groupname
- nom du groupe esclave dans le fichier d'inventaire
par défaut :jenkins_ssh_slaves
Mode de configuration de Jenkins
jenkins2_configure_by_casc
- Configurer via JCasC jenkins2_configure_by_groovy doit être = false par défaut :true
jenkins2_jcasc_directory
- Chemin relatif où JCasC recherchera des fichiers YAML par défaut :jcasc
jenkins2_jcasc_config
- Configuration pour JCasC qui pourrait être copiée de la configuration existante telle quelle et collée dans cette variable Parfois, la configuration copiée de l'interface Jenkins n'est pas applicable à charger, elle doit être testée d'abord
Si jenkins2_configure_by_casc a été choisi, la configuration suivante ne devrait pas être utilisée :
- Configuration globale des outils
- paramètres SMTP
- configuration des plugins Jenkins
- configuration des identifiants
- configuration du projet Bitbucket
- configuration de SonarQube
- copie de fichiers personnalisés
- configuration de Gitlab
- configuration de GitHub
- configuration de Jira
- configuration du plugin EC2
- configuration de sécurité et d'autorisation
- Configuration par défaut du plugin `active-directory`
- Configuration par défaut du plugin `LDAP`
Utilisez uniquement la configuration JCasC ! Veuillez voir des exemples de playbooks ci-dessous
jenkins2_configure_by_groovy
- Configurer via Groovy, peut être utilisé si la configuration via Groovy est plus pratique jenkins2_configure_by_casc doit être = false par défaut :false
Configuration des outils globaux
jenkins2_globaltools_enable
- activer l'autoconfiguration pour tous les outils globaux
par défaut :false
jenkins2_globaltools_jdk_enable
- activer l'autoconfiguration pour JDK
par défaut :true
jenkins2_globaltools_jdk_version
- liste des versions pour JDK (définie sous forme de liste)
par défaut :[]
jenkins2_globaltools_jdk_cred_user
- nom d'utilisateur pour le dépôt Oracle
par défaut :'user'
jenkins2_globaltools_jdk_cred_password
- mot de passe pour le dépôt Oracle
par défaut :'password'
jenkins2_globaltools_jdk_template
- nom du fichier de modèle de configuration JDK sans .j2. N'oubliez pas de configurer toutes les variables nécessaires pour le modèle par défaut :globaltools\jdk.groovy
jenkins2_globaltools_maven_enable
- activer l'autoconfiguration pour Maven
par défaut :true
jenkins2_globaltools_maven_version
- liste des versions pour Maven (définie sous forme de liste)
par défaut :[]
jenkins2_globaltools_maven_template
- nom du fichier de modèle de configuration Maven sans .j2. N'oubliez pas de configurer toutes les variables nécessaires pour le modèle par défaut :globaltools\maven.groovy
jenkins2_globaltools_ant_enable
- activer l'autoconfiguration pour Ant
par défaut :true
jenkins2_globaltools_ant_version
- liste des versions pour Ant (définie sous forme de liste)
par défaut :[]
jenkins2_globaltools_ant_template
- nom du fichier de modèle de configuration Ant sans .j2. N'oubliez pas de configurer toutes les variables nécessaires pour le modèle par défaut :globaltools\ant.groovy
jenkins2_globaltools_nodejs_enable
- activer l'autoconfiguration pour Node.js
par défaut :true
jenkins2_globaltools_nodejs_version
- liste des versions de Node.js (définie sous forme de liste)
par défaut :[]
jenkins2_globaltools_nodejs_template
- nom du fichier de modèle de configuration Node.js sans .j2. N'oubliez pas de configurer toutes les variables nécessaires pour le modèle par défaut :globaltools\nodejs.groovy
jenkins2_globaltools_sonarscanner_enable
- activer l'autoconfiguration pour SonarQube Scanner
par défaut :true
jenkins2_globaltools_sonarscanner_version
- liste des versions pour SonarQube Scanner (définie sous forme de liste)
par défaut :[]
jenkins2_globaltools_sonarscanner_template
- nom du fichier de modèle de configuration pour SonarQube Scanner sans .j2. N'oubliez pas de configurer toutes les variables nécessaires pour le modèle par défaut :globaltools\sonarscanner.groovy
jenkins2_globaltools_sonarscannermsbuild_enable
- activer l'autoconfiguration pour SonarQube Scanner pour MSBuild
par défaut :true
jenkins2_globaltools_sonarscannermsbuild_version
- liste des versions pour SonarQube Scanner pour MSBuild (définie sous forme de liste)
par défaut :[]
jenkins2_globaltools_sonarscannermsbuild_template
- nom du fichier de modèle de configuration pour SonarQube Scanner pour MSBuild sans .j2. N'oubliez pas de configurer toutes les variables nécessaires pour le modèle par défaut :globaltools\sonarscannermsbuild.groovy
jenkins2_globaltools_gradle_enable
- activer l'autoconfiguration pour Gradle
par défaut :true
jenkins2_globaltools_gradle_version
- liste des versions pour le Scanner SonarQube pour Gradle (définie sous forme de liste)
par défaut :[]
jenkins2_globaltools_gradle_template
- nom du fichier de modèle de configuration pour Gradle sans .j2. N'oubliez pas de configurer toutes les variables nécessaires pour le modèle par défaut :globaltools\gradle.groovy
jenkins2_globaltools_docker_enable
- activer l'autoconfiguration pour Docker
par défaut :true
jenkins2_globaltools_docker_version
- liste des versions pour Docker (définie sous forme de liste)
par défaut :[]
jenkins2_globaltools_docker_template
- nom du fichier de modèle de configuration Docker sans .j2. N'oubliez pas de configurer toutes les variables nécessaires pour le modèle par défaut :globaltools\docker.groovy
Paramètres SMTP
jenkins2_smtp_enabled
- pour configurer les paramètres SMTP
par défaut :true
jenkins2_smtp_sysad_email
- e-mail de l'administrateur Jenkins
par défaut :[email protected]
jenkins2_smtp_user
- e-mail de l'administrateur Jenkins
par défaut :[email protected]
jenkins2_smtp_password
- mot de passe de l'utilisateur SMTP
par défaut :password
jenkins2_smtp_port
- port du serveur SMTP
par défaut :587
jenkins2_smtp_host
- nom d'hôte du serveur SMTP
par défaut :smtp.office365.com
Configuration des plugins Jenkins
jenkins2_updates_url
- URL du centre de mise à jour. Utilisé comme URL de base pour télécharger les plugins et le fichier JSON update-center.json.
par défaut :https://updates.jenkins.io
jenkins2_plugins_timeout
- délai d'expiration pour l'installation des plugins
par défaut :2000
jenkins2_plugins_list
- liste des plugins (sera fusionnée avec la liste suggérée)
par défaut :[]
jenkins2_plugins_version
- Activer pour spécifier des numéros de version. Toutes les dépendances des plugins doivent être fournies dans jenkins2_plugins_dict.
par défaut :false
jenkins2_plugins_install_dependencies
- Installer les dépendances des plugins si la version exacte des plugins n'est pas fournie.
par défaut :true
jenkins2_plugins_dict
- dictionnaire de plugins utilisés à la place des listes si la version est activée. Entourez la version de guillemets pour empêcher la valeur d'être interprétée comme un nombre flottant. Exemple :ssh-slaves: '1.30.0'
par défaut :{}
jenkins2_plugins_version: false
Configuration des identifiants
jenkins2_credentials_enabled
- pour ajouter des identifiants
par défaut :true
jenkins2_credentials
- carte des identifiants
Configuration des bibliothèques de pipeline
jenkins2_pipeline_libraries_enabled
- pour configurer les bibliothèques de pipeline globales
par défaut :false
jenkins2_pipeline_libraries_name
- Nom de la bibliothèque à utiliser dans l'annotation @Library
par défaut :Pipeline_Libraries
jenkins2_pipeline_libraries_url
- URL du dépôt distant
par défaut :''
jenkins2_pipeline_libraries_version
- Une version par défaut de la bibliothèque à charger si un script ne sélectionne pas une autre version. Cela pourrait être un nom de branche, une balise, un hash de commit, etc., selon le SCM.
par défaut :'master'
Configuration du projet Bitbucket
jenkins2_bitbucket_project_enabled
- pour configurer l'équipe/projet Bitbucket
par défaut :false
jenkins2_bitbucket_project_owner
- Nom de l'équipe Bitbucket ou compte utilisateur Bitbucket. Cela pourrait également être un projet Bitbucket, si vous utilisez Bitbucket Server. Dans ce cas (Bitbucket Server) : Utilisez la clé de projet, pas le nom du projet. Si vous utilisez un compte utilisateur au lieu d'un projet, ajoutez un caractère "" avant le nom d'utilisateur, c'est-à-dire "joe".
par défaut :Bitbucket_Project_Owner
jenkins2_bitbucket_project_repo_regexp
- Expression régulière Java pour restreindre les noms des dépôts. Les noms de dépôts qui ne correspondent pas à l'expression régulière fournie seront ignorés.
par défaut :''
jenkins2_bitbucket_project_discover_branches_strategy
- Détermine quelles branches sont découvertes. 1 - Exclure les branches qui sont également déposées en tant que PR, 2 - Seulement les branches qui sont également déposées en tant que PR, 3 - Toutes les branches.
par défaut :1
jenkins2_bitbucket_project_discover_pr_strategy
- Détermine comment les demandes de tirage sont découvertes. 1 - Fusionner la demande de tirage avec la révision actuelle de la branche cible, 2 - La révision actuelle de la demande de tirage, 3 - La révision actuelle de la demande de tirage et la demande de tirage fusionnée avec la révision actuelle de la branche cible.
par défaut :1
jenkins2_bitbucket_project_scan_interval
- La durée maximale depuis la dernière indexation qui est autorisée à s'écouler avant qu'une indexation ne soit déclenchée. par défaut :60
jenkins2_bitbucket_project_autobuild_branches
- Les branches correspondantes seront déclenchées automatiquement.
par défaut :'master|develop|PR-[0-9]+'
Configuration de SonarQube
jenkins2_sonarqube_enabled
- pour ajouter une configuration SonarQube
par défaut :false
jenkins2_sonarqube_name
- Nom de SonarQube
par défaut :SonarQube
jenkins2_sonarqube_url
- URL du serveur SonarQube
par défaut :http://localhost:9000
jenkins2_sonarqube_token
- Jeton d'authentification SonarQube. Obligatoire lorsque l'accès anonyme est désactivé.
par défaut :''
jenkins2_sonarqube_maven_plugin
- Version du sonar-maven-plugin. Si non spécifié, l'objectif sera sonar:sonar.
par défaut :''
jenkins2_sonarqube_arguments
- Arguments supplémentaires en ligne de commande à passer au scanner SonarQube. Par exemple, -X.
par défaut :''
jenkins2_sonarqube_analysis_properties
- Propriétés d'analyse supplémentaires sous forme de paires clé-valeur. Par exemple, sonar.analysis.mode=issues.
par défaut :''
Copie de fichiers personnalisés
jenkins2_custom_files_enabled
- pour copier des fichiers personnalisés vers Jenkins
par défaut :false
jenkins2_custom_files
- carte avec les paramètres de fichiers
par défaut :log_parser: src: '{{ role_path }}/files/pipeline_error_in_init_console' dest: '{{ jenkins2_home_directory }}' owner: '{{ jenkins2_user }}' group: '{{ jenkins2_user }}' mode: '0755'
Configuration de Gitlab
jenkins2_gitlab_enabled
- pour activer la configuration de Gitlab
par défaut :false
gitlab_external_url
- URL externe de Gitlab
par défaut :https://localhost
jenkins2_gitlab_token_cred
- ID de jeton Gitlab (des identifiants : gitlabtoken dans l'exemple ci-dessous)
par défaut :gitlab_token
Configuration de GitHub
jenkins2_github_enabled
- pour activer la configuration de GitHub
par défaut :false
github_external_url
- URL externe de GitHub
par défaut :https://localhost
github_manage_hooks
- gérer les hooks GitHub
par défaut :true
github_client_cache_size
- taille du cache client GitHub
par défaut :20
jenkins2_github_token_cred
- ID de jeton GitHub (des identifiants : secrettext dans l'exemple ci-dessous)
par défaut :github_token
Configuration de Jira
jenkins2_jira_enabled
- pour activer la configuration de Jira
par défaut :false
jenkins2_jira_url
- URL de Jira
par défaut :https://jira.example.com
jenkins2_jira_alternative_url
- URL alternative de Jira
par défaut :https://jira.example.com
jenkins2_jira_use_http_auth
- Cette option force Jenkins à se connecter à JIRA en utilisant l'authentification basique HTTP, au lieu de se connecter par RPC
par défaut :true
jenkins2_jira_support_wiki_notation
- si vrai, JIRA prend en charge les notations Wiki dans les commentaires. Si vrai, Jenkins postera des commentaires qui tirent parti de la notation Wiki. Si faux, Jenkins ne postera que des commentaires en texte brut
par défaut :true
jenkins2_jira_record_scm_changes
- Si vrai, les changements SCM seront enregistrés dans JIRA : lien vers le navigateur de dépôts scm et chemins de changement
par défaut :false
jenkins2_jira_disable_changelog_annotations
- Désactiver la création d'hyperliens JIRA dans le changelog
par défaut :false
jenkins2_jira_issue_pattern
- Vous pouvez définir votre propre modèle pour rechercher les identifiants de problèmes JIRA dans les journaux SCM
par défaut :PATTERN.*
jenkins2_jira_update_relevant_issues
- Si faux, les problèmes ne seront mis à jour que si la construction est réussie ou instable. Si vrai, les problèmes JIRA liés seront toujours mis à jour, quelle que soit le résultat de la construction
par défaut :true
jenkins2_jira_credentials_id
- ID des identifiants Jenkins pour Jira
par défaut :jirauser
jenkins2_jira_connection_timeout
- Délai d'attente de connexion pour les appels API REST de JIRA (en secondes)
par défaut :10
jenkins2_jira_read_timeout
- Délai d'attente de lecture pour les appels API REST de JIRA (en secondes)
par défaut :30
jenkins2_jira_thread_executor_size
- Taille du pool de threads Executor pour interroger Jira
par défaut :10
jenkins2_jira_visible_for_group
- Indiquez le nom du groupe JIRA qui a le droit de voir le commentaire, laissez le champ vide pour rendre le commentaire accessible à tous les utilisateurs JIRA
par défaut : ``jenkins2_jira_visible_for_project_role
- Indiquez le nom du rôle de projet JIRA qui a le droit de voir le commentaire, laissez le champ vide pour rendre le commentaire accessible à tous les utilisateurs JIRA
par défaut : ``jenkins2_jira_add_timestamps_for_comments
- Si vrai, les entrées de changement SCM et la date et heure des commentaires seront enregistrées dans JIRA
par défaut :true
jenkins2_jira_timestamp_format
- Voir la documentation pour SimpleDateFormat pour obtenir de l'aide. Si non défini, DateFormat.SHORT pour la locale actuelle sera utilisé.
par défaut :EEE, d MMM yyyy HH:mm:ss Z
Activer le plugin de sécurité des scripts permissif
jenkins2_permissive_script_enabled
- activer la sécurité de script permissif.
par défaut :true
Configuration du travail de semence
Plus d'infos sur le DSL https://jenkinsci.github.io/job-dsl-plugin/ https://github.com/jenkinsci/job-dsl-plugin
jenkins2_seed_job_enable
- activer le travail de semence Jenkins
par défaut :false
jenkins2_seed_job_template
- nom du fichier de modèle DSL sans .j2. N'oubliez pas de configurer toutes les variables nécessaires pour le modèle Pour le modèle par défaut, il faut les variables suivantes : gitlab_external_url, gitlab_project_group, gitlab_project_name, ci_test_jenkins_slave_label, feature_verification_jenkins_slave_label
par défaut :dsl_hybris_create_job.groovy
jenkins2_seed_job_ignore_existing
- ignorer les travaux existants et ne pas les réécrire
par défaut :true
jenkins2_seed_job_name
- Nom du travail de semence Jenkins
par défaut :'seed_job'
Utilisez la variable jenkins2_credentials
pour définir les propriétés des identifiants
Pour définir les identifiants AWS, définissez les variables :
- aws_access_key
- aws_secret_key
Pour établir une connexion Gitlab, merci de définir :
- gitlab_master_password
- gitlab_master_username
- gitlab_master_token
Pour établir une connexion GitHub, merci de définir :
- github_master_token
jenkins2_credentials_enabled: true # Définissez sur false pour désactiver la configuration des identifiants
jenkins2_credentials:
slave:
type: 'password'
id: 'ci_slave'
description: 'identifiants pour le serveur esclave Jenkins'
username: 'user'
password: 'password'
jira:
type: 'password'
id: 'jirauser'
description: 'nom d'utilisateur et mot de passe pour Jira'
username: 'jiraUser'
password: 'JiraUserPassword'
pipeline_libraries:
type: 'password'
id: 'pipeline_libraries'
description: 'nom d'utilisateur et mot de passe pour les bibliothèques de pipeline'
username: 'pipelineLibrariesUser'
password: 'pipelineLibrariesPassword'
sshconnection:
type: 'key'
keySource: 0
key: >
-----BEGIN RSA PRIVATE KEY-----
Ici pourrait être placée votre clé privée,
mais nous recommandons fortement de garder les clés privées dans un service de coffre-fort,
comme Ansible-vault ou Hashicorp-vault, etc.
-----END RSA PRIVATE KEY-----
id: 'sshagent'
username: 'hybris'
passphrase: ''
description: 'identifiants pour l'utilisateur hybris afin de se connecter à distance'
cidbsysuser:
type: 'password'
id: 'ciDBsysUser'
description: 'utilisateur sys pour la base de données CI'
username: 'root'
password: 'Qwerty_123'
fqa1dbuser:
type: 'password'
id: 'fqa1DBuser'
description: 'utilisateur de base de données fqa1'
username: 'fqa1user'
password: 'fqa1password'
dbtempuser:
type: 'password'
id: 'tempDBuser'
description: 'utilisateur de base de données pour la découpe de données'
username: 'DB_TEMP'
password: 'DB_TEMP'
gitlab_creds:
type: 'password'
id: 'GIT_CREDENTIALS'
description: 'identifiants Gitlab nom d'utilisateur avec mot de passe'
username: '{{ gitlab_master_username | default("admin") }}'
password: '{{ gitlab_master_password | default("password") }}'
jenkinshttpconnectionuser:
type: 'password'
id: 'Jenkins_http_connection'
description: 'pour la connexion via CLI Jenkins ; utilisé pour vérifier la syntaxe du pipeline'
username: '{{ jenkins2_cli_username }}'
password: '{{ jenkins2_cli_password }}'
gitlabusertoken:
type: 'password'
id: 'GIT_CREDENTIALS_TOKEN'
description: 'à utiliser avec GL10.2+ mais pourrait être utilisé avec des versions antérieures'
username: '{{ gitlab_master_username | default("admin") }}'
password: '{{ gitlab_master_token | default("ToKen12345") }}'
aws_credentials:
type: 'password'
id: 'AWS_CREDENTIALS'
description: 'pour les opérations dans AWS'
username: '{{ aws_access_key | default("AWSaccessKey") }}'
password: '{{ aws_secret_key | default("AWSsecretKey") }}'
gitlabtoken:
type: 'gitlabtoken'
id: 'gitlab_token'
description: 'connexion Gitlab avec jeton'
token: '{{ gitlab_master_token | default("ToKen12345") }}'
githubtoken:
type: 'secrettext'
id: 'github_token'
description: 'connexion GitHub avec jeton'
token: '{{ github_master_token | default("ToKen12345") }}'
aws_ec2_credentials:
type: 'aws_creds'
id: 'AWS_EC2_CREDS'
description: 'pour le plugin EC2 afin de créer des instances EC2 pour les esclaves'
access_key: '{{ aws_access_key | default("AWSaccessKey") }}'
sec_key: '{{ aws_secret_key | default("AWSsecretKey") }}'
bitbucket_project:
type: 'password'
id: 'bitbucket_project'
description: 'nom d'utilisateur et mot de passe pour le projet Bitbucket'
username: 'bitbucketProjectUser'
password: 'bitbucketProjectPassword'
type
a les options disponibles :
key
- si vous souhaitez configurer la clé privée SSHpassword
- si vous souhaitez configurer un ensemble nom d'utilisateur/mot de passegitlabtoken
- si vous souhaitez configurer un jeton Gitlab (le plugin Gitlab doit être installé)aws_creds
- si vous souhaitez configurer les identifiants EC2 (le plugin EC2 doit être installé)secrettext
- si vous souhaitez configurer un jeton de type texte secret (utilisé par le plugin GITHUB, le jeton doit être enregistré avec les autorisations "admin:repo_hook", "repo", "repo:status")
keySource
spécifie la méthode de fourniture de la clé privée :
0
- DirectEntryPrivateKeySource. Si cette valeur est définie, vous devez placer votre clé privée dans la variablekey
en texte clair.1
- FileOnMasterPrivateKeySource. Si cette valeur est définie, vous devez placer le chemin absolu vers votre clé privée dans la variablekey
.2
- UsersPrivateKeySource. Si cette valeur est définie, Jenkins utilisera les clés privées par défaut de~/.ssh
.
Configuration du plugin EC2
jenkins2_ec2_enable
- activer la configuration du plugin EC2 Jenkins https://wiki.jenkins.io/display/JENKINS/Amazon+EC2+Plugin
par défaut :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-----
Ici pourrait être placée votre clé privée,
mais nous recommandons fortement de garder les clés privées dans un service de coffre-fort,
comme Ansible-vault ou Hashicorp-vault, etc.
-----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: 'Esclave Jenkins pour 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: 'Esclave CI'}
- {name: 'Name2', value: 'Esclave 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: 'Esclave Jenkins pour 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: 'Esclave 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
Configuration de la sécurité et de l'autorisation
jenkins2_security_enable
: activer la sécurité Jenkins.
par défaut :true
jenkins2_security_realm
: Sélectionner le type de sécurité Jenkins. Disponibles :basic
,ldap
,active-directory
par défaut :'basic'
Configuration par défaut du plugin
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
Configuration par défaut du plugin
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
: activer la configuration de la stratégie d'autorisation
par défaut :true
jenkins2_authorization_strategy
: type de stratégie d'autorisation. Disponibles :logged-in
,matrix-based
par défaut :"logged-in"
jenkins2_authorization_strategy_logged_in_allow_anonymous_read
: autoriser l'accès de lecture anonyme
par défaut :false
=======
jenkins2_ssh_keys_slave_hosts - dictionnaire qui décrit les hôtes esclaves avec des utilisateurs SSH distants, ex :
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:
Exemple d'inventaire
[jenkins] server.example.com
[jenkins_ssh_slaves] slave1.example.com slave2.example.com
Exemple de playbook
- name: Installer et configurer 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
Licence
Information sur l'auteur
auteurs :
- Équipe Lean Delivery team@lean-delivery.com
Jenkins installation and configuration
ansible-galaxy install lean_delivery.jenkins