lablabs.nexus_config
Sonatype Nexus Repository Manager 配置
这个 Ansible 角色将使用 Rest API 配置 Sonatype Nexus Repository Manager。
当前,这个角色支持以下功能:
- 初始管理员密码设置
- 创建用户
- 更新用户
- 删除用户
- 创建 Blob 存储(文件)
- 更新 Blob 存储(文件)
- 删除 Blob 存储(文件)
- 创建 Blob 存储(AWS S3)
- 更新 Blob 存储(AWS S3)
- 删除 Blob 存储(AWS S3)
- 创建 Blob 存储(Azure)
- 更新 Blob 存储(Azure)
- 删除 Blob 存储(Azure)
- 创建存储库(Maven、Docker、PyPi、Conda、R、npm)
- 更新存储库(Maven、Docker、PyPi、Conda、R、npm)
- 删除存储库(Maven、Docker、PyPi、Conda、R、npm)
- 创建角色
- 更新角色
- 删除角色
- 待更新...
要求
Ansible 版本 >= 2.10
角色变量
这是 defaults/main.yml
的副本
---
# 管理员用户名
admin_username: admin
# 初始 Nexus 管理员密码
initial_admin_password: admin123
# 在初始设置时设置的管理员密码
admin_password: "{{ lookup('env', 'ADMIN_PASSWORD') }}"
# Nexus API 主机
api_host: localhost
# Nexus API 端口
api_port: 8081
# Nexus 端点协议
api_protocol: http
# 如果使用 https 和自定义 SSL,则为根证书 .pem 文件路径
root_ca:
# 隐藏敏感的 Ansible 错误日志(可能包含密码)
hide_sensitive_logs: true
# 匿名访问
anonymous_access: true
users: []
# - id: joan # 用户 ID
# first_name: Joan # 用户名
# last_name: Doe # 用户姓氏
# email: [email protected] # 电子邮件
# password: nbusr123 # 密码(请勿上传到 git :) )
# status: active # 用户状态,可以设置为 active/disabled 或 deleted 以删除用户。
# source: default # 来源
# roles: # 分配的角色列表
# - 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
# name: nx-role # 角色名称
# description: 一个新角色 # 角色描述
# status: created # 角色状态,可以设置为 created 或 deleted 以删除角色。
# privileges: # 包含的权限
# - nx-repository-view-*-*-add
# - nx-repository-view-*-*-browse
# - nx-repository-view-*-*-read
# roles: [ ] # 包含的角色
stores: []
# - name: file_blob # Blob 存储名称
# type: file # Blob 存储类型 (file, s3)
# soft_quota: 0 # Blob 存储配额
# path: /tmp/blobs
# status: active # Blob 存储状态 (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 # 存储库状态 (true, false, deleted)
# type: maven # 存储库类型(当前支持: maven)
# kind: hosted # 存储库种类(hosted, proxy)
# blob_store: default # Blob 存储
# strict_content_type_validation: false # 严格内容类型验证
# write_policy: allow # 控制是否允许资产的部署和更新 (allow, allow_once, deny)
# cleanup_names: [] # 清理策略名称,如不需要清理则省略。
# version_policy: MIXED # 版本策略 (MIXED, RELEASE, SNAPSHOT)
# layout_policy: STRICT # 布局策略 (STRICT, PERMISSIVE)
# content: INLINE # 内容分配 (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 # 远程存储库网址
# maximum_artifacts_age: -1 # 最大组件年龄
# maximum_metadata_age: 1440 # 最大元数据年龄
# negative_cache: true # 未找到缓存
# not_found_cache_ttl: 1440 # 未找到缓存的 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: # 远程存储库认证
# type: username # 认证类型 (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/" # 被代理的远程存储库的位置(可选)
# maximum_artifacts_age: -1
# maximum_metadata_age: 1440
# negative_cache: true
# not_found_cache_ttl: 1440
# routing_rule: null
# v1_enabled: true # 是否允许客户端使用 V1 API 与此存储库交互
# force_basic_auth: true # 是否强制身份验证(如果为 false,则需要 Docker Bearer Token Realm)
# index_type: "REGISTRY" # Docker 索引类型 (HUB, REGISTRY, CUSTOM)
# index_url: "https://index.docker.io/" # 使用的 Docker 索引网址(可选)
# - 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
示例剧本
在这个示例中,剧本将创建两个额外的 Nexus 用户和一个额外的 Blob 存储。
---
- name: 配置 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
许可证
查看 LICENSE 了解详细信息。
许可给 Apache 软件基金会 (ASF),根据一个
或更多贡献者许可协议。查看 NOTICE 文件
随本作品分发以获取有关版权所有权的额外信息。 ASF
根据 Apache 许可证 2.0 版本(“许可证”)许可此文件;除非
按适用法律或书面协议约定,否则不得使用此文件。
您可以在以下网址获取许可的副本
https://www.apache.org/licenses/LICENSE-2.0
除非适用法律要求或书面同意,否则根据许可证分发的软件
一律按“原样”基础提供,不附有任何担保或条件。
具体许可证规定的权限和限制。
作者信息
由 Labyrinth Labs 于 2021 年创建。
安装
ansible-galaxy install lablabs.nexus_config
许可证
apache-2.0
下载
95
拥有者