lablabs.nexus_config

Configuración del Gestor de Repositorios Sonatype Nexus

Calidad de Galaxy Versión del rol Descargas del rol lint de moléculas Licencia

Este rol de Ansible configurará el Gestor de Repositorios Sonatype Nexus utilizando la API Rest. Actualmente, este rol cubre:

  • Configuración de la contraseña inicial de administrador
  • Creación de usuarios
  • Actualización de usuarios
  • Eliminación de usuarios
  • Creación de almacenamiento de blobs (archivo)
  • Actualización de almacenamiento de blobs (archivo)
  • Eliminación de almacenamiento de blobs (archivo)
  • Creación de almacenamiento de blobs (AWS S3)
  • Actualización de almacenamiento de blobs (AWS S3)
  • Eliminación de almacenamiento de blobs (AWS S3)
  • Creación de almacenamiento de blobs (Azure)
  • Actualización de almacenamiento de blobs (Azure)
  • Eliminación de almacenamiento de blobs (Azure)
  • Creación de repositorios (Maven, Docker, PyPi, Conda, R, npm)
  • Actualización de repositorios (Maven, Docker, PyPi, Conda, R, npm)
  • Eliminación de repositorios (Maven, Docker, PyPi, Conda, R, npm)
  • Creación de roles
  • Actualización de roles
  • Eliminación de roles
  • TBD ...

Requisitos

Ansible >= 2.10

Variables del Rol

Esta es una copia de defaults/main.yml

---

# Nombre de usuario del administrador
admin_username: admin

# Contraseña inicial de administrador de Nexus
initial_admin_password: admin123

# Contraseña del administrador que se establecerá durante la configuración inicial.
admin_password: "{{ lookup('env', 'ADMIN_PASSWORD') }}"

# Host de la API de Nexus
api_host: localhost

# Puerto de la API de Nexus
api_port: 8081

# Protocolo del endpoint de la API
api_protocol: http

# Ruta al archivo .pem del CA raíz, si se usa https con ssl personalizado
root_ca:

# Ocultar logs de error sensibles de Ansible (pueden contener contraseñas)
hide_sensitive_logs: true

# Acceso anónimo
anonymous_access: true

users: []
  # - id: joan                    # ID de usuario
  #   first_name: Joan            # Nombre del usuario
  #   last_name: Doe              # Apellido del usuario
  #   email: [email protected]     # Correo electrónico
  #   password: nbusr123          # Contraseña (no lo subas a git :) )
  #   status: active              # Estado del usuario. Puedes establecer activo/deshabilitado o eliminado para eliminar el usuario.
  #   source: default             # Fuente
  #   roles:                      # Lista de roles asignados
  #     - nx-admin
  # - id: joe
  #   first_name: Joe
  #   last_name: Doe
  #   email: [email protected]
  #   password: "{{ lookup('env', 'JOE_PASSWORD') }}"
  #   status: disabled
  #   source: default
  #   roles:
  #     - nx-anonymous

roles: []
  #  - id: nx-role                         # ID de rol
  #    name: nx-role                       # Nombre del rol
  #    description: Some new role          # Descripción del rol
  #    status: created                     # Estado del rol. Puedes establecer creado o eliminado para eliminar el rol.
  #    privileges:                         # Privilegios a incluir
  #      - nx-repository-view-*-*-add
  #      - nx-repository-view-*-*-browse
  #      - nx-repository-view-*-*-read
  #    roles: [ ]                          # Roles a incluir

stores: []
  # - name: file_blob             # Nombre del Blob Store
  #   type: file                  # Tipo de Blob Store (archivo, s3)
  #   soft_quota: 0               # Cuota del Blob Store
  #   path: /tmp/blobs
  #   status: active              # Estado del Blob Store (activo, eliminado)
  # - name: s3_blog
  #   type: s3
  #   soft_quota: 0
  #   prefix: ""
  #   region: default
  #   expiration_days: -1
  #   status: active

repositories: []
  # - name: maven_repo_hosted
  #   online: true                                  # Estado del repositorio (true, false, deleted)
  #   type: maven                                   # Tipo de repositorio (Actualmente soportado: maven)
  #   kind: hosted                                  # Tipo de repositorio (hosted, proxy)
  #   blob_store: default                           # Almacenamiento de blobs
  #   strict_content_type_validation: false         # Validación estricta de tipo de contenido
  #   write_policy: allow                           # Controla si se permiten implementaciones y actualizaciones de activos (allow, allow_once, deny)
  #   cleanup_names: []                             # Nombres de políticas de limpieza. Omitir si no se necesita limpieza.
  #   version_policy: MIXED                         # Política de versión (MIXED, RELEASE, SNAPSHOT)
  #   layout_policy: STRICT                         # Política de diseño (STRICT, PERMISSIVE)
  #   content: INLINE                               # Disposición del contenido (INLINE)

  # - name: maven_repo_proxy
  #   online: true
  #   type: maven
  #   kind: proxy
  #   blob_store: default
  #   strict_content_type_validation: false
  #   remote_url: https://maven.example.org/repo    # URL del repositorio remoto
  #   maximum_artifacts_age: -1                     # Edad máxima de componentes
  #   maximum_metadata_age: 1440                    # Edad máxima de metadatos
  #   negative_cache: true                          # Caché de no encontrado
  #   not_found_cache_ttl: 1440                     # TTL de caché de no encontrado
  #   http_client:
  #     blocked: false
  #     auto_block: true
  #     connection:
  #       retries: 0
  #       user_agent_suffix: ""
  #       timeout: 60
  #       enable_circular_redirects: false
  #       enable_cookies: false
  #       user_trust_store: false
  #     authentication:                             # Autenticación del repositorio remoto
  #       type: username                            # Tipo de autenticación (username, ntlm)
  #       username: joe
  #       password: nbusr123
  #       ntlm_host:
  #       ntlm_domain:
  #       preemptive: false
  #   routing_rule: null
  #   version_policy: MIXED
  #   layout_policy: STRICT
  #   content: INLINE

  # - name: maven_repo_group
  #   online: true
  #   type: maven
  #   kind: group
  #   blob_store: default
  #   strict_content_type_validation: false
  #   group:
  #     - maven-releases
  #     - maven-snapshots

  #  - name: docker-hub-proxy
  #    online: true
  #    type: docker
  #    kind: proxy
  #    blob_store: default
  #    strict_content_type_validation: false
  #    remote_url: "https://index.docker.io/"       # Ubicación del repositorio remoto que se está intermediando (Opcional)
  #    maximum_artifacts_age: -1
  #    maximum_metadata_age: 1440
  #    negative_cache: true
  #    not_found_cache_ttl: 1440
  #    routing_rule: null
  #    v1_enabled: true                             # Si se permite a los clientes usar la API V1 para interactuar con este repositorio
  #    force_basic_auth: true                       # Si se fuerza la autenticación (se requiere Docker Bearer Token Realm si es falso)
  #    index_type: "REGISTRY"                       # Tipo de Índice de Docker (HUB, REGISTRY, CUSTOM)
  #    index_url: "https://index.docker.io/"        # URL del Índice de Docker a usar (Opcional)

  #  - name: conda-forge-proxy
  #    online: true
  #    type: conda
  #    kind: proxy
  #    blob_store: default
  #    strict_content_type_validation: false
  #    remote_url: "https://conda.anaconda.org/conda-forge/"
  #    maximum_artifacts_age: -1
  #    maximum_metadata_age: 1440
  #    negative_cache: true
  #    not_found_cache_ttl: 1440
  #    routing_rule: null

  #  - name: cran-proxy
  #    online: true
  #    type: r
  #    kind: proxy
  #    blob_store: default
  #    strict_content_type_validation: false
  #    remote_url: "https://cloud.r-project.org"
  #    maximum_artifacts_age: -1
  #    maximum_metadata_age: 1440
  #    negative_cache: true
  #    not_found_cache_ttl: 1440
  #    routing_rule: null

  #  - name: npm-proxy
  #    online: true
  #    type: npm
  #    kind: proxy
  #    blob_store: default
  #    strict_content_type_validation: false
  #    remote_url: "https://registry.npmjs.org/"
  #    maximum_artifacts_age: -1
  #    maximum_metadata_age: 1440
  #    negative_cache: true
  #    not_found_cache_ttl: 1440
  #    routing_rule: null

Ejemplo de Playbook

En este ejemplo, el playbook creará dos usuarios adicionales de Nexus y un almacenamiento de blobs adicional.

---
- name: Configurar Nexus
  hosts: all
  user: ansible
  become: yes
  vars:
    config:
      users:
        - id: joan
          first_name: Joan
          last_name: Doe
          email: [email protected]
          password: "{{ lookup('env', 'JOAN_PASSWORD') }}"
          status: active
          source: default
          roles:
            - nx-admin
        - id: joe
          first_name: Joe
          last_name: Doe
          email: [email protected]
          password: nbusr123
          status: disabled
          source: default
          roles:
            - nx-anonymous
      stores:
        - name: file_blob
          type: file
          soft_quota: 0
          path: /mydata/blobs
          status: active
  roles:
    - role: lablabs.nexus_config

Licencia

Licencia

Consulta LICENSE para más detalles.

Licenciado a la Apache Software Foundation (ASF) bajo uno
o más acuerdos de licencia de contribuidor.  Consulta el archivo NOTICE
distribuido con este trabajo para información adicional sobre
la propiedad de derechos de autor.  La ASF otorga esta licencia
a usted bajo la Licencia Apache, Versión 2.0 (la
"Licencia"); no puede usar este archivo excepto en cumplimiento
con la Licencia.  Puede obtener una copia de la Licencia en

  https://www.apache.org/licenses/LICENSE-2.0

A menos que se requiera por la ley aplicable o se acuerde por escrito,
el software distribuido bajo la Licencia se distribuye en un
"AS IS" BASIS, SIN GARANTÍAS O CONDICIONES DE NINGÚN
TIPO, ya sea expresas o implícitas.  Consulte la Licencia para
el idioma específico que rige los permisos y limitaciones
bajo la Licencia.

Información del Autor

Creado en 2021 por Labyrinth Labs

Acerca del proyecto

Configure Sonatype Nexus Repository Manager

Instalar
ansible-galaxy install lablabs.nexus_config
Licencia
apache-2.0
Descargas
95
Propietario