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
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 instaladosnexus_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