Sonatype Nexus est une plateforme intégrée grâce à laquelle les développeurs peuvent proxy, stocker et gérer les dépendances Java (Maven), Docker, Python, Ruby, NPM, les images Bower, les packages RPM, gitlfs, Apt, Go, Nuget, et distribuer leur sécurité logicielle.
Pourquoi avez-vous besoin de Sonatype Nexus ?
- Pour stocker des artefacts privés ;
- Pour mettre en cache les artefacts téléchargés depuis Internet ;
Artefacts pris en charge dans le package de base Sonatype Nexus :
- Java, Maven (jar)
- Docker
- Python (pépin)
- Rubis (gemme)
- NPM
- Tonnelle
- Miam (tr/min)
- gitlfs
- raw
- Apte (déb)
- Go
- Pépite
Artefacts pris en charge par la communauté :
- Compositeur
- Conan
- RPC
- EL PA
- Casque
- P2
- R
Installation de Sonatype Nexus à l'aide de
Exigences
- Découvrez comment utiliser Ansible sur Internet.
- Installer Ansible
pip install ansiblesur le poste de travail sur lequel le playbook s'exécute. - Fixer sur le poste de travail sur lequel le playbook s'exécute.
- Fixer sur le poste de travail sur lequel le playbook s'exécute.
- 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 le poste de travail sur lequel le playbook est exécuté. À installer:sudo pip install -r requirements.txt- Enregistrez le fichier playbook (exemple ci-dessous) dans le fichier nexus.yml
- Exécuter l'installation de Nexus
ansible-playbook -i host nexus.yml
Exemple de playbook ansible pour installer Nexus sans LDAP avec les référentiels 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: 'Read & Browse access to all repos'
repository: '*'
actions:
- read
- browse
- name: company-project-deploy
description: 'Deployments to company-project'
repository: company-project
actions:
- add
- edit
nexus_roles:
- id: Developpers # maps to the LDAP group
name: developers
description: All developers
privileges:
- nx-search-read
- all-repos-read
- company-project-deploy
roles: []
nexus_local_users:
- username: jenkins # used as key to update
first_name: Jenkins
last_name: CI
email: support@company.com
password: "s3cr3t"
roles:
- Developpers # role ID here
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:


Rôles variables
Variables de rôle
Variables avec des 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 corriger la version en changeant la variable nexus_version. Voir les versions disponibles sur .
Si vous passez à une version plus récente, le rôle tentera de mettre à jour votre installation Nexus.
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 référentiels Yum est disponible pour Nexus supérieur à 3.8.0, repo git lfs pour les liens supérieurs à 3.3.0, etc.)
nexus timezone est le nom du fuseau horaire Java, qui peut être utile en combinaison avec les expressions cron suivantes pour les tâches nexus_scheduled.
Port Nexus et chemin de contexte
nexus_default_port: 8081
nexus_default_context_path: '/'Le port et le chemin de contexte du processus de connexion Java. nexus_default_context_path doit contenir une barre oblique lorsqu'elle est définie, par exemple : nexus_default_context_path: '/nexus/'.
Utilisateur et groupe Nexus OS
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'il en manque un.
nexus_os_user_home_dir: '/home/nexus'Autoriser la modification du répertoire personnel par défaut pour l'utilisateur Nexus
Répertoires d'instances Nexus
nexus_installation_dir: '/opt'
nexus_data_dir: '/var/nexus'
nexus_tmp_dir: "{{ (ansible_os_family == 'RedHat') | ternary('/var/nexus-tmp', '/tmp/nexus') }}"Catalogues Nexus.
nexus_installation_dircontient des fichiers exécutables installésnexus_data_dircontient toute la configuration, les référentiels et les artefacts téléchargés. Chemins d’accès blobstore personnalisésnexus_data_dirpeut être personnalisé, 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 liés aux procédures de nettoyage automatiques. Voir #168.
Configuration de l'utilisation de la mémoire Nexus JVM
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 je ne comprends pas ce qu'ils font.
En guise de deuxième avertissement, voici un extrait du document ci-dessus :
Il n'est pas recommandé d'augmenter la mémoire du tas JVM au-delà des valeurs recommandées pour tenter d'améliorer les performances. Cela peut en réalité avoir l’effet inverse, entraînant un travail inutile pour le système d’exploitation.
Mot de passe administrateur
nexus_admin_password: 'changeme'Le mot de passe du compte « admin » pour la configuration. Cela ne fonctionne que sur 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 ultérieurement à l'aide d'un rôle.
Il est fortement recommandé de ne pas stocker votre mot de passe sous forme de texte clair dans le playbook, mais d'utiliser le [chiffrement ansible-vault] () (soit en ligne, 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 est désactivé par défaut. En savoir plus sur .
Nom d'hôte public
nexus_public_hostname: 'nexus.vm'
nexus_public_scheme: httpsLe nom de domaine complet et le schéma (https ou http) sous lesquels l'instance Nexus sera disponible 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 la manière dont le rôle se connecte à l'API Nexus pour le provisionnement.
Pour les utilisateurs avancés uniquement. Vous ne souhaitez probablement pas modifier ces paramètres par défaut
Mise en place d'un 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: trueFixer .
Pour ce faire, vous devez installer httpd. Remarque : quand pour httpd_setup_enable valeur de consignetrue, Nexus contacte 127.0.0.1:8081, donc aucun étant directement accessible via le port HTTP 8081 depuis l'adresse IP externe.
Le nom d'hôte par défaut utilisé est nexus_public_hostname. Si vous avez besoin de noms différents pour une raison quelconque, vous pouvez définir httpd_server_name avec une signification différente.
С httpd_copy_ssl_files: true (par défaut) les certificats ci-dessus doivent exister dans votre répertoire playbook et seront copiés sur le serveur et configurés dans Apache.
Si vous souhaitez utiliser des certificats existants sur le serveur, installez 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 }}"httpd_ssl_cert_chain_file_location est facultatif et ne doit pas être défini si vous ne souhaitez pas personnaliser le fichier de chaîne
httpd_default_admin_email: "admin@example.com"Définir l'adresse e-mail de l'administrateur par défaut
Configuration LDAP
Les connexions LDAP et le domaine de sécurité sont désactivés par défaut
nexus_ldap_realm: false
ldap_connections: [], chaque élément ressemble à ceci :
nexus_ldap_realm: true
ldap_connections:
- ldap_name: 'My Company LDAP' # used as a key to update the ldap config
ldap_protocol: 'ldaps' # ldap or ldaps
ldap_hostname: 'ldap.mycompany.com'
ldap_port: 636
ldap_use_trust_store: false # Wether or not to use certs in the nexus trust store
ldap_search_base: 'dc=mycompany,dc=net'
ldap_auth: 'none' # or simple
ldap_auth_username: 'username' # if auth = simple
ldap_auth_password: 'password' # if auth = simple
ldap_user_base_dn: 'ou=users'
ldap_user_filter: '(cn=*)' # (optional)
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=groups'
ldap_group_object_class: 'posixGroup'
ldap_group_id_attribute: 'cn'
ldap_group_member_attribute: 'memberUid'
ldap_group_member_format: '${username}'
ldap_group_subtree: falseExemple de configuration LDAP pour l'authentification anonyme (liaison anonyme), il s'agit également d'une configuration "minimale" :
nexus_ldap_realm: true
ldap_connection:
- ldap_name: 'Simplest LDAP config'
ldap_protocol: 'ldaps'
ldap_hostname: 'annuaire.mycompany.com'
ldap_search_base: 'dc=mycompany,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 une authentification simple (à l'aide d'un compte DSA) :
nexus_ldap_realm: true
ldap_connections:
- ldap_name: 'LDAP config with 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 }}" # better keep passwords in an ansible vault
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_user_subtree: falseExemple de configuration LDAP pour une authentification simple (à l'aide d'un compte DSA) + groupes mappés en tant que rôles :
nexus_ldap_realm: true
ldap_connections
- ldap_name: 'LDAP config with 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 }}" # better keep passwords in an ansible vault
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 une authentification simple (à l'aide d'un compte DSA) + groupes mappés dynamiquement en tant que rôles :
nexus_ldap_realm: true
ldap_connections:
- ldap_name: 'LDAP config with 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 }}" # better keep passwords in an ansible vault
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 # used as key to update a privilege
# type: <one of application, repository-admin, repository-content-selector, repository-view, script or wildcard>
description: 'Read & Browse access to all repos'
repository: '*'
actions: # can be add, browse, create, delete, edit, read or * (all)
- read
- browse
# pattern: pattern
# domain: domain
# script_name: nameListe pour les réglages. 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 Nexus, cela signifie)
nexus_roles:
- id: Developpers # can map to a LDAP group id, also used as a key to update a role
name: developers
description: All developers
privileges:
- nx-search-read
- all-repos-read
roles: [] # references to other role namesListe pour les réglages.
Membres
nexus_local_users: []
# - username: jenkins # used as key to update
# state: present # default value if ommited, use 'absent' to remove user
# first_name: Jenkins
# last_name: CI
# email: support@company.com
# password: "s3cr3t"
# roles:
# - developers # role IDListe d'utilisateurs/comptes locaux (non LDAP) à créer dans Nexus.
Liste des utilisateurs/comptes locaux (non LDAP) à créer dans Nexus.
nexus_ldap_users: []
# - username: j.doe
# state: present
# roles:
# - "nx-admin"Cartographie LDAP des utilisateurs/rôles. État absent supprimera les rôles d'un utilisateur existant s'il en existe déjà un.
Les utilisateurs Ldap ne sont pas supprimés. Essayer de définir un rôle pour un utilisateur inexistant entraînera une erreur.
Sélecteurs de contenu
nexus_content_selectors:
- name: docker-login
description: Selector for docker login privilege
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 pertinentcontentSelector
- name: docker-login-privilege
type: repository-content-selector
contentSelector: docker-login
description: 'Login to Docker registry'
repository: '*'
actions:
- read
- browseBlobstores et référentiels
nexus_delete_default_repos: falseSupprimez les référentiels de la configuration initiale par défaut de l'installation Nexus. Cette étape n'est exécutée que lors de la première installation (lorsque nexus_data_dir a été détecté vide).
Suppression des référentiels de la configuration par défaut pour Nexus. Cette étape n'est effectuée que lors de la première installation (lorsque nexus_data_dir vide).
nexus_delete_default_blobstore: falseSupprimez le blobstore par défaut de la configuration par défaut initiale de l'installation Nexus. Cela ne peut être fait que si nexus_delete_default_repos: true et tous les référentiels configurés (voir ci-dessous) ont un explicite 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é vide).
La suppression du stockage blob (artefacts binaires) est désactivée par défaut dans la configuration initiale. Pour supprimer le stockage blob (artefacts binaires), désactivez nexus_delete_default_repos: true. Cette étape n'est effectuée que lors de la première installation (lorsque nexus_data_dir vide).
nexus_blobstores: []
# example blobstore item :
# - name: separate-storage
# type: file
# path: /mnt/custom/path
# - name: 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 référentiel ne peuvent pas être mis à jour après la création initiale (toute mise à jour ici sera ignorée lors du réapprovisionnement).
La configuration de blobstore sur S3 est fournie à titre de commodité et ne fait pas partie des tests automatisés que nous exécutons 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 de stockage et le référentiel de stockage ne peuvent pas être mis à jour après la création initiale (toute mise à jour ici sera ignorée lors de la nouvelle installation).
La configuration du stockage blob sur S3 est fournie pour plus de commodité. Veuillez noter que le stockage S3 n'est recommandé que 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
# example with a login/password :
# - 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 est un exemple de configuration Maven.
nexus_repos_maven_hosted:
- name: private-release
version_policy: release
write_policy: allow_once # one of "allow", "allow_once" or "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 prendra 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 référentiels sont combinés avec les valeurs par défaut suivantes :
_nexus_repos_maven_defaults:
blob_store: default # Note : cannot be updated once the repo has been created
strict_content_validation: true
version_policy: release # release, snapshot or mixed
layout_policy: strict # strict or permissive
write_policy: allow_once # one of "allow", "allow_once" or "deny"
maximum_component_age: -1 # Nexus gui default. For proxies only
maximum_metadata_age: 1440 # Nexus gui default. For proxies only
negative_cache_enabled: true # Nexus gui default. For proxies only
negative_cache_ttl: 1440 # Nexus gui default. For proxies onlyTypes de référentiels Docker, Pypi, Raw, Rubygems, Bower, NPM, Git-LFS et yum :
sur le lien defaults/main.yml pour ces options :
Les référentiels 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 devrez peut-être activer certaines étendues de sécurité si vous souhaitez utiliser d'autres types de référentiels autres que Maven. C'est faux par défaut
nexus_nuget_api_key_realm: false
nexus_npm_bearer_token_realm: false
nexus_docker_bearer_token_realm: false # required for docker anonymous accessLe domaine des utilisateurs distants peut également être activé à l'aide de
nexus_rut_auth_realm: trueet le titre peut être personnalisé en définissant
nexus_rut_auth_header: "CUSTOM_HEADER"Tâches planifiées
nexus_scheduled_tasks: []
# # Example task to compact blobstore :
# - name: compact-docker-blobstore
# cron: '0 0 22 * * ?'
# typeId: blobstore.compact
# task_alert_email: alerts@example.org # optional
# taskProperties:
# blobstoreName: {{ nexus_blob_names.docker.blob }} # all task attributes are stored as strings by nexus internally
# # Example task to purge maven snapshots
# - name: Purge-maven-snapshots
# cron: '0 50 23 * * ?'
# typeId: repository.maven.remove-snapshots
# task_alert_email: alerts@example.org # optional
# taskProperties:
# repositoryName: "*" # * for all repos. Change to a repository name if you only want a specific one
# minimumRetained: "2"
# snapshotRetentionDays: "2"
# gracePeriodInDays: "2"
# booleanTaskProperties:
# removeIfReleased: true
# # Example task to purge unused docker manifest and images
# - name: Purge unused docker manifests and images
# cron: '0 55 23 * * ?'
# typeId: "repository.docker.gc"
# task_alert_email: alerts@example.org # optional
# taskProperties:
# repositoryName: "*" # * for all repos. Change to a repository name if you only want a specific one
# # Example task to purge incomplete docker uploads
# - name: Purge incomplete docker uploads
# cron: '0 0 0 * * ?'
# typeId: "repository.docker.upload-purge"
# task_alert_email: alerts@example.org # optional
# taskProperties:
# age: "24" pour les réglages. typeId et spécifique à une tâchetaskProperties/booleanTaskProperties vous pouvez deviner soit :
- de la hiérarchie des types Java
org.sonatype.nexus.scheduling.TaskDescriptorSupport - vérifier le formulaire de création de tâche HTML dans votre navigateur
- de visualiser les requêtes AJAX dans le navigateur lors de la configuration manuelle d'une tâche.
Les propriétés des tâches doivent être déclarées dans le bon bloc yaml en fonction de leur type:
taskPropertiespour toutes les propriétés de chaîne (c'est-à-dire les noms de référentiel, les noms de référentiel, les périodes...).booleanTaskPropertiespour toutes les propriétés logiques (c'est-à-dire principalement les cases à cocher dans l'interface graphique de la tâche de création de lien).
Sauvegardes
nexus_backup_configure: false
nexus_backup_cron: '0 0 21 * * ?' # See cron expressions definition in nexus create task gui
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 # Keep 4 backup rotation by default (current + last 3)La sauvegarde ne sera pas configurée jusqu'à ce que vous changiez nexus_backup_configure в true.
Dans ce cas, la tâche de script planifiée sera configurée pour s'exécuter sur Nexus
à l'intervalle spécifié dans nexus_backup_cron (par défaut 21h00 tous les jours).
Voir [modèle groovy pour cette tâche](templates/backup.groovy.j2) pour plus de détails.
Cette tâche planifiée est indépendante des autres nexus_scheduled_tasksque vous
annoncez-le dans votre playbook.
Si vous souhaitez effectuer une rotation/supprimer des sauvegardes, installez nexus_backup_rotate: true et configurez le nombre de sauvegardes que vous souhaitez enregistrer en utilisant nexus_backup_keep_rotations (par défaut 4).
Lorsque vous utilisez la rotation, si vous souhaitez économiser de l'espace disque supplémentaire pendant le processus de sauvegarde,
Vous pouvez installer nexus_backup_rotate_first: true. Cela configurera la pré-rotation/suppression avant la sauvegarde. Par défaut, la rotation se produit après la création d'une sauvegarde. Veuillez noter que dans ce cas, les anciennes sauvegardes
sera supprimé avant que la sauvegarde actuelle ne soit effectuée.
Procédure de récupération
Exécuter le playbook avec le paramètre -e nexus_restore_point=<YYYY-MM-dd-HH-mm-ss>
(par exemple, 2017-12-17-21-00-00 du 17 décembre 2017 à 21h00
Supprimer le lien
Attention : cela supprimera complètement vos données actuelles. Assurez-vous de faire une sauvegarde plus tôt si nécessaire
Utiliser une variable nexus_purgesi vous devez redémarrer à partir de zéro et réinstaller l'instance Nexus avec toutes les données supprimé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 devrait pas être modifié dans votre playbook. Cette variable est renseignée avec le mot de passe administrateur Nexus par défaut lors de la première installation et garantit que nous pouvons modifier le mot de passe administrateur en nexus_admin_password.
Si vous souhaitez modifier le mot de passe administrateur après la première installation, vous pouvez le remplacer temporairement par l'ancien mot de passe à partir de la ligne de commande. Après changement nexus_admin_password dans votre playbook, vous pouvez exécuter :
ansible-playbook -i your/inventory.ini your_playbook.yml -e nexus_default_admin_password=oldPasswordChaîne Telegram sur Nexus Sonatype :
Seuls les utilisateurs enregistrés peuvent participer à l'enquête. s'il te plait.
Quels référentiels d'artefacts utilisez-vous ?
Sonatype Nexus est gratuit
Sonatype Nexus payant
Artifactory est gratuit
Artefact payé
Port
Pâte à papier
9 utilisateurs ont voté. 3 utilisateurs se sont abstenus.
Source: habr.com
