O Sonatype Nexus é uma plataforma integrada com a qual os desenvolvedores podem proxy, armazenar e gerenciar dependências Java (Maven), Docker, Python, Ruby, NPM, imagens Bower, pacotes RPM, gitlfs, Apt, Go, Nuget, além de distribuir seus softwares. provisão.
Por que preciso de um Sonatype Nexus?
- Armazenar artefatos particulares;
- Para armazenar artefatos que são baixados da Internet;
Artefatos suportados no pacote base Sonatype Nexus:
- Java, Maven (jar)
- Docker
- Python (pip)
- Rubi (gema)
- NPM
- Bower
- Yum (rpm)
- gitlfs
- Raw
- Apt (deb)
- Go
- Nuget
Artefatos com suporte da comunidade:
- Compositor
- Conan
- CPAN
- ELPA
- Elmo
- P2
- R
Exigências
- Leia sobre o uso do ansible na internet.
- Instale o ansible
pip install ansible
na estação de trabalho em que o manual inicia. - Instale geerlingguy.java na estação de trabalho em que o manual é iniciado.
- Instale geerlingguy.apache na estação de trabalho em que o manual inicia.
- Esta função foi testada no CentOS 7, Ubuntu Xenial (16.04) e Bionic (18.04), Debian Jessie e Stretch
jmespath
biblioteca jmespath
deve ser instalada na estação de trabalho em que o manual inicia. Para instalar, execute sudo pip install -r requirements.txt
- Salve o arquivo do playbook (exemplo abaixo) no arquivo nexus.yml
- Execute a instalação do nexus
ansible-playbook -i host nexus.yml
Um exemplo do ansible-playbook para instalar o nexus sem LDAP com os repositórios Maven (java), Docker, Python, Ruby, NPM, Bower, Rower e 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: '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'] }
Imagens:


Variáveis de função
Variáveis de função
Variáveis com valores padrão (consulte default/main.yml
):
Variáveis gerais
nexus_version: '' nexus_timezone: 'UTC'
Por padrão, a função 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 https://www.sonatype.com/download-oss-sonatype .
Se você alterar a versão para uma mais recente, a função tentará atualizar o Nexus instalado.
Se você estiver usando uma versão mais antiga do Nexus que a mais recente, verifique se não está usando recursos que não estão disponíveis na versão instalada (por exemplo, hospedar repositórios yum está disponível para o nexus mais que 3.8.0, git lfs repo for nexus mais que 3.3.0 etc.)
nexus timezone
é um nome de nexus timezone
Java que pode ser útil em combinação com as expressões cron abaixo para tarefas agendadas por nexus.
Porta do 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 Nexus
nexus_os_group: 'nexus' nexus_os_user: 'nexus'
O usuário e o grupo usados para possuir os arquivos do Nexus e iniciar o serviço serão criados pela função, se estiverem ausentes.
nexus_os_user_home_dir: '/home/nexus'
Permitir alterar o diretório inicial padrão para o usuário do nexus
Diretórios de instância do 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 do Nexus.
nexus_installation_dir
contém executáveis instaladosnexus_data_dir
contém toda a configuração, repositórios e artefatos carregados. Os nexus_data_dir
nexus_data_dir dos blobstores personalizados podem ser configurados, consulte nexus_blobstores
abaixo.nexus_tmp_dir
contém todos os arquivos temporários. O caminho padrão para redhat foi movido de /tmp
para superar possíveis problemas com os procedimentos de limpeza automática. Veja # 168.
Configurar o uso de memória do Nexus JVM
nexus_min_heap_size: "1200M" nexus_max_heap_size: "{{ nexus_min_heap_size }}" nexus_max_direct_memory: "2G"
Essas são as configurações padrão do Nexus. Não altere esses valores se você não leu a seção de memória dos requisitos de sistema do nexus e não entende o que está fazendo.
Como um segundo aviso, aqui está um trecho do documento acima:
Não é recomendável aumentar a memória heap da JVM além dos valores recomendados, na tentativa de melhorar o desempenho. Na verdade, isso pode ter o efeito oposto, levando à operação desnecessária do sistema operacional.
Senha de administrador
nexus_admin_password: 'changeme'
A senha da conta "admin" é para configurar. Isso funciona apenas na primeira instalação padrão . Consulte [Alterar senha do administrador após a primeira instalação] (# change-admin-password-after-first-install) se desejar alterá-la posteriormente usando a função.
É altamente desencorajado armazenar sua senha em texto não criptografado no manual, mas use [criptografia ansible-vault] ( https://docs.ansible.com/ansible/latest/user_guide/vault.html ) (incorporada ou em um arquivo separado, carregado, por exemplo, com include_vars)
Acesso Anônimo Padrão
nexus_anonymous_access: false
O acesso anônimo está desativado por padrão. Leia mais sobre acesso anônimo .
Nome do host público
nexus_public_hostname: 'nexus.vm' nexus_public_scheme: https
O nome de domínio totalmente qualificado e o esquema (https ou http) pelo qual a instância do Nexus estará disponí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 provisionamento.
Apenas para usuários avançados. Provavelmente você não deseja alterar essas configurações padrão
Configuração reversa do proxy
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 o proxy reverso SSL .
Para fazer isso, instale o httpd. Nota: quando httpd_setup_enable
definido como true
, o nexus httpd_setup_enable
em contato com 127.0.0.1:8081, não sendo acessível diretamente pela porta HTTP 8081 a partir de um endereço IP externo.
O nome do host padrão usado é nexus_public_hostname
. Se você precisar de nomes diferentes por qualquer motivo, poderá definir httpd_server_name
com um valor diferente.
Com httpd_copy_ssl_files: true
(padrão), os certificados acima devem existir no diretório do playbook e serão copiados para o servidor e configurados no apache.
Se você deseja usar certificados existentes no servidor, configure 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 }}"
httpd_ssl_cert_chain_file_location
é opcional e deve ser desinstalado se você não desejar configurar o arquivo em cadeia
httpd_default_admin_email: "admin@example.com"
Definir email de administrador padrão
Configuração LDAP
As conexões LDAP e o escopo de segurança são desativados por padrão
nexus_ldap_realm: false ldap_connections: []
Conexões LDAP , cada item é o seguinte:
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
Exemplo de configuração LDAP para autenticação anônima (ligação anônima), também é uma configuração "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'
Exemplo de configuração LDAP para autenticação simples (usando uma conta 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
Exemplo 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: '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
Exemplo 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: '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égios
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 privilégios para configurar. Consulte a documentação e a GUI para ver quais variáveis devem ser definidas, dependendo do tipo de privilégio.
Esses elementos são combinados com os seguintes valores padrão:
_nexus_privilege_defaults: type: repository-view format: maven2 actions: - read
Funções (dentro do Nexus está disponível)
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
Uma lista de funções a serem configuradas.
Utilizadores
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 usuários / contas locais (não LDAP) a serem criados no nexus.
Lista de usuários / contas locais (não LDAP) a serem criados no Nexus.
nexus_ldap_users: [] # - username: j.doe # state: present # roles: # - "nx-admin"
Mapeando usuários / funções do Ldap. Um estado absent
removerá funções de um usuário existente, se já existir.
Usuários de LDAP não são excluídos. Tentar instalar uma função para um usuário inexistente resultará em um erro.
Seletores de conteúdo
nexus_content_selectors: - name: docker-login description: Selector for docker login privilege search_expression: format=="docker" and path=~"/v2/"
Para mais informações sobre o seletor de conteúdo, consulte a documentação .
Para usar o seletor de conteúdo, adicione um novo privilégio com o type: repository-content-selector
e o contentSelector
correspondente
- name: docker-login-privilege type: repository-content-selector contentSelector: docker-login description: 'Login to Docker registry' repository: '*' actions: - read - browse
Blobstores e repositórios
nexus_delete_default_repos: false
Exclua os repositórios da configuração padrão inicial da instalação do nexus. Esta etapa é executada apenas na instalação inicial (quando nexus_data_dir
foi detectado vazio).
Remova os repositórios da configuração padrão original do Nexus. Esta etapa é realizada apenas durante a primeira instalação (quando nexus_data_dir
vazio).
nexus_delete_default_blobstore: false
Exclua o blobstore padrão da configuração padrão inicial da instalação do nexus. Isso pode ser feito apenas se nexus_delete_default_repos: true
e todos os repositórios configurados (veja abaixo) tiverem um blob_store: custom
explícito. Esta etapa é executada apenas na instalação inicial (quando nexus_data_dir
foi detectado vazio).
A remoção do armazenamento de blob (artefatos binários) é desativada por padrão da configuração original. Para excluir o armazenamento de blob (artefatos binários), desative nexus_delete_default_repos: true
. Esta etapa é realizada apenas durante a primeira instalação (quando nexus_data_dir
vazio).
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 criar. Um caminho do blobstore e um blobstore do repositório não podem ser atualizados após a criação inicial (qualquer atualização aqui será ignorada no reprovisionamento).
A configuração do blobstore no S3 é fornecida como uma conveniência e não faz parte dos testes automatizados que executamos no travis. Observe que o armazenamento no S3 é recomendado apenas para instâncias implantadas na AWS.
Criando Blobstores O caminho de armazenamento e o repositório de armazenamento não podem ser atualizados após a criação inicial (qualquer atualização aqui será ignorada quando reinstalada).
A configuração do armazenamento de blob no S3 é fornecida por conveniência. Observe que o armazenamento 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 # 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
Acima está um exemplo de configuração de proxy Maven.
nexus_repos_maven_hosted: - name: private-release version_policy: release write_policy: allow_once # one of "allow", "allow_once" or "deny"
Configuração de repositórios hospedados pelo Maven. A configuração de cache negativo é opcional e, se omitida, será padronizada com os valores acima.
Configuração de repositórios hospedados do Maven. Uma configuração de cache negativo (-1) é opcional e assumirá o padrão dos valores acima, se não for especificado.
nexus_repos_maven_group: - name: public member_repos: - central - jboss
Configuração do grupo 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 # 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 repositório Docker, Pypi, Raw, Rubygems, Bower, NPM, Git-LFS e yum:
veja defaults/main.yml
para estas opções:
Os repositórios Docker, Pypi, Raw, Rubygems, Bower, NPM, Git-LFS e yum estão desativados por padrão:
Veja defaults/main.yml
para estas 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: false
Observe que pode ser necessário ativar determinadas áreas de segurança se você 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 # required for docker anonymous access
O Domínio de Usuário Remoto também pode ser ativado usando
nexus_rut_auth_realm: true
e o título pode ser personalizado definindo
nexus_rut_auth_header: "CUSTOM_HEADER"
Tarefas agendadas
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"
Tarefas agendadas para configurar. typeId
e taskProperties
/ booleanTaskProperties
tarefas específicas podem ser adivinhados:
- da hierarquia de tipos Java
org.sonatype.nexus.scheduling.TaskDescriptorSupport
- verificando o formulário HTML para criar uma tarefa no seu navegador
- de visualizar solicitações AJAX em um navegador ao configurar manualmente uma tarefa.
As propriedades da tarefa devem ser declaradas no bloco yaml correto, dependendo do tipo :
taskProperties
para todas as propriedades de sequência (ou seja, nomes de repositórios, nomes de repositórios, períodos de tempo ...).booleanTaskProperties
para todas as propriedades lógicas (ou seja, basicamente 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 * * ?' # 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)
O backup não será definido até que você altere nexus_backup_configure
para true
.
Nesse caso, a tarefa de script agendada será configurada para ser executada no Nexus
no intervalo especificado em nexus_backup_cron
(o padrão é 21:00 todos os dias).
Consulte [modelo groovy para esta tarefa] (templates / backup.groovy.j2) para obter detalhes.
Esta tarefa agendada é independente das outras nexus_scheduled_tasks
anunciar no seu manual.
Se desejar girar / excluir backups, defina nexus_backup_rotate: true
e configure o número de backups que você deseja salvar com nexus_backup_keep_rotations
(o padrão é 4).
Ao usar a rotação, se você deseja economizar espaço em disco adicional durante o processo de backup,
Você pode definir 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