Instale y configure Nexus Sonatype utilizando la infraestructura como enfoque de código

Sonatype Nexus es una plataforma integrada con la cual los desarrolladores pueden usar proxy, almacenar y administrar dependencias de Java (Maven), Docker, Python, Ruby, NPM, imágenes Bower, paquetes RPM, gitlfs, Apt, Go, Nuget, y también distribuir su software provisión.


¿Por qué necesito un Sonatype Nexus?


  • Para almacenar artefactos privados;
  • Para almacenar en caché los artefactos que se descargan de Internet;

Artefactos admitidos en el paquete base Sonatype Nexus:


  • Java, Maven (jarra)
  • Docker
  • Python (pip)
  • Rubí (gema)
  • NPM
  • Glorieta
  • Mmm (rpm)
  • gitlfs
  • Crudo
  • Apt (deb)
  • Ir
  • Nuget

Artefactos compatibles con la comunidad:


  • Compositor
  • Conan
  • CPAN
  • ELPA
  • Timón
  • P2
  • R

Instale Sonatype Nexus usando https://github.com/ansible-ThoTeam/nexus3-oss


Requisitos


  • Lea sobre el uso de ansible en Internet.
  • Instalar ansible pip install ansible en la estación de trabajo donde comienza el libro de jugadas.
  • Instale geerlingguy.java en la estación de trabajo donde comienza el libro de jugadas.
  • Instale geerlingguy.apache en la estación de trabajo donde comienza el libro de jugadas.
  • Este rol ha sido probado en CentOS 7, Ubuntu Xenial (16.04) y Bionic (18.04), Debian Jessie y Stretch
  • jmespath biblioteca jmespath debe instalarse en la estación de trabajo donde comienza el libro de jugadas. Para instalar, ejecute sudo pip install -r requirements.txt
  • Guarde el archivo de libro de jugadas (ejemplo a continuación) en el archivo nexus.yml
  • Ejecute la instalación de nexus ansible-playbook -i host nexus.yml

Un ejemplo de libro de jugadas ansible para instalar nexus sin LDAP con los repositorios Maven (java), Docker, Python, Ruby, NPM, Bower, RPM y 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'] } 

Capturas de pantalla




Variables de rol


Variables de rol


Variables con valores predeterminados (ver default/main.yml ):


Variables generales


  nexus_version: '' nexus_timezone: 'UTC' 

De forma predeterminada, el rol instalará la última versión disponible de Nexus. Puede corregir la versión cambiando la variable nexus_version . Consulte las versiones disponibles en https://www.sonatype.com/download-oss-sonatype .


Si cambia la versión a una más nueva, el rol intentará actualizar su Nexus instalado.


Si está utilizando una versión anterior de Nexus que la última, debe asegurarse de no utilizar funciones que no están disponibles en la versión instalada (por ejemplo, el alojamiento de repositorios yum está disponible para nexus más de 3.8.0, git lfs repo para nexus más de 3.3.0 etc.)


nexus timezone es el nombre de la zona horaria de Java, que puede ser útil en combinación con las siguientes instrucciones cron para las tareas nexus_scheduled.


Puerto Nexus y ruta de contexto


  nexus_default_port: 8081 nexus_default_context_path: '/' 

El puerto y la ruta de contexto del proceso de conexión Java. nexus_default_context_path debe contener una barra oblicua cuando se establece, por ejemplo: nexus_default_context_path: '/nexus/' .


Usuario y grupo de Nexus


  nexus_os_group: 'nexus' nexus_os_user: 'nexus' 

La función creará el usuario y el grupo que solía poseer los archivos Nexus e iniciar el servicio si falta.


  nexus_os_user_home_dir: '/home/nexus' 

Permitir cambiar el directorio de inicio predeterminado para el usuario nexus


Directorios de instancias de Nexus


  nexus_installation_dir: '/opt' nexus_data_dir: '/var/nexus' nexus_tmp_dir: "{{ (ansible_os_family == 'RedHat') | ternary('/var/nexus-tmp', '/tmp/nexus') }}" 

Catálogos Nexus.


  • nexus_installation_dir contiene ejecutables instalados
  • nexus_data_dir contiene toda la configuración, repositorios y artefactos cargados. Almacenes de blobs personalizados Las nexus_data_dir nexus_data_dir se pueden configurar, consulte nexus_blobstores continuación.
  • nexus_tmp_dir contiene todos los archivos temporales. La ruta predeterminada para redhat se ha movido desde /tmp para superar posibles problemas con los procedimientos de limpieza automática. Ver # 168.

Configurar el uso de memoria de Nexus JVM


  nexus_min_heap_size: "1200M" nexus_max_heap_size: "{{ nexus_min_heap_size }}" nexus_max_direct_memory: "2G" 

Estas son las configuraciones predeterminadas para Nexus. No cambie estos valores si no ha leído la sección de memoria de los requisitos del sistema nexus y no comprende lo que están haciendo.


Como segunda advertencia, aquí hay un extracto del documento anterior:


No se recomienda aumentar la memoria de almacenamiento dinámico JVM más allá de los valores recomendados en un intento de mejorar el rendimiento. En realidad, esto puede tener el efecto contrario, lo que lleva a un funcionamiento innecesario del sistema operativo.

Contraseña de administrador


  nexus_admin_password: 'changeme' 

La contraseña para la cuenta "admin" es configurar. Esto solo funciona en la primera instalación predeterminada . Consulte [Cambiar la contraseña del administrador después de la primera instalación] (# change-admin-password-after-first-install) si desea cambiarla más tarde utilizando la función


Se recomienda encarecidamente almacenar su contraseña en texto claro en el libro de jugadas, pero use [cifrado ansible-vault] ( https://docs.ansible.com/ansible/latest/user_guide/vault.html ) (ya sea incrustado o en un archivo separado, cargado, por ejemplo, con include_vars)


Acceso anónimo predeterminado


  nexus_anonymous_access: false 

El acceso anónimo está desactivado de manera predeterminada. Lea más sobre el acceso anónimo .


Nombre de host público


  nexus_public_hostname: 'nexus.vm' nexus_public_scheme: https 

El nombre y el esquema de dominio completo (https o http) mediante el cual la instancia de Nexus estará disponible para sus clientes.


Acceso a la API para este rol


  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 }}" 

Estas variables controlan cómo se conecta el rol a la API de Nexus para el aprovisionamiento.
Solo para usuarios avanzados. Lo más probable es que no desee cambiar esta configuración predeterminada


Configuración de proxy inverso


  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 

Instale SSL Reverse Proxy .
Para hacer esto, instale httpd. Nota: cuando httpd_setup_enable establece en true , nexus contacta 127.0.0.1:8081, por lo que no se puede acceder directamente a través del puerto HTTP 8081 desde una dirección IP externa.


El nombre de host predeterminado utilizado es nexus_public_hostname . Si necesita nombres diferentes por cualquier motivo, puede establecer httpd_server_name con un valor diferente.


Con httpd_copy_ssl_files: true (predeterminado), los certificados anteriores deben existir en el directorio de su libro de jugadas y se copiarán en el servidor y se configurarán en apache.


Si desea utilizar certificados existentes en el servidor, configure httpd_copy_ssl_files: false y proporcione las siguientes variables:


  # 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 es opcional y debe dejarse desinstalado si no desea configurar el archivo de cadena


  httpd_default_admin_email: "admin@example.com" 

Establecer correo electrónico de administrador predeterminado


Configuración LDAP


Las conexiones LDAP y el alcance de seguridad están deshabilitados de forma predeterminada


  nexus_ldap_realm: false ldap_connections: [] 

Conexiones LDAP , cada elemento es el siguiente:


  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 

Ejemplo de configuración LDAP para autenticación anónima (enlace anónimo), también es una configuración "mínima":


  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' 

Ejemplo de configuración LDAP para autenticación simple (usando una cuenta 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 

Ejemplo de configuración LDAP para autenticación simple (usando una cuenta DSA) + grupos asignados como roles:


  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 

Ejemplo de configuración LDAP para autenticación simple (usando una cuenta DSA) + grupos asignados dinámicamente como roles:


  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' 

Privilegios


  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 

Lista de privilegios para configurar. Consulte la documentación y la GUI para ver qué variables deben establecerse según el tipo de privilegio.


Estos elementos se combinan con los siguientes valores predeterminados:


  _nexus_privilege_defaults: type: repository-view format: maven2 actions: - read 

Roles (dentro 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 

Una lista de roles para configurar.


Los usuarios


  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 

Lista de usuarios / cuentas locales (no LDAP) para crear en nexus.


Lista de usuarios / cuentas locales (no LDAP) para crear en Nexus.


  nexus_ldap_users: [] # - username: j.doe # state: present # roles: # - "nx-admin" 

Mapeo de usuarios / roles de Ldap. Un estado absent eliminará los roles de un usuario existente, si ya existe uno.
Los usuarios de Ldap no se eliminan. Intentar instalar un rol para un usuario no existente dará como resultado un error.


Selectores de contenido


  nexus_content_selectors: - name: docker-login description: Selector for docker login privilege search_expression: format=="docker" and path=~"/v2/" 

Para obtener más información sobre el selector de contenido, consulte la Documentación .


Para usar el selector de contenido, agregue un nuevo privilegio con el type: repository-content-selector y el correspondiente contentSelector


 - name: docker-login-privilege type: repository-content-selector contentSelector: docker-login description: 'Login to Docker registry' repository: '*' actions: - read - browse 

Blobstores y repositorios


  nexus_delete_default_repos: false 

Elimine los repositorios de la configuración predeterminada inicial de nexus install. Este paso solo se ejecuta en la primera instalación (cuando se ha detectado que nexus_data_dir está vacío).


Elimine los repositorios de la configuración predeterminada original para Nexus. Este paso solo se realiza durante la primera instalación (cuando nexus_data_dir vacío).


  nexus_delete_default_blobstore: false 

Elimine el blobstore predeterminado de la configuración predeterminada inicial de nexus install. Esto solo se puede hacer si nexus_delete_default_repos: true y todos los repositorios configurados (ver más abajo) tienen un blob_store: custom explícito blob_store: custom . Este paso solo se ejecuta en la primera instalación (cuando se ha detectado que nexus_data_dir está vacío).


La eliminación del almacenamiento de blobs (artefactos binarios) está deshabilitada de forma predeterminada en la configuración original. Para eliminar el almacenamiento de blobs (artefactos binarios), desactive nexus_delete_default_repos: true . Este paso solo se realiza durante la primera instalación (cuando nexus_data_dir vacío).


  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 para crear. Una ruta de blobstore y un repositorio de blobstore no se pueden actualizar después de la creación inicial (cualquier actualización aquí se ignorará en el reaprovisionamiento).


La configuración de blobstore en S3 se proporciona como una conveniencia y no forma parte de las pruebas automatizadas que ejecutamos en travis. Tenga en cuenta que el almacenamiento en S3 solo se recomienda para instancias implementadas en AWS.


Crear blobstores La ruta de almacenamiento y el repositorio de almacenamiento no se pueden actualizar después de la creación inicial (cualquier actualización aquí se ignorará cuando se vuelva a instalar).


La configuración del almacenamiento de blobs en S3 se proporciona por conveniencia. Tenga en cuenta que el almacenamiento S3 se recomienda solo para instancias implementadas en 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 

Arriba hay un ejemplo de configuración de proxy Maven.


  nexus_repos_maven_hosted: - name: private-release version_policy: release write_policy: allow_once # one of "allow", "allow_once" or "deny" 

Configuración de repositorios alojados en Maven. La configuración de caché negativa es opcional y se omitirá por defecto a los valores anteriores si se omite.


Configuración de repositorios alojados de Maven. Una configuración de caché negativa (-1) es opcional y, por defecto, tendrá los valores anteriores si no se especifica


  nexus_repos_maven_group: - name: public member_repos: - central - jboss 

Configuración del grupo Maven.


Los tres tipos de repositorio se combinan con los siguientes valores predeterminados:


  _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 

Tipos de repositorio Docker, Pypi, Raw, Rubygems, Bower, NPM, Git-LFS y yum:
vea defaults/main.yml para estas opciones:


Los repositorios Docker, Pypi, Raw, Rubygems, Bower, NPM, Git-LFS y yum están desactivados de forma predeterminada:
Consulte defaults/main.yml para ver estas opciones:


  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 

Tenga en cuenta que es posible que deba habilitar ciertas áreas de seguridad si desea utilizar otros tipos de repositorios además de Maven. Esto es falso por defecto.


 nexus_nuget_api_key_realm: false nexus_npm_bearer_token_realm: false nexus_docker_bearer_token_realm: false # required for docker anonymous access 

Remote User Realm también se puede habilitar usando


 nexus_rut_auth_realm: true 

y el título se puede personalizar definiendo


 nexus_rut_auth_header: "CUSTOM_HEADER" 

Tareas programadas


  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" 

Tareas programadas para configurar. typeId y task-task taskProperties / booleanTaskProperties se pueden adivinar:


  • de la jerarquía de tipos Java org.sonatype.nexus.scheduling.TaskDescriptorSupport
  • comprobar el formulario HTML para crear una tarea en su navegador
  • desde la visualización de solicitudes AJAX en un navegador al configurar manualmente una tarea.

Las propiedades de la tarea deben declararse en el bloque yaml correcto, según su tipo :


  • taskProperties para todas las propiedades de cadena (es decir, nombres de repositorio, nombres de repositorio, períodos de tiempo ...).
  • booleanTaskProperties para todas las propiedades lógicas (es decir, básicamente casillas de verificación en la interfaz gráfica de la tarea de creación de nexus).

Copias de seguridad


  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 copia de seguridad no se establecerá hasta que cambie nexus_backup_configure a true .
En este caso, la tarea programada del script se configurará para ejecutarse en Nexus
en el intervalo especificado en nexus_backup_cron (el valor predeterminado es 21:00 todos los días).
Consulte [La plantilla maravillosa para esta tarea] (templates / backup.groovy.j2) para más detalles.
Esta tarea programada es independiente de las otras nexus_scheduled_tasks que
anuncia en tu libro de jugadas.


Si desea rotar / eliminar copias de seguridad, configure nexus_backup_rotate: true y configure la cantidad de copias de seguridad que desea guardar con nexus_backup_keep_rotations (el valor predeterminado es 4).


Cuando utilice la rotación, si desea ahorrar espacio en disco adicional durante el proceso de copia de seguridad,
Puede establecer 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/473358/


All Articles