Installer et configurer Nexus Sonatype en utilisant l'infrastructure comme approche de code

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

Installez Sonatype Nexus Ă  l'aide de https://github.com/ansible-ThoTeam/nexus3-oss


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Ă©s
  • nexus_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

Source: https://habr.com/ru/post/fr473358/


All Articles