Sonatype Nexus est une plateforme intégrée qui permet aux développeurs de proxy, stocker et gérer les dépendances Java (Maven), les images Docker, Python, Ruby, NPM, Bower, les paquets RPM, gitlfs, Apt, Go, Nuget, ainsi que de distribuer leur logiciel.
Pourquoi utiliser Sonatype Nexus?
- Pour le stockage d'artefacts privés;
- Pour la mise en cache des artefacts téléchargés depuis Internet;
Les artefacts pris en charge dans l'installation de base de Sonatype Nexus :
- Java, Maven (jar)
- Docker
- Python (pip)
- Ruby (gem)
- NPM
- Bower
- Yum (rpm)
- gitlfs
- Raw
- Apt (deb)
- Go
- Nuget
Artefacts pris en charge par la communauté :
- Composer
- Conan
- CPAN
- ELPA
- Helm
- P2
- R
Installation de Sonatype Nexus en utilisant
Exigences
- Lisez sur l'utilisation d'ansible sur Internet.
- Installez ansible
pip install ansiblesur la station de travail où le playbook sera exécuté. - Installez sur la station de travail où le playbook sera exécuté.
- Installez sur la station de travail où le playbook sera exécuté.
- Ce rôle a été testé sur CentOS 7, Ubuntu Xenial (16.04) et Bionic (18.04), Debian Jessie et Stretch
jmespathla bibliothèque doit être installée sur la station de travail où le playbook sera exécuté. Pour l'installation, exécutezsudo pip install -r requirements.txt- Enregistrez le fichier playbook (exemple ci-dessous) dans un fichier nexus.yml
- Lancez l'installation de nexus
ansible-playbook -i host nexus.yml
Exemple d'ansible-playbook pour l'installation de nexus sans LDAP avec les dépôts Maven (java), Docker, Python, Ruby, NPM, Bower, RPM et gitlfs.
---
- name: Nexus
hosts: nexus
become: yes
vars:
nexus_timezone: 'Asia/Omsk'
nexus_admin_password: "admin123"
nexus_public_hostname: 'apatsev-nexus-playbook'
httpd_setup_enable: false
nexus_privileges:
- name: all-repos-read
description: 'Accès en lecture et navigation à tous les dépôts'
repository: '*'
actions:
- read
- browse
- name: company-project-deploy
description: 'Déploiements vers le projet de l'entreprise'
repository: company-project
actions:
- add
- edit
nexus_roles:
- id: Developpers # correspond au groupe LDAP
name: développeurs
description: Tous les développeurs
privileges:
- nx-search-read
- all-repos-read
- company-project-deploy
roles: []
nexus_local_users:
- username: jenkins # utilisé comme clé pour la mise à jour
first_name: Jenkins
last_name: CI
email: support@company.com
password: "s3cr3t"
roles:
- Developpers # ID de rôle ici
nexus_blobstores:
- name: company-artifacts
path: /var/nexus/blobs/company-artifacts
nexus_scheduled_tasks:
- name: compact-blobstore
cron: '0 0 22 * * ?'
typeId: blobstore.compact
taskProperties:
blobstoreName: 'company-artifacts'
nexus_repos_maven_proxy:
- name: central
remote_url: 'https://repo1.maven.org/maven2/'
layout_policy: permissive
- name: jboss
remote_url: 'https://repository.jboss.org/nexus/content/groups/public-jboss/'
- name: vaadin-addons
remote_url: 'https://maven.vaadin.com/vaadin-addons/'
- name: jaspersoft
remote_url: 'https://jaspersoft.artifactoryonline.com/jaspersoft/jaspersoft-repo/'
version_policy: mixed
nexus_repos_maven_hosted:
- name: company-project
version_policy: mixed
write_policy: allow
blob_store: company-artifacts
nexus_repos_maven_group:
- name: public
member_repos:
- central
- jboss
- vaadin-addons
- jaspersoft
# Yum. Change nexus_config_yum to true for create yum repository
nexus_config_yum: true
nexus_repos_yum_hosted:
- name: private_yum_centos_7
repodata_depth: 1
nexus_repos_yum_proxy:
- name: epel_centos_7_x86_64
remote_url: http://download.fedoraproject.org/pub/epel/7/x86_64
maximum_component_age: -1
maximum_metadata_age: -1
negative_cache_ttl: 60
- name: centos-7-os-x86_64
remote_url: http://mirror.centos.org/centos/7/os/x86_64/
maximum_component_age: -1
maximum_metadata_age: -1
negative_cache_ttl: 60
nexus_repos_yum_group:
- name: yum_all
member_repos:
- private_yum_centos_7
- epel_centos_7_x86_64
# NPM. Change nexus_config_npm to true for create npm repository
nexus_config_npm: true
nexus_repos_npm_hosted: []
nexus_repos_npm_group:
- name: npm-public
member_repos:
- npm-registry
nexus_repos_npm_proxy:
- name: npm-registry
remote_url: https://registry.npmjs.org/
negative_cache_enabled: false
# Docker. Change nexus_config_docker to true for create docker repository
nexus_config_docker: true
nexus_repos_docker_hosted:
- name: docker-hosted
http_port: "{{ nexus_docker_hosted_port }}"
v1_enabled: True
nexus_repos_docker_proxy:
- name: docker-proxy
http_port: "{{ nexus_docker_proxy_port }}"
v1_enabled: True
index_type: "HUB"
remote_url: "https://registry-1.docker.io"
use_nexus_certificates_to_access_index: false
maximum_component_age: 1440
maximum_metadata_age: 1440
negative_cache_enabled: true
negative_cache_ttl: 1440
nexus_repos_docker_group:
- name: docker-group
http_port: "{{ nexus_docker_group_port }}"
v1_enabled: True
member_repos:
- docker-hosted
- docker-proxy
# Bower. Change nexus_config_bower to true for create bower repository
nexus_config_bower: true
nexus_repos_bower_hosted:
- name: bower-hosted
nexus_repos_bower_proxy:
- name: bower-proxy
index_type: "proxy"
remote_url: "https://registry.bower.io"
use_nexus_certificates_to_access_index: false
maximum_component_age: 1440
maximum_metadata_age: 1440
negative_cache_enabled: true
negative_cache_ttl: 1440
nexus_repos_bower_group:
- name: bower-group
member_repos:
- bower-hosted
- bower-proxy
# Pypi. Change nexus_config_pypi to true for create pypi repository
nexus_config_pypi: true
nexus_repos_pypi_hosted:
- name: pypi-hosted
nexus_repos_pypi_proxy:
- name: pypi-proxy
index_type: "proxy"
remote_url: "https://pypi.org/"
use_nexus_certificates_to_access_index: false
maximum_component_age: 1440
maximum_metadata_age: 1440
negative_cache_enabled: true
negative_cache_ttl: 1440
nexus_repos_pypi_group:
- name: pypi-group
member_repos:
- pypi-hosted
- pypi-proxy
# rubygems. Change nexus_config_rubygems to true for create rubygems repository
nexus_config_rubygems: true
nexus_repos_rubygems_hosted:
- name: rubygems-hosted
nexus_repos_rubygems_proxy:
- name: rubygems-proxy
index_type: "proxy"
remote_url: "https://rubygems.org"
use_nexus_certificates_to_access_index: false
maximum_component_age: 1440
maximum_metadata_age: 1440
negative_cache_enabled: true
negative_cache_ttl: 1440
nexus_repos_rubygems_group:
- name: rubygems-group
member_repos:
- rubygems-hosted
- rubygems-proxy
# gitlfs. Change nexus_config_gitlfs to true for create gitlfs repository
nexus_config_gitlfs: true
nexus_repos_gitlfs_hosted:
- name: gitlfs-hosted
roles:
- { role: geerlingguy.java }
# Debian/Ubuntu only
# - { role: geerlingguy.apache, apache_create_vhosts: no, apache_mods_enabled: ["proxy_http.load", "headers.load"], apache_remove_default_vhost: true, tags: ["geerlingguy.apache"] }
# RedHat/CentOS only
- { role: geerlingguy.apache, apache_create_vhosts: no, apache_remove_default_vhost: true, tags: ["geerlingguy.apache"] }
- { role: ansible-thoteam.nexus3-oss, tags: ['ansible-thoteam.nexus3-oss'] }Captures d'écran :


Variables de rôle
Variables de rôle
Variables avec valeurs par défaut (voir default/main.yml):
Variables générales
nexus_version: ''
nexus_timezone: 'UTC'Par défaut, le rôle installera la dernière version disponible de Nexus. Vous pouvez spécifier la version en modifiant la variable nexus_version. Voir les versions disponibles sur .
Si vous changez la version pour une version plus récente, le rôle tentera de mettre à jour votre Nexus installé.
Si vous utilisez une version de Nexus plus ancienne que la dernière, vous devez vous assurer que vous n'utilisez pas de fonctionnalités qui ne sont pas disponibles dans la version installée (par exemple, l'hébergement de dépôts yum est disponible pour Nexus supérieur à 3.8.0, le dépôt git lfs pour Nexus supérieur à 3.3.0, etc.)
Fuseau horaire Nexus — est le nom du fuseau horaire Java qui peut être utile en combinaison avec les expressions cron ci-dessous pour des tâches planifiées Nexus.
Port Nexus et chemin de contexte
nexus_default_port: 8081
nexus_default_context_path: '\/''Port et chemin de contexte du processus de connexion Java. nexus_default_context_path doit contenir une barre oblique lorsqu'il est défini, par exemple : nexus_default_context_path: '\/nexus\/'.
Utilisateur et groupe OS Nexus
nexus_os_group: 'nexus'
nexus_os_user: 'nexus'L'utilisateur et le groupe utilisés pour posséder les fichiers Nexus et exécuter le service seront créés par le rôle, s'ils n'existent pas.
nexus_os_user_home_dir: '\/home\/nexus'Autoriser la modification du répertoire personnel par défaut pour l'utilisateur nexus
Répertoires des instances Nexus
nexus_installation_dir: '\/opt'
nexus_data_dir: '\/var\/nexus'
nexus_tmp_dir: "{{ (ansible_os_family == 'RedHat') | ternary('\/var\/nexus-tmp', '\/tmp\/nexus') }}"Répertoires Nexus.
nexus_installation_dircontient les fichiers exécutables installésnexus_data_dircontient toute la configuration, les dépôts et les artefacts téléchargés. Les chemins personnalisés des blobstoresnexus_data_dirpeuvent être configurés, voir ci-dessousnexus_blobstores.nexus_tmp_dircontient tous les fichiers temporaires. Le chemin par défaut pour redhat a été déplacé de/tmppour surmonter les problèmes potentiels avec les procédures automatiques de nettoyage. Voir #168.
Configuration de l'utilisation de la mémoire de la JVM Nexus
nexus_min_heap_size: "1200M"
nexus_max_heap_size: "{{ nexus_min_heap_size }}"
nexus_max_direct_memory: "2G"Ce sont les paramètres par défaut pour Nexus. Veuillez ne pas modifier ces valeurs. Si vous n'avez pas lu et ne comprenez pas ce qu'elles font.
Comme second avertissement, voici un extrait du document mentionné ci-dessus :
Il n'est pas recommandé d'augmenter la mémoire JVM heap au-delà des valeurs recommandées dans le but d'améliorer les performances. Cela peut en fait avoir l'effet inverse, entraînant un travail inutile du système d'exploitation.
Mot de passe administrateur
nexus_admin_password: 'changeme'Mot de passe du compte « admin » pour la configuration. Cela fonctionne uniquement lors de la première installation par défaut. Veuillez consulter [Modifier le mot de passe administrateur après la première installation](# change-admin-password-after-first-install) si vous souhaitez le modifier plus tard avec un rôle.
Il est fortement déconseillé de stocker votre mot de passe en texte clair dans le playbook, mais d'utiliser [le chiffrement ansible-vault] () (soit intégré, soit dans un fichier séparé chargé, par exemple, avec include_vars)
Accès anonyme par défaut
nexus_anonymous_access: falseL'accès anonyme par défaut est désactivé. En savoir plus sur .
Nom d'hôte public
nexus_public_hostname: 'nexus.vm'
nexus_public_scheme: httpsNom de domaine complet et schéma (https ou http) par lequel l'instance Nexus sera accessible pour ses clients.
Accès API pour ce rôle
nexus_api_hostname: localhost
nexus_api_scheme: http
nexus_api_validate_certs: "{{ nexus_api_scheme == 'https' }}"
nexus_api_context_path: "{{ nexus_default_context_path }}"
nexus_api_port: "{{ nexus_default_port }}"Ces variables contrôlent comment le rôle se connecte à l'API Nexus pour la fourniture.
Réservé aux utilisateurs avancés. Vous ne souhaitez probablement pas modifier ces paramètres par défaut.
Configuration du proxy inverse
httpd_setup_enable: false
httpd_server_name: "{{ nexus_public_hostname }}"
httpd_default_admin_email: "admin@example.com"
httpd_ssl_certificate_file: 'files/nexus.vm.crt'
httpd_ssl_certificate_key_file: 'files/nexus.vm.key'
# httpd_ssl_certificate_chain_file: "{{ httpd_ssl_certificate_file }}"
httpd_copy_ssl_files: trueInstallez .
Pour cela, httpd doit être installé. Remarque : lorsque httpd_setup_enable est défini surtrue, nexus se connecte à 127.0.0.1:8081, permettant ainsi ne d'être accessible directement via le port HTTP 8081 avec une adresse IP externe.
Le nom d'hôte par défaut utilisé est nexus_public_hostname. Si vous avez besoin de différents noms pour une raison quelconque, vous pouvez définir httpd_server_name avec une autre valeur.
Avec httpd_copy_ssl_files: true (par défaut) les certificats mentionnés ci-dessus doivent exister dans votre répertoire de playbook et seront copiés sur le serveur et configurés dans apache.
Si vous souhaitez utiliser des certificats existants sur le serveur, définissez httpd_copy_ssl_files: false et fournissez les variables suivantes :
# These specifies to the vhost where to find on the remote server file
# system the certificate files.
httpd_ssl_cert_file_location: "/etc/pki/tls/certs/wildcard.vm.crt"
httpd_ssl_cert_key_location: "/etc/pki/tls/private/wildcard.vm.key"
# httpd_ssl_cert_chain_file_location: "{{ httpd_ssl_cert_file_location }}"emplacement_du_fichier_de_chaîne_de_certificats_ssl_httpd est optionnel et doit rester non configuré si vous ne souhaitez pas configurer le fichier de chaîne
httpd_email_admin_par_défaut: "admin@example.com"Définir l'adresse e-mail de l'administrateur par défaut
Configuration LDAP
Les connexions LDAP et la zone de sécurité par défaut sont désactivées
nexus_ldap_realm: false
ldap_connections: [], chaque élément ressemble à ceci :
nexus_ldap_realm: true
ldap_connections:
- ldap_name: 'Mon LDAP d'entreprise' # utilisé comme clé pour mettre à jour la configuration ldap
ldap_protocol: 'ldaps' # ldap ou ldaps
ldap_hostname: 'ldap.monentreprise.com'
ldap_port: 636
ldap_use_trust_store: false # Que ce soit ou non pour utiliser les certificats dans le magasin de confiance nexus
ldap_search_base: 'dc=monentreprise,dc=net'
ldap_auth: 'none' # ou simple
ldap_auth_username: 'nom_utilisateur' # si auth = simple
ldap_auth_password: 'motdepasse' # si auth = simple
ldap_user_base_dn: 'ou=utilisateurs'
ldap_user_filter: '(cn=*)' # (facultatif)
ldap_user_object_class: 'inetOrgPerson'
ldap_user_id_attribute: 'uid'
ldap_user_real_name_attribute: 'cn'
ldap_user_email_attribute: 'mail'
ldap_user_subtree: false
ldap_map_groups_as_roles: false
ldap_group_base_dn: 'ou=groupes'
ldap_group_object_class: 'posixGroup'
ldap_group_id_attribute: 'cn'
ldap_group_member_attribute: 'memberUid'
ldap_group_member_format: '${nom_utilisateur}'
ldap_group_subtree: falseExemple de configuration LDAP pour l'authentification anonyme (liaison anonyme), c'est aussi une configuration « minimale » :
nexus_ldap_realm: true
ldap_connection:
- ldap_name: 'Configuration LDAP la plus simple'
ldap_protocol: 'ldaps'
ldap_hostname: 'annuaire.monentreprise.com'
ldap_search_base: 'dc=monentreprise,dc=net'
ldap_port: 636
ldap_use_trust_store: false
ldap_user_id_attribute: 'uid'
ldap_user_real_name_attribute: 'cn'
ldap_user_email_attribute: 'mail'
ldap_user_object_class: 'inetOrgPerson'Exemple de configuration LDAP pour l'authentification simple (en utilisant un compte DSA) :
nexus_ldap_realm: true
ldap_connections:
- ldap_name: 'Configuration LDAP avec DSA'
ldap_protocol: 'ldaps'
ldap_hostname: 'annuaire.monentreprise.com'
ldap_port: 636
ldap_use_trust_store: false
ldap_auth: 'simple'
ldap_auth_username: 'cn=mynexus,ou=dsa,dc=monentreprise,dc=net'
ldap_auth_password: "{{ vault_ldap_dsa_password }}" # mieux vaut garder les mots de passe dans un coffre Ansible
ldap_search_base: 'dc=monentreprise,dc=net'
ldap_user_base_dn: 'ou=utilisateurs'
ldap_user_object_class: 'inetOrgPerson'
ldap_user_id_attribute: 'uid'
ldap_user_real_name_attribute: 'cn'
ldap_user_email_attribute: 'mail'
ldap_user_subtree: falseExemple de configuration LDAP pour l'authentification simple (en utilisant un compte DSA) + groupes associés comme rôles :
nexus_ldap_realm: true
ldap_connections
- ldap_name: 'Configuration LDAP avec DSA'
ldap_protocol: 'ldaps'
ldap_hostname: 'annuaire.mycompany.com'
ldap_port: 636
ldap_use_trust_store: false
ldap_auth: 'simple'
ldap_auth_username: 'cn=mynexus,ou=dsa,dc=mycompany,dc=net'
ldap_auth_password: "{{ vault_ldap_dsa_password }}" # mieux garder les mots de passe dans un coffre ansible
ldap_search_base: 'dc=mycompany,dc=net'
ldap_user_base_dn: 'ou=users'
ldap_user_object_class: 'inetOrgPerson'
ldap_user_id_attribute: 'uid'
ldap_user_real_name_attribute: 'cn'
ldap_user_email_attribute: 'mail'
ldap_map_groups_as_roles: true
ldap_group_base_dn: 'ou=groups'
ldap_group_object_class: 'groupOfNames'
ldap_group_id_attribute: 'cn'
ldap_group_member_attribute: 'member'
ldap_group_member_format: 'uid=${username},ou=users,dc=mycompany,dc=net'
ldap_group_subtree: falseExemple de configuration LDAP pour l'authentification simple (utilisant un compte DSA) + groupes, associés dynamiquement comme rôles :
nexus_ldap_realm: true
ldap_connections:
- ldap_name: 'Configuration LDAP avec DSA'
ldap_protocol: 'ldaps'
ldap_hostname: 'annuaire.mycompany.com'
ldap_port: 636
ldap_use_trust_store: false
ldap_auth: 'simple'
ldap_auth_username: 'cn=mynexus,ou=dsa,dc=mycompany,dc=net'
ldap_auth_password: "{{ vault_ldap_dsa_password }}" # mieux garder les mots de passe dans un coffre ansible
ldap_search_base: 'dc=mycompany,dc=net'
ldap_user_base_dn: 'ou=users'
ldap_user_object_class: 'inetOrgPerson'
ldap_user_id_attribute: 'uid'
ldap_user_real_name_attribute: 'cn'
ldap_user_email_attribute: 'mail'
ldap_map_groups_as_roles: true
ldap_map_groups_as_roles_type: 'dynamic'
ldap_user_memberof_attribute: 'memberOf'Privilèges
nexus_privileges:
- name: all-repos-read # utilisé comme clé pour mettre à jour un privilège
# type: <un des suivants : application, repository-admin, repository-content-selector, repository-view, script ou wildcard>
description: 'Accès lecture & navigation à tous les dépôts'
repository: '*'
actions: # peuvent être add, browse, create, delete, edit, read ou * (tout)
- read
- browse
# pattern: motif
# domain: domaine
# script_name: nomLa liste pour la configuration. Consultez la documentation et l'interface graphique pour vérifier quelles variables doivent être définies en fonction du type de privilège.
Ces éléments sont combinés avec les valeurs par défaut suivantes :
_nexus_privilege_defaults:
type: repository-view
format: maven2
actions:
- readRôles (dans le sens de Nexus)
nexus_roles:
- id: Developpers # peut être mappé à un ID de groupe LDAP, utilisé également comme clé pour mettre à jour un rôle
name: developers
description: Tous les développeurs
privileges:
- nx-search-read
- all-repos-read
roles: [] # références à d'autres noms de rôleLa liste pour la configuration.
Utilisateurs
nexus_local_users: []
# - username: jenkins # utilisé comme clé pour mettre à jour
# state: present # valeur par défaut si omise, utiliser 'absent' pour supprimer l'utilisateur
# first_name: Jenkins
# last_name: CI
# email: support@company.com
# password: "s3cr3t"
# roles:
# - developers # ID de rôleListe des utilisateurs/comptes locaux (non-LDAP) à créer dans Nexus.
Liste des utilisateurs/comptes locaux (non LDAP) à créer dans Nexus.
nexus_ldap_users: []
# - nom d'utilisateur: j.doe
# état: présent
# rôles:
# - "nx-admin"Mapping des utilisateurs/rôles LDAP. État absent supprime des rôles d'un utilisateur existant, s'il existe déjà.
Les utilisateurs LDAP ne sont pas supprimés. Essayer d'attribuer un rôle à un utilisateur inexistant entraînera une erreur.
Selecteurs de contenu
nexus_content_selectors:
- nom: docker-login
description: Sélecteur pour le privilège de connexion Docker
search_expression: format=="docker" and path=~"/v2/"Pour plus d'informations sur le sélecteur de contenu, voir .
Pour utiliser le sélecteur de contenu, ajoutez un nouveau privilège avec type: repository-content-selector et le correspondantcontentSelector
- nom: docker-login-privilege
type: repository-content-selector
contentSelector: docker-login
description: 'Connexion au registre Docker'
repository: '*'
actions:
- lire
- parcourirBlobstores et dépôts
nexus_delete_default_repos: falseSupprimer les dépôts de la configuration par défaut initiale de Nexus. Cette étape n'est exécutée que lors de la première installation (lorsque nexus_data_dir a été détecté comme vide).
Suppression des dépôts de la configuration par défaut de Nexus. Cette étape est effectuée uniquement lors de la première installation (lorsque nexus_data_dir est vide).
nexus_delete_default_blobstore: falseSupprimer le blobstore par défaut de la configuration par défaut initiale de Nexus. Cela ne peut être fait que si nexus_delete_default_repos: true et tous les dépôts configurés (voir ci-dessous) ont un blob_store: custom. Cette étape n'est exécutée que lors de la première installation (lorsque nexus_data_dir a été détecté comme vide).
La suppression du stockage des blobs (artéfacts binaires) est désactivée par défaut dans la configuration initiale. Pour supprimer le stockage des blobs (artéfacts binaires), désactivez nexus_delete_default_repos: true. Cette étape n'est exécutée que lors de la première installation (lorsque nexus_data_dir est vide).
nexus_blobstores: []
# exemple d'élément de blobstore :
# - nom: separate-storage
# type: file
# chemin: /mnt/custom/path
# - nom: s3-blobstore
# type: S3
# config:
# bucket: s3-blobstore
# accessKeyId: "{{ VAULT_ENCRYPTED_KEY_ID }}"
# secretAccessKey: "{{ VAULT_ENCRYPTED_ACCESS_KEY }}"à créer. Un chemin de blobstore et un blobstore de dépôt ne peuvent pas être mis à jour après la création initiale (toute mise à jour ici sera ignorée lors de la reprovisionnement).
La configuration du blobstore sur S3 est fournie pour des raisons pratiques et ne fait pas partie des tests automatisés que nous effectuons sur travis. Veuillez noter que le stockage sur S3 n'est recommandé que pour les instances déployées sur AWS.
Création . Le chemin vers le stockage et le dépôt de stockage ne peuvent pas être mis à jour après la création initiale (toute mise à jour ici sera ignorée lors de la réinstallation).
La configuration du stockage des objets BLOB sur S3 est fournie pour la commodité. Veuillez noter que le stockage sur S3 est recommandé uniquement pour les instances déployées sur AWS.
nexus_repos_maven_proxy:
- name: central
remote_url: 'https://repo1.maven.org/maven2/'
layout_policy: permissive
# maximum_component_age: -1
# maximum_metadata_age: 1440
# negative_cache_enabled: true
# negative_cache_ttl: 1440
- name: jboss
remote_url: 'https://repository.jboss.org/nexus/content/groups/public-jboss/'
# maximum_component_age: -1
# maximum_metadata_age: 1440
# negative_cache_enabled: true
# negative_cache_ttl: 1440
# exemple avec un nom d'utilisateur/mot de passe :
# - name: secret-remote-repo
# remote_url: 'https://company.com/repo/secure/private/go/away'
# remote_username: 'username'
# remote_password: 'secret'
# # maximum_component_age: -1
# # maximum_metadata_age: 1440
# # negative_cache_enabled: true
# # negative_cache_ttl: 1440Ci-dessus un exemple de configuration Maven.
nexus_repos_maven_hosted:
- name: private-release
version_policy: release
write_policy: allow_once # l'un de "allow", "allow_once" ou "deny"Maven configuration. La configuration du cache négatif est facultative et prendra par défaut les valeurs ci-dessus si elle est omise.
Configuration Maven. La configuration du cache négatif (-1) est facultative et utilisera par défaut les valeurs ci-dessus si elle n'est pas spécifiée.
nexus_repos_maven_group:
- name: public
member_repos:
- central
- jbossConfiguration Maven.
Les trois types de dépôts sont combinés avec les valeurs par défaut suivantes :
_nexus_repos_maven_defaults:
blob_store: default # Remarque : ne peut pas être mis à jour une fois le dépôt créé
strict_content_validation: true
version_policy: release # release, snapshot ou mixed
layout_policy: strict # strict ou permissif
write_policy: allow_once # l'un de "allow", "allow_once" ou "deny"
maximum_component_age: -1 # valeur par défaut de l'interface Nexus. Pour les proxies uniquement
maximum_metadata_age: 1440 # valeur par défaut de l'interface Nexus. Pour les proxies uniquement
negative_cache_enabled: true # valeur par défaut de l'interface Nexus. Pour les proxies uniquement
negative_cache_ttl: 1440 # valeur par défaut de l'interface Nexus. Pour les proxies uniquementTypes de dépôts Docker, Pypi, Raw, Rubygems, Bower, NPM, Git-LFS et yum :
voir defaults/main.yml pour ces options :
Les dépôts Docker, Pypi, Raw, Rubygems, Bower, NPM, Git-LFS et yum sont désactivés par défaut :
Voir defaults/main.yml pour ces options :
nexus_config_pypi: false
nexus_config_docker: false
nexus_config_raw: false
nexus_config_rubygems: false
nexus_config_bower: false
nexus_config_npm: false
nexus_config_gitlfs: false
nexus_config_yum: falseVeuillez noter que vous pourriez avoir besoin d'activer certaines zones de sécurité si vous souhaitez utiliser d'autres types de dépôts en dehors de Maven. Cela est désactivé par défaut
nexus_nuget_api_key_realm: false
nexus_npm_bearer_token_realm: false
nexus_docker_bearer_token_realm: false # requis pour l'accès anonyme à DockerLe royaume d'utilisateur distant peut également être activé via
nexus_rut_auth_realm: trueet l'en-tête peut être configuré en définissant
nexus_rut_auth_header: "CUSTOM_HEADER"Tâches planifiées
nexus_scheduled_tasks: []
# # Exemple de tâche pour compacter le blobstore :
# - nom: compact-docker-blobstore
# cron: '0 0 22 * * ?'
# typeId: blobstore.compact
# task_alert_email: alerts@example.org # optionnel
# taskProperties:
# blobstoreName: {{ nexus_blob_names.docker.blob }} # tous les attributs de tâche sont stockés sous forme de chaînes par nexus en interne
# # Exemple de tâche pour purger les snapshots maven
# - nom: Purge-maven-snapshots
# cron: '0 50 23 * * ?'
# typeId: repository.maven.remove-snapshots
# task_alert_email: alerts@example.org # optionnel
# taskProperties:
# repositoryName: "*" # * pour tous les dépôts. Changez pour un nom de dépôt si vous ne voulez qu'un spécifique
# minimumRetained: "2"
# snapshotRetentionDays: "2"
# gracePeriodInDays: "2"
# booleanTaskProperties:
# removeIfReleased: true
# # Exemple de tâche pour purger les manifests et images docker inutilisés
# - nom: Purge des manifests et images docker inutilisés
# cron: '0 55 23 * * ?'
# typeId: "repository.docker.gc"
# task_alert_email: alerts@example.org # optionnel
# taskProperties:
# repositoryName: "*" # * pour tous les dépôts. Changez pour un nom de dépôt si vous ne voulez qu'un spécifique
# # Exemple de tâche pour purger les uploads docker incomplets
# - nom: Purge des uploads docker incomplets
# cron: '0 0 0 * * ?'
# typeId: "repository.docker.upload-purge"
# task_alert_email: alerts@example.org # optionnel
# taskProperties:
# age: "24" pour la configuration. typeId et spécifiques à la tâchetaskProperties/booleanTaskProperties peut être deviné comme :
- de la hiérarchie des types Java
org.sonatype.nexus.scheduling.TaskDescriptorSupport - en vérifiant le formulaire HTML de création de tâche dans votre navigateur
- en regardant les requêtes AJAX dans le navigateur lors de la configuration manuelle de la tâche.
Les propriétés de la tâche doivent être déclarées dans le bon bloc yaml selon leur type:
taskPropertiespour toutes les propriétés de chaîne (c'est-à-dire les noms de dépôts, les noms de blobstores, les périodes de temps ...).booleanTaskPropertiespour toutes les propriétés booléennes (c'est-à-dire principalement les cases à cocher dans l'interface graphique de création de tâche de nexus).
Sauvegardes
nexus_backup_configure: false
nexus_backup_cron: '0 0 21 * * ?' # Voir la définition des expressions cron dans l'interface de création de tâche de nexus
nexus_backup_dir: '\/var\/nexus-backup'
nexus_restore_log: '{{ nexus_backup_dir }}\/nexus-restore.log'
nexus_backup_rotate: false
nexus_backup_rotate_first: false
nexus_backup_keep_rotations: 4 # Conserver 4 rotations de sauvegarde par défaut (actuelle + dernières 3)La sauvegarde ne sera pas configurée tant que vous ne l'aurez pas activée nexus_backup_configure dans true.
Dans ce cas, la tâche planifiée sera configurée pour s'exécuter dans Nexus
à l'intervalle indiqué dans nexus_backup_cron (par défaut 21:00 chaque jour).
Voir [le modèle groovy pour cette tâche](templates \/ backup.groovy.j2) pour plus de détails.
Cette tâche planifiée ne dépend pas des autres nexus_scheduled_tasks, que vous avez
déclarées dans votre playbook.
Si vous souhaitez faire pivoter/supprimer les sauvegardes, définissez nexus_backup_rotate: true et configurez le nombre de sauvegardes que vous souhaitez conserver avec nexus_backup_keep_rotations (par défaut 4).
Lors de l'utilisation de la rotation, si vous souhaitez économiser de l'espace disque supplémentaire pendant le processus de sauvegarde,
Vous pouvez définir nexus_backup_rotate_first: true. Cela configurera une rotation/suppression préalable avant la sauvegarde. Par défaut, la rotation se produit après la création de la sauvegarde. Notez que dans ce cas, les anciennes sauvegardes
seront supprimées avant que la sauvegarde actuelle ne soit effectuée.
Procédure de restauration
Exécutez le playbook avec le paramètre -e nexus_restore_point=
(par exemple, 2017-12-17-21-00-00 pour le 17 décembre 2017 à 21h00
Suppression de nexus
Avertissement : cela supprimera complètement les données actuelles. Assurez-vous de faire une sauvegarde au préalable si nécessaire.
Utilisez la variable nexus_purge, si vous devez repartir de zéro et réinstaller une instance nexus en supprimant toutes les données.
ansible-playbook -i your/inventory.ini your_nexus_playbook.yml -e nexus_purge=trueChanger le mot de passe administrateur après la première installation
nexus_default_admin_password: 'admin123'Cela ne doit pas être changé dans votre playbook. Cette variable est remplie avec le mot de passe administrateur standard de Nexus lors de la première installation et garantit que nous pouvons changer le mot de passe administrateur en nexus_admin_password.
Si vous souhaitez changer le mot de passe administrateur après la première installation, vous pouvez temporairement le changer en l'ancien mot de passe via la ligne de commande. Après ce changement, nexus_admin_password dans votre livre de jeux, vous pouvez exécuter :
ansible-playbook -i your/inventory.ini your_playbook.yml -e nexus_default_admin_password=oldPasswordCanal Telegram sur Nexus Sonatype :
Seuls les utilisateurs enregistrés peuvent participer au sondage. , s'il vous plaît.
Quels repositories d'artefacts utilisez-vous ?
Sonatype Nexus gratuit
Sonatype Nexus payant
Artifactory gratuit
Artifactory payant
Harbor
Pulp
9 utilisateurs ont voté. 3 utilisateurs se sont abstenus.
Source : habr.com
