lablabs.nexus_config
Configuración del Gestor de Repositorios Sonatype Nexus
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
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