Instale e configure o Nexus Sonatype usando a infraestrutura como abordagem de código

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

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


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 ​​instalados
  • nexus_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

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


All Articles