Sonatype Nexus – uma plataforma integrada que permite aos desenvolvedores fazer proxy, armazenar e gerenciar dependências Java (Maven), imagens Docker, Python, Ruby, NPM, Bower, pacotes RPM, gitlfs, Apt, Go, Nuget, além de distribuir seu software.
Por que usar o Sonatype Nexus?
- Para armazenar artefatos privados;
- Para armazenar em cache artefatos que são baixados da internet;
Artefatos suportados na distribuição básica do Sonatype Nexus:
- Java, Maven (jar)
- Docker
- Python (pip)
- Ruby (gem)
- NPM
- Bower
- Yum (rpm)
- gitlfs
- Raw
- Apt (deb)
- Go
- Nuget
Artefatos suportados pela comunidade:
- Composer
- Conan
- CPAN
- ELPA
- Helm
- P2
- R
Instalação do Sonatype Nexus utilizando
Requisitos
- Leia sobre o uso do ansible na internet.
- Instale o ansible
pip install ansiblena estação de trabalho onde o playbook será executado. - Instale na estação de trabalho onde o playbook será executado.
- Instale na estação de trabalho onde o playbook será executado.
- Esta função foi testada em CentOS 7, Ubuntu Xenial (16.04) e Bionic (18.04), Debian Jessie e Stretch
jmespatha biblioteca deve estar instalada na estação de trabalho onde o playbook será executado. Para instalá-la, executesudo pip install -r requirements.txt- Salve o arquivo do playbook (exemplo abaixo) como nexus.yml
- Inicie a instalação do nexus
ansible-playbook -i host nexus.yml
Exemplo de ansible-playbook para instalar o nexus sem LDAP com repositórios Maven (java), Docker, Python, Ruby, NPM, Bower, RPM e 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: 'Acesso para ler e navegar em todos os repositórios'
repository: '*'
actions:
- read
- browse
- name: company-project-deploy
description: 'Implantações para company-project'
repository: company-project
actions:
- add
- edit
nexus_roles:
- id: Developpers # mapeia para o grupo LDAP
name: developers
description: Todos os desenvolvedores
privileges:
- nx-search-read
- all-repos-read
- company-project-deploy
roles: []
nexus_local_users:
- username: jenkins # usado como chave para atualizar
first_name: Jenkins
last_name: CI
email: support@company.com
password: "s3cr3t"
roles:
- Developpers # ID do papel aqui
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. Altere nexus_config_yum para true para criar repositório yum
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. Altere nexus_config_npm para true para criar repositório npm
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. Altere nexus_config_docker para true para criar repositório docker
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. Altere nexus_config_bower para true para criar repositório bower
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. Altere nexus_config_pypi para true para criar repositório pypi
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. Altere nexus_config_rubygems para true para criar repositório rubygems
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. Altere nexus_config_gitlfs para true para criar repositório gitlfs
nexus_config_gitlfs: true
nexus_repos_gitlfs_hosted:
- name: gitlfs-hosted
roles:
- { role: geerlingguy.java }
# Apenas Debian/Ubuntu
# - { role: geerlingguy.apache, apache_create_vhosts: no, apache_mods_enabled: ["proxy_http.load", "headers.load"], apache_remove_default_vhost: true, tags: ["geerlingguy.apache"] }
# Apenas RedHat/CentOS
- { 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 tela:


Variáveis do Papel
Variáveis de Função
Variáveis com valores padrão (veja default/main.yml):
Variáveis gerais
nexus_version: ''
nexus_timezone: 'UTC'Por padrão, o papel instalará a versão mais recente disponível do Nexus. Você pode corrigir a versão alterando a variável nexus_version. Veja as versões disponíveis em .
Se você alterar para uma versão mais recente, o papel tentará atualizar seu Nexus instalado.
Se você estiver usando uma versão mais antiga do Nexus do que a mais recente, deve garantir que não está usando recursos que não estão disponíveis na versão instalada (por exemplo, o hospedagem de repositórios yum está disponível para Nexus acima da versão 3.8.0, git lfs repo para Nexus acima da versão 3.3.0, etc.)
fuso horário do Nexus é o nome do fuso horário Java, que pode ser útil em combinação com as expressões cron abaixo para tarefas agendadas do nexus.
Porta Nexus e caminho de contexto
nexus_default_port: 8081
nexus_default_context_path: '/'A porta e o caminho de contexto do processo de conexão Java. nexus_default_context_path deve conter uma barra, quando definido, por exemplo.: nexus_default_context_path: '/nexus/'.
Usuário e grupo do sistema operacional Nexus
nexus_os_group: 'nexus'
nexus_os_user: 'nexus'O usuário e o grupo usados para a posse dos arquivos do Nexus e execução do serviço serão criados pelo papel, se estiverem ausentes.
nexus_os_user_home_dir: '/home/nexus'Permitir mudança do diretório home padrão para o usuário nexus
Diretórios das instâncias do Nexus
nexus_installation_dir: '/opt'
nexus_data_dir: '/var/nexus'
nexus_tmp_dir: "{{ (ansible_os_family == 'RedHat') | ternary('/var/nexus-tmp', '/tmp/nexus') }}"Diretórios do Nexus.
nexus_installation_dircontém os executáveis instaladosnexus_data_dircontém toda a configuração, repositórios e artefatos carregados. Caminhos personalizados de blobstoresnexus_data_dirpodem ser configurados, veja abaixonexus_blobstores.nexus_tmp_dircontém todos os arquivos temporários. O caminho padrão para redhat foi movido de/tmppara evitar potenciais problemas com processos automáticos de limpeza. Veja #168.
Configuração do uso de memória da JVM do Nexus
nexus_min_heap_size: "1200M"
nexus_max_heap_size: "{{ nexus_min_heap_size }}"
nexus_max_direct_memory: "2G"Estas são as configurações padrão para o Nexus. Por favor, não altere esses valores Se você não leu e não entende o que eles fazem.
Como segundo aviso, aqui está um trecho do documento mencionado:
Não é recomendado aumentar a memória heap da JVM além dos valores recomendados na tentativa de melhorar o desempenho. Isso pode ter o efeito oposto, levando a um funcionamento desnecessário do sistema operacional.
Senha do administrador
nexus_admin_password: 'changeme'Senha da conta 'admin' para configuração. Isso só funciona na primeira instalação padrão. Por favor, consulte [Alterar a senha do administrador após a primeira instalação](# change-admin-password-after-first-install) se você quiser alterá-la mais tarde com a função.
É fortemente desaconselhável armazenar sua senha em texto simples no playbook, mas usar [criptografia ansible-vault] () (seja embutido ou em um arquivo separado, carregado, por exemplo, usando include_vars)
Acesso anônimo por padrão
nexus_anonymous_access: falseO acesso anônimo por padrão está desativado. Mais informações sobre .
Nome público do host
nexus_public_hostname: 'nexus.vm'
nexus_public_scheme: httpsNome de domínio completo e esquema (https ou http) pelo qual a instância do Nexus será acessível para seus clientes.
Acesso API para esta função
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 }}"Essas variáveis controlam como a função se conecta à API do Nexus para fornecer.
Apenas para usuários avançados. Provavelmente, você não deseja alterar essas configurações padrão
Configuração do proxy reverso
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: trueInstale .
Para isso, é necessário instalar o httpd. Observação: quando httpd_setup_enable está definido comoverdadeiro, o nexus se conecta a 127.0.0.1:8081, assim não sendo acessível diretamente através da porta HTTP 8081 com o endereço IP externo.
O nome do host padrão em uso é nexus_public_hostname. Se você precisar de nomes diferentes por qualquer motivo, pode definir httpd_server_name com outro valor.
Com httpd_copy_ssl_files: true (por padrão) os certificados acima mencionados devem existir no seu diretório do playbook e serão copiados para o servidor e configurados no Apache.
Se você quiser usar certificados existentes no servidor, defina httpd_copy_ssl_files: false e forneça as seguintes variáveis:
# 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 }}"localização_do_arquivo_cadeia_certificado_ssl_httpd é opcional e deve ser deixado como não configurado se você não quiser configurar o arquivo da cadeia
httpd_email_administrador_default: "admin@example.com"Definir o endereço de e-mail do administrador padrão
Configuração LDAP
Conexões LDAP e o domínio de segurança padrão estão desativados
nexus_realm_ldap: false
ldap_connections: [], cada item se parece com o seguinte:
nexus_realm_ldap: true
ldap_connections:
- ldap_name: 'LDAP da Minha Empresa' # usado como chave para atualizar a configuração ldap
ldap_protocol: 'ldaps' # ldap ou ldaps
ldap_hostname: 'ldap.minhaempresa.com'
ldap_port: 636
ldap_use_trust_store: false # Se deve ou não usar certificados no repositório de confiança do nexus
ldap_search_base: 'dc=minhaempresa,dc=net'
ldap_auth: 'none' # ou simples
ldap_auth_username: 'nome_de_usuário' # se auth = simples
ldap_auth_password: 'senha' # se auth = simples
ldap_user_base_dn: 'ou=usuarios'
ldap_user_filter: '(cn=*)' # (opcional)
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=grupos'
ldap_group_object_class: 'posixGroup'
ldap_group_id_attribute: 'cn'
ldap_group_member_attribute: 'memberUid'
ldap_group_member_format: '${username}'
ldap_group_subtree: falseExemplo de configuração LDAP para autenticação anônima (vinculação anônima), esta também é uma configuração 'mínima':
nexus_realm_ldap: true
ldap_connection:
- ldap_name: 'Configuração LDAP mais simples'
ldap_protocol: 'ldaps'
ldap_hostname: 'annuaire.minhaempresa.com'
ldap_search_base: 'dc=minhaempresa,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'Exemplo de configuração LDAP para autenticação simples (usando uma conta DSA):
nexus_realm_ldap: true
ldap_connections:
- ldap_name: 'Configuração LDAP com DSA'
ldap_protocol: 'ldaps'
ldap_hostname: 'annuaire.minhaempresa.com'
ldap_port: 636
ldap_use_trust_store: false
ldap_auth: 'simple'
ldap_auth_username: 'cn=meunexus,ou=dsa,dc=minhaempresa,dc=net'
ldap_auth_password: "{{ vault_ldap_dsa_password }}" # é melhor manter senhas em um cofre ansible
ldap_search_base: 'dc=minhaempresa,dc=net'
ldap_user_base_dn: 'ou=usuarios'
ldap_user_object_class: 'inetOrgPerson'
ldap_user_id_attribute: 'uid'
ldap_user_real_name_attribute: 'cn'
ldap_user_email_attribute: 'mail'
ldap_user_subtree: falseExemplo de configuração LDAP para autenticação simples (usando uma conta DSA) + grupos mapeados como funções:
nexus_ldap_realm: true
ldap_connections
- ldap_name: 'Configuração LDAP com DSA'
ldap_protocol: 'ldaps'
ldap_hostname: 'annuaire.mycompany.com'
ldap_port: 636
ldap_use_trust_store: false
ldap_auth: 'simples'
ldap_auth_username: 'cn=mynexus,ou=dsa,dc=mycompany,dc=net'
ldap_auth_password: "{{ vault_ldap_dsa_password }}" # é melhor manter senhas em um cofre ansible
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: falseExemplo de configuração LDAP para autenticação simples (usando uma conta DSA) + grupos, mapeados dinamicamente como funções:
nexus_ldap_realm: true
ldap_connections:
- ldap_name: 'Configuração LDAP com DSA'
ldap_protocol: 'ldaps'
ldap_hostname: 'annuaire.mycompany.com'
ldap_port: 636
ldap_use_trust_store: false
ldap_auth: 'simples'
ldap_auth_username: 'cn=mynexus,ou=dsa,dc=mycompany,dc=net'
ldap_auth_password: "{{ vault_ldap_dsa_password }}" # é melhor manter senhas em um cofre ansible
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: 'dinâmico'
ldap_user_memberof_attribute: 'memberOf'Privilégios
nexus_privileges:
- name: all-repos-read # usado como chave para atualizar um privilégio
# type:
description: 'Acesso de Leitura & Navegação a todos os repositórios'
repository: '*'
actions: # pode ser add, browse, create, delete, edit, read ou * (todos)
- read
- browse
# pattern: padrão
# domain: domínio
# script_name: nomeLista para configuração. Consulte a documentação e a interface gráfica para verificar quais variáveis devem ser definidas dependendo do tipo de privilégio.
Esses itens se combinam com os seguintes valores padrão:
_nexus_privilege_defaults:
type: repository-view
format: maven2
actions:
- readFunções (dentro do Nexus)
nexus_roles:
- id: Desenvolvedores # pode mapear para um ID de grupo LDAP, também usado como chave para atualizar uma função
name: desenvolvedores
description: Todos os desenvolvedores
privileges:
- nx-search-read
- all-repos-read
roles: [] # referências a outros nomes de funçãoLista para configuração.
Usuários
nexus_local_users: []
# - username: jenkins # usado como chave para atualizar
# state: present # valor padrão se omitido, use 'absent' para remover usuário
# first_name: Jenkins
# last_name: CI
# email: support@company.com
# password: "s3cr3t"
# roles:
# - desenvolvedores # ID da funçãoLista de usuários/contas locais (não LDAP) a serem criados no nexus.
Lista de usuários locais (não LDAP) / contas a serem criadas no Nexus.
nexus_ldap_users: []
# - nome de usuário: j.doe
# estado: presente
# funções:
# - "nx-admin"Mapeamento de usuários / funções do LDAP. Estado absent remove funções de um usuário existente, se ele já existir.
Usuários LDAP não são removidos. Tentar atribuir uma função a um usuário inexistente resultará em erro.
Seletores de conteúdo
nexus_content_selectors:
- nome: docker-login
descrição: Seletor para privilégio de login do docker
expressão_de_busca: format=="docker" and path=~"\/v2\/"Para mais informações sobre o seletor de conteúdo, veja. .
Para usar o seletor de conteúdo, adicione um novo privilégio com type: repository-content-selector e o correspondentecontentSelector
- nome: docker-login-privilege
type: repository-content-selector
contentSelector: docker-login
descrição: 'Login no registro Docker'
repositório: '*'
ações:
- ler
- navegarArmazenamentos de blob e repositórios
nexus_delete_default_repos: falseRemove os repositórios da configuração inicial padrão da instalação do nexus. Este passo é executado apenas na primeira instalação (quando nexus_data_dir foi detectado vazio).
Remoção de repositórios da configuração padrão inicial do Nexus. Este passo é executado apenas na primeira instalação (quando nexus_data_dir está vazio).
nexus_delete_default_blobstore: falseRemove o armazenamento de blob padrão da configuração inicial da instalação do nexus. Isso só pode ser feito se nexus_delete_default_repos: true e todos os repositórios configurados (veja abaixo) tiverem um blob_store: custom. Este passo é executado apenas na primeira instalação (quando nexus_data_dir foi detectado vazio).
A remoção do armazenamento de blobs (artefatos binários) está desativada por padrão na configuração inicial. Para remover o armazenamento de blobs (artefatos binários), desative nexus_delete_default_repos: true. Este passo é executado apenas na primeira instalação (quando nexus_data_dir está vazio).
nexus_blobstores: []
# exemplo de item de armazenamento de blob:
# - nome: separate-storage
# tipo: file
# caminho: \/mnt\/custom\/path
# - nome: s3-blobstore
# tipo: S3
# config:
# bucket: s3-blobstore
# accessKeyId: "{{ VAULT_ENCRYPTED_KEY_ID }}"
# secretAccessKey: "{{ VAULT_ENCRYPTED_ACCESS_KEY }}"para criar. Um caminho de armazenamento de blobs e um repositório de armazenamento de blobs não podem ser atualizados após a criação inicial (qualquer atualização aqui será ignorada na reprovisionamento).
A configuração do armazenamento de blobs no S3 é fornecida como conveniência e não faz parte dos testes automatizados que executamos no travis. Por favor, note que armazenar no S3 é recomendado apenas para instâncias implantadas na AWS.
Criando . O caminho para o armazenamento e repositório de armazenamento não pode ser atualizado após a criação inicial (qualquer atualização aqui será ignorada na reinstalação).
A configuração do armazenamento de objetos BLOB no S3 é fornecida para conveniência. Observe que o armazenamento no S3 é recomendado apenas para instâncias implantadas na 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
# exemplo com login/senha :
# - 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: 1440Acima está um exemplo de configuração Maven.
nexus_repos_maven_hosted:
- name: private-release
version_policy: release
write_policy: allow_once # um dos "allow", "allow_once" ou "deny"Maven configuração. A configuração do cache negativo é opcional e usará os valores acima como padrão se omitido.
Configuração Maven. A configuração do cache negativo (-1) é opcional e usará por padrão os valores acima se não for especificada.
nexus_repos_maven_group:
- name: public
member_repos:
- central
- jbossConfiguração Maven.
Todos os três tipos de repositório são combinados com os seguintes valores padrão:
_nexus_repos_maven_defaults:
blob_store: default # Nota: não pode ser atualizado uma vez que o repositório foi criado
strict_content_validation: true
version_policy: release # release, snapshot ou mixed
layout_policy: strict # strict ou permissive
write_policy: allow_once # um dos "allow", "allow_once" ou "deny"
maximum_component_age: -1 # padrão da GUI do Nexus. Apenas para proxies
maximum_metadata_age: 1440 # padrão da GUI do Nexus. Apenas para proxies
negative_cache_enabled: true # padrão da GUI do Nexus. Apenas para proxies
negative_cache_ttl: 1440 # padrão da GUI do Nexus. Apenas para proxiesTipos de repositórios Docker, Pypi, Raw, Rubygems, Bower, NPM, Git-LFS e yum:
veja defaults/main.yml para essas opções:
Repositórios Docker, Pypi, Raw, Rubygems, Bower, NPM, Git-LFS e yum estão por padrão desativados:
Veja defaults/main.yml para essas opções:
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: falseObserve que pode ser necessário ativar certas áreas de segurança se quiser usar outros tipos de repositórios além do maven. Isso é falso por padrão
nexus_nuget_api_key_realm: false
nexus_npm_bearer_token_realm: false
nexus_docker_bearer_token_realm: false # necessário para acesso anônimo ao dockerO Realm de Usuário Remoto também pode ser ativado com
nexus_rut_auth_realm: truee o cabeçalho pode ser configurado definindo
nexus_rut_auth_header: "CUSTOM_HEADER"Tarefas agendadas
nexus_scheduled_tasks: []
# # Exemplo de tarefa para compactar o blobstore:
# - nome: compactar-blobstore-docker
# cron: '0 0 22 * * ?'
# typeId: blobstore.compact
# task_alert_email: alerts@example.org # opcional
# taskProperties:
# blobstoreName: {{ nexus_blob_names.docker.blob }} # todos os atributos da tarefa são armazenados como strings internamente pelo nexus
# # Exemplo de tarefa para eliminar snapshots do maven
# - nome: Eliminar-snapshots-maven
# cron: '0 50 23 * * ?'
# typeId: repository.maven.remove-snapshots
# task_alert_email: alerts@example.org # opcional
# taskProperties:
# repositoryName: "*" # * para todos os repositórios. Altere para um nome de repositório se você quiser apenas um específico
# minimumRetained: "2"
# snapshotRetentionDays: "2"
# gracePeriodInDays: "2"
# booleanTaskProperties:
# removeIfReleased: true
# # Exemplo de tarefa para eliminar manifestos e imagens docker não utilizados
# - nome: Eliminar manifestos e imagens docker não utilizados
# cron: '0 55 23 * * ?'
# typeId: "repository.docker.gc"
# task_alert_email: alerts@example.org # opcional
# taskProperties:
# repositoryName: "*" # * para todos os repositórios. Altere para um nome de repositório se você quiser apenas um específico
# # Exemplo de tarefa para eliminar uploads de docker incompletos
# - nome: Eliminar uploads de docker incompletos
# cron: '0 0 0 * * ?'
# typeId: "repository.docker.upload-purge"
# task_alert_email: alerts@example.org # opcional
# taskProperties:
# age: "24" para configuração. typeId e específicos para a tarefataskProperties/booleanTaskProperties pode ser adivinhado como:
- da hierarquia de tipos Java
org.sonatype.nexus.scheduling.TaskDescriptorSupport - verificando o formulário HTML de criação de tarefas no seu navegador
- observando as requisições AJAX no navegador durante a configuração manual da tarefa.
As propriedades da tarefa devem ser declaradas no bloco yaml correto dependendo de seu tipo:
taskPropertiespara todas as propriedades de string (ou seja, nomes de repositórios, nomes de armazenamento, períodos de tempo…).booleanTaskPropertiespara todas as propriedades booleanas (ou seja, principalmente caixas de seleção na interface gráfica da tarefa de criação do nexus).
Backups
nexus_backup_configure: false
nexus_backup_cron: '0 0 21 * * ?' # Veja a definição das expressões cron na GUI de criação de tarefas do nexus
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 # Mantenha 4 rotações de backup por padrão (atual + últimas 3)O backup não será configurado até que você ative nexus_backup_configure em verdadeiro.
Nesse caso, a tarefa programada será configurada para ser executada no Nexus
com o intervalo especificado em nexus_backup_cron (por padrão às 21:00 todos os dias).
Veja [o modelo groovy para essa tarefa](templates / backup.groovy.j2) para mais detalhes.
Essa tarefa programada não depende de outros nexus_scheduled_tasks, que você
declarar em seu playbook.
Se você quiser rotacionar/remover backups, defina nexus_backup_rotate: true e configure a quantidade de backups que você gostaria de manter com nexus_backup_keep_rotations (padrão 4).
Ao usar rotação, se você quiser economizar espaço em disco adicional durante o processo de backup,
você pode definir nexus_backup_rotate_first: true. Isso configurará a rotação/exclusão preliminar antes do backup. Por padrão, a rotação ocorre após a criação do backup. Observe que, nesse caso, os backups antigos
serão excluídos antes que o backup atual seja feito.
Procedimento de restauração
Execute o playbook com o parâmetro -e nexus_restore_point=
(por exemplo, 2017-12-17-21-00-00 para 17 de dezembro de 2017 às 21:00)
Remoção do nexus
Atenção: isso removerá completamente os dados atuais. Certifique-se de fazer um backup anteriormente, se necessário.
Use a variável nexus_purge, se precisar reiniciar do zero e reinstalar a instância do nexus excluindo todos os dados.
ansible-playbook -i your/inventory.ini your_nexus_playbook.yml -e nexus_purge=trueAlterar a senha do administrador após a primeira instalação
nexus_default_admin_password: 'admin123'Isso não deve ser alterado em seu playbook. Esta variável é preenchida com a senha padrão do administrador do Nexus na primeira instalação e garante que podemos alterar a senha do administrador para nexus_admin_password.
Se você quiser alterar a senha do administrador após a primeira instalação, pode temporariamente alterá-la para a senha antiga a partir da linha de comando. Após a alteração, nexus_admin_password em seu livro de jogadas você pode executar:
ansible-playbook -i your/inventory.ini your_playbook.yml -e nexus_default_admin_password=oldPasswordCanal do Telegram sobre Nexus Sonatype:
Apenas usuários registrados podem participar da pesquisa. , por favor.
Quais repositórios de artefatos você está utilizando?
Sonatype Nexus gratuito
Sonatype Nexus pago
Artifactory gratuito
Artifactory pago
Harbor
Pulp
9 usuários votaram. 3 usuários abstiveram-se.
Fonte: habr.com
