DEPRECATED - Please use https://github.com/lablabs/ansible-role-nexus_config
This Ansible role will configure Sonatype Nexus Repository Manager using the Rest API. Currently this role is just an MVP. It supports:
- Initial admin password setup
- Users creation
- Users update
- Users deletion
- Blob storage (file) creation
- Blob storage (file) update
- Blob storage (file) deletion
- Blob storage (AWS S3) creation
- Blob storage (AWS S3) update
- Blob storage (AWS S3) deletion
- Blob storage (Azure) creation
- Blob storage (Azure) update
- Blob storage (Azure) deletion
- Repositories (Maven) creation
- Repositories (Maven) update
- Repositories (Maven) deletion
- Roles creation
- Roles update
- Roles detetion
- TBD ...
Ansible >= 2.10
- Nexus repository Manager 3.37.0-01
- Fedora 35
This is a copy of defaults/main.yml
---
# Administrator user name
admin_username: admin
# Initial Nexus admin password
initial_admin_password: admin123
# Admin password which will be set during the initial setup.
admin_password: "{{ lookup('env', 'ADMIN_PASSWORD') }}"
# Nexus API port
api_port: 8081
# Nexus endpoint protocol
api_protocol: http
# Hide sensitive Ansible error logs (may contain passwords)
hide_sensitive_logs: true
# Anonymous access
anonymous_access: true
users: []
# - id: joan # User ID
# first_name: Joan # User's first name
# last_name: Doe # User's last name
# email: joan@example.org # Email
# password: nbusr123 # Password ( do not push it to git :) )
# status: active # Status of the user. You can set active/disabled or deleted to delete the user.
# source: default # Source
# roles: # List of the assigned roles
# - nx-admin
# - id: joe
# first_name: Joe
# last_name: Doe
# email: joe@example.org
# password: "{{ lookup('env', 'JOE_PASSWORD') }}"
# status: disabled
# source: default
# roles:
# - nx-anonymous
stores: []
# - name: file_blob # Blob Store name
# type: file # Blob Store type (file, s3)
# soft_quota: 0 # Blob Store quota
# path: /tmp/blobs
# status: active # Blob Store status (active, deleted)
# - name: s3_blog
# type: s3
# soft_quota: 0
# prefix: ""
# region: default
# expiration_days: -1
# status: active
repositories: []
# - name: maven_repo_hosted
# online: true # Repository state (true, false, deleted)
# type: maven # Repository type (Currently supported: maven)
# kind: hosted # Repository kind (hosted, proxy)
# blob_store: default # Blob storeage
# strict_content_type_validation: false # Strict Content Type Validation
# version_policy: MIXED # Version Policy (MIXED, RELEASE, SNAPSHOT)
# layout_policy: STRICT # Layout Policy (STRICT, PERMISSIVE)
# content: INLINE # Content Disposition (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 # Remote repository url
# maximum_artifacts_age: -1 # Maximum component age
# maximum_metadata_age: 1440 # Maximum metadata age
# negative_cache: true # Not found cache
# not_found_cache_ttl: 1440 # Not found cache TTL
# 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: # Remote repo authentication
# type: username # Authetication type (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
In this example the playbook will create two additional Nexus users and one additional Blob Storage.
---
- name: Configure Nexus
hosts: all
user: ansible
become: yes
vars:
config:
users:
- id: joan
first_name: Joan
last_name: Doe
email: joan@example.org
password: "{{ lookup('env', 'JOAN_PASSWORD') }}"
status: active
source: default
roles:
- nx-admin
- id: joe
first_name: Joe
last_name: Doe
email: joe@example.org
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: monolithprojects.nexus_configMIT
Created in 2021 by Michal Muransky