Sonatype Nexus est une plate-forme intégrée avec laquelle les développeurs peuvent proxy, stocker et gérer les dépendances Java (Maven), Docker, Python, Ruby, NPM, images Bower, packages RPM, gitlfs, Apt, Go, Nuget et également distribuer leurs logiciels disposition.
Pourquoi ai-je besoin d'un Sonatype Nexus?
- Pour stocker des artefacts privés;
- Pour la mise en cache des artefacts téléchargés sur Internet;
Artefacts pris en charge dans le package de base Sonatype Nexus:
- Java, Maven (pot)
- Docker
- Python (pip)
- Rubis (gemme)
- NPM
- Bower
- Miam (tr / min)
- gitlfs
- Brut
- Apt (deb)
- Allez
- Nuget
Artefacts soutenus par la communauté:
- Compositeur
- Conan
- CPAN
- ELPA
- Heaume
- P2
- R
Prérequis
- Découvrez comment utiliser ansible sur Internet.
- Installez ansible
pip install ansible
sur le poste de travail où le playbook démarre. - Installez geerlingguy.java sur le poste de travail où le playbook démarre.
- Installez geerlingguy.apache sur le poste de travail où le playbook démarre.
- Ce rôle a été testé sur CentOS 7, Ubuntu Xenial (16.04) et Bionic (18.04), Debian Jessie et Stretch
jmespath
bibliothèque jmespath
doit être installée sur le poste de travail où le playbook démarre. Pour installer, exécutez sudo pip install -r requirements.txt
- Enregistrez le fichier playbook (exemple ci-dessous) dans le fichier nexus.yml
- Exécutez l'installation de nexus
ansible-playbook -i host nexus.yml
Un 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:


Variables de rĂ´le
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 modifiant la variable nexus_version
. Voir les versions disponibles sur https://www.sonatype.com/download-oss-sonatype .
Si vous changez la version en une version plus récente, le rôle essaiera de mettre à jour votre Nexus installé.
Si vous utilisez une version plus ancienne de Nexus 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 plus de 3.8.0, git lfs repo pour nexus plus de 3.3.0 etc.)
nexus timezone
est un nom de nexus timezone
Java qui peut être utile en combinaison avec les expressions cron ci-dessous 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
nexus_os_group: 'nexus' nexus_os_user: 'nexus'
L'utilisateur et le groupe utilisés pour posséder les fichiers Nexus et démarrer le service seront créés par le rôle s'il est manquant.
nexus_os_user_home_dir: '/home/nexus'
Autoriser la modification du répertoire de base par défaut pour l'utilisateur Nexus
Répertoires d'instance 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_dir
contient les exécutables installésnexus_data_dir
contient toutes les configurations, référentiels et artefacts chargés. Blobstores personnalisés Les nexus_data_dir
nexus_data_dir peuvent être configurés, voir nexus_blobstores
ci-dessous.nexus_tmp_dir
contient tous les fichiers temporaires. Le chemin par défaut pour redhat a été déplacé de /tmp
pour surmonter les problèmes potentiels avec les procédures de nettoyage automatique. Voir # 168.
Configurer l'utilisation de la mémoire 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 la section mémoire de la configuration système requise de nexus et ne comprenez pas ce qu'elles font.
Comme deuxième avertissement, voici un extrait du document ci-dessus:
Il n'est pas recommandé d'augmenter la mémoire de tas JVM au-delà des valeurs recommandées afin d'améliorer les performances. Cela peut en fait avoir l'effet inverse, conduisant à un fonctionnement inutile du système d'exploitation.
Mot de passe administrateur
nexus_admin_password: 'changeme'
Le mot de passe du compte «admin» est à configurer. 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 du rôle.
Il est fortement déconseillé de stocker votre mot de passe en texte clair sur le playbook, mais utilisez le [cryptage ansible-vault] ( https://docs.ansible.com/ansible/latest/user_guide/vault.html ) (soit intégré soit dans un fichier séparé, chargé par exemple avec include_vars)
Accès anonyme par défaut
nexus_anonymous_access: false
L'accès anonyme est désactivé par défaut. En savoir plus sur l' accès anonyme .
Nom d'hĂ´te public
nexus_public_hostname: 'nexus.vm' nexus_public_scheme: https
Le nom de domaine complet et le schéma (https ou http) par 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 façon dont le rôle se connecte à l'API Nexus pour l'approvisionnement.
Pour les utilisateurs avancés uniquement. 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: true
Installez SSL Reverse Proxy .
Pour ce faire, installez httpd. Remarque: lorsque httpd_setup_enable
défini sur true
, le Nexus contacte 127.0.0.1:8081, donc n'étant pas directement accessible via le port HTTP 8081 à partir d'une 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 valeur différente.
Avec 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, 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 }}"
httpd_ssl_cert_chain_file_location
est facultatif et doit être laissé désinstallé si vous ne souhaitez pas configurer le fichier de chaîne
httpd_default_admin_email: "admin@example.com"
Définir l'adresse e-mail administrateur par défaut
Configuration LDAP
Les connexions LDAP et l'étendue de sécurité sont désactivées par défaut
nexus_ldap_realm: false ldap_connections: []
Connexions LDAP , chaque élément est le suivant:
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: false
Exemple de configuration LDAP pour l'authentification anonyme (liaison anonyme), c'est aussi 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: false
Exemple 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: false
Exemple 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: name
Liste des privilèges à configurer. Consultez la documentation et l'interface graphique pour voir 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: - read
Rôles (à l'intérieur de Nexus est disponible)
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 names
Une liste de rĂ´les Ă configurer.
Les utilisateurs
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 ID
Liste d'utilisateurs / comptes locaux (non LDAP) à créer dans Nexus.
Liste des utilisateurs / comptes locaux (non LDAP) à créer sur Nexus.
nexus_ldap_users: [] # - username: j.doe # state: present # roles: # - "nx-admin"
Mappage des utilisateurs / rôles Ldap. Un é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. Toute tentative d'installation d'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, consultez la documentation .
Pour utiliser le sélecteur de contenu, ajoutez un nouveau privilège avec type: repository-content-selector
et le contentSelector
correspondant
- name: docker-login-privilege type: repository-content-selector contentSelector: docker-login description: 'Login to Docker registry' repository: '*' actions: - read - browse
Blobstores et référentiels
nexus_delete_default_repos: false
Supprimez les référentiels de la configuration initiale par défaut de nexus install. Cette étape n'est exécutée que lors de la première installation (lorsque nexus_data_dir
a été détecté vide).
Supprimez les référentiels de la configuration par défaut d'origine pour Nexus. Cette étape n'est effectuée que lors de la première installation (lorsque nexus_data_dir
vide).
nexus_delete_default_blobstore: false
Supprimez le blobstore par défaut de la configuration initiale par défaut de nexus install. 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 blob_store: custom
explicite. 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 d'objets blob (artefacts binaires) est désactivée par défaut dans la configuration d'origine. Pour supprimer le stockage d'objets 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 }}"
Blobstores à créer. Un chemin 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 de blobstores 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 réinstallation).
La configuration du stockage d'objets blob sur S3 est fournie pour plus de commodité. Notez que le stockage 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 # 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: 1440
Ci-dessus est un exemple de configuration de proxy Maven.
nexus_repos_maven_hosted: - name: private-release version_policy: release write_policy: allow_once # one of "allow", "allow_once" or "deny"
Configuration des référentiels hébergés par Maven. La configuration de cache négative est facultative et reprendra par défaut les valeurs ci-dessus si elle est omise.
Configuration des référentiels Maven hébergés . Une configuration de cache négative (-1) est facultative et reprendra par défaut les valeurs ci-dessus si elle n'est pas spécifiée.
nexus_repos_maven_group: - name: public member_repos: - central - jboss
Configuration du groupe Maven.
Les trois types de référentiel 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 only
Types de référentiels Docker, Pypi, Raw, Rubygems, Bower, NPM, Git-LFS et yum:
voir 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: false
Notez que vous devrez peut-être activer certaines zones de sécurité si vous souhaitez utiliser d'autres types de référentiels 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 access
Le domaine d'utilisateur distant peut également être activé à l'aide de
nexus_rut_auth_realm: true
et 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"
Tâches planifiées à configurer. typeId
et taskProperties
/ booleanTaskProperties
spécifiques à la booleanTaskProperties
peuvent être devinés soit:
- à partir de la hiérarchie de types Java
org.sonatype.nexus.scheduling.TaskDescriptorSupport
- vérification du formulaire HTML pour créer une tâche dans votre navigateur
- de l'affichage des demandes AJAX dans un navigateur lors de la configuration manuelle d'une tâche.
Les propriétés de la tâche doivent être déclarées dans le bloc yaml correct, selon leur type :
taskProperties
pour 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 de temps ...).booleanTaskProperties
pour toutes les propriétés logiques (c'est-à -dire essentiellement des cases à cocher dans l'interface graphique de la tâche de création de Nexus).
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 définie que lorsque vous basculerez nexus_backup_configure
sur 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
(la valeur par défaut est 21h00 tous les jours).
Voir [Le 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_tasks
annoncer dans votre playbook.
Si vous souhaitez faire pivoter / supprimer des sauvegardes, définissez nexus_backup_rotate: true
et configurez le nombre de sauvegardes que vous souhaitez enregistrer avec nexus_backup_keep_rotations
(la valeur par défaut est 4).
Lorsque vous utilisez 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
. / . . ,
, .
playbook -e nexus_restore_point=<YYYY-MM-dd-HH-mm-ss>
(, 2017-12-17-21-00-00 17 2017 21:00
nexus
: . ,
nexus_purge
, nexus .
ansible-playbook -i your/inventory.ini your_nexus_playbook.yml -e nexus_purge=true
nexus_default_admin_password: 'admin123'
playbook . Nexus , nexus_admin_password
.
, . nexus_admin_password
:
ansible-playbook -i your/inventory.ini your_playbook.yml -e nexus_default_admin_password=oldPassword
Nexus Sonatype: https://t.me/ru_nexus_sonatype