lablabs.nexus_config

Sonatype Nexus Repository Manager 配置

Galaxy 质量
角色版本
角色下载量
分子检查
许可证

这个 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 年创建。

关于项目

Configure Sonatype Nexus Repository Manager

安装
ansible-galaxy install lablabs.nexus_config
许可证
apache-2.0
下载
95
拥有者