kolesaev.harbor

Ansible角色Harbor

示例剧本

---
- 名称:Harbor安装
  主机:所有
  提升权限:是
  收集信息:是

  角色:

    # 安装docker和docker-compose
    - 角色:geerlingguy.docker

    # 安装Harbor
    - 角色:kolesaev.harbor
      变量:
        harbor_parent_dir: /data
        harbor_data_dir: /data/harbor_data
        harbor_enable_trivy: true
        harbor_external_url: "https://{{ ansible_hostname }}"
        harbor_admin_password: "{{ lookup('ansible.builtin.env', 'HARBOR_ADMIN_PWD') | default('Harbor12345') }}"
        harbor_http_port: 5680
        harbor_https_port: 5643
        harbor_iface_ip: 127.0.0.1

        harbor_projects_to_remove:
          - library

        harbor_users:
          - 名称:"user-one"

        harbor_registries:
          - url: "https://hub.docker.com"
            名称:"docker-hub"
            类型:"docker-hub"

        harbor_projects:
          - 名称:"new-project"
            auto_scan: 
            public: 
            retention_policy:
              schedule: 每小时
              规则:
                - repositories_mask_type: "匹配"
                  repositories_mask: "**"
                  tags_mask_type: "匹配"
                  tags_mask: "dev-*"
                  rule_type: "根据天数推送"
                  rule_value: 30

          - 名称:"docker-hub"
            public: 
            proxy_registry: "docker-hub"

        harbor_members:
          - project: "new-project"
            名称:"user-one"
            role_id: 2

角色变量

您可以使用任何布尔变量(是/否/真/假)。

变量的默认值在 defaults/main.yml 中设置。

---
# 是否禁用无人值守升级服务
system_disable_unattended_upgrades: false

# 您希望安装的版本
harbor_version: "2.10.0"

# 即使已安装,是否强制安装Harbor
harbor_force_install: false

# 您希望使用哪种类型的安装,可以是 “在线” 或 “离线”。
harbor_installation_type: online

# 指定要部署Harbor的目标主机的IP地址或完全合格的域名(FQDN)。
harbor_hostname: "{{ ansible_host }}"

# 设置Harbor系统管理员的初始密码。
harbor_admin_password: "Harbor12345"

# 创建Harbor目录的位置
harbor_parent_dir: /home

# 存储数据的位置
harbor_data_dir: "{{ harbor_parent_dir }}/harbor/data"

# Http端口
harbor_http_port: 80

# Https端口
harbor_https_port: 443

# 是否启用trivy
harbor_enable_trivy: false

# 如果您想启用外部代理,请填写harbor_external_url。
harbor_external_url: ""

# 当我们启用外部代理时,可以定义接口IP来开放端口
harbor_iface_ip: "" 
  ###########################################################
  #####                                                 #####
  ##### 一旦使用此角色可以设置接口IP,          #####
  ##### 更改值后不会更新                           #####
  ##### 只有在您删除指示文件                     #####
  ##### 或使用harbor_force_install变量时          #####
  #####                                                 #####
  ###########################################################

#################
### API相关设置 ###
#################

# 仅管理员可以创建项目
harbor_project_creation_restriction: false

# 删除注册表列表
harbor_registries_to_remove: []
  # - registry-name

# 删除成员列表
harbor_members_to_remove: []
  # - project: project-name
  #   member_id: member-id
  ##################################################
  ##### 您可以通过API获取成员ID,但更容易通过UI删除 #####
  ##################################################

# 删除项目列表
harbor_projects_to_remove: []
  # - project-name

# 删除用户列表
harbor_users_to_remove: []
  # - user-name

# 创建项目列表
harbor_projects: []
  # - 名称: "project-name"
  #   public: 否
  #   auto_scan: false
  #   proxy_registry: registry-name
  #   # 标签保留策略
  #   retention_policy:
  #     schedule: "0 0 * * * *" # 接受cron和值每小时/每天
  #     规则:
  #       - repositories_mask_type: "匹配"
  #         repositories_mask: "**"
  #         tags_mask_type: "匹配"
  #         tags_mask: "dev-*"
  #         rule_type: "根据天数推送"
  #         rule_value: 30
  #         with_untagged: false
  ####################################################
  #####                                          #####
  ##### 保留规则的映射                          #####
  #####                                          #####
  ##### rule_types:                              #####
  #####   pushed_by_count: "latestPushedK"       #####
  #####   pulled_by_count: "latestPulledN"       #####
  #####   pushed_by_days:  "nDaysSinceLastPush"  #####
  #####   pulled_by_days:  "nDaysSinceLastPull"  #####
  #####   always:          "always"              #####
  ##### repositories_mask_types:                 #####
  #####   matching: "repoMatches"                #####
  #####   excluding: "repoExcludes"              #####
  ##### tags_mask_types:                         #####
  #####   matching: "matches"                    #####
  #####   excluding: "excludes"                  #####
  #####                                          #####
  ####################################################

# 创建用户列表
harbor_users: []
  # - 名称: "user"
  #   email: "[email protected]"
  #   password: "Harbor12345" # 密码可以在此角色中设置一次,修改后不会更新
  #   realname: "user"
  #   comment: "comment"

# 创建项目成员
harbor_members: []
  # - project: "project-name"
  #   name: "user-name"
  #   role_id: 1
  #############################
  ##### 角色ID:         #####
  #####                   #####
  ##### 项目管理员 = 1 #####
  ##### 开发者     = 2 #####
  ##### 游客       = 3 #####
  ##### 维护者     = 4 #####
  ##### 限制游客   = 5 #####
  #############################

# 创建镜像注册表
harbor_registries: []
  # - url: "https://hub.docker.com"
  #   insecure: false
  #   name: "Docker Hub"
  #   type: "docker-hub"
  #   auth_type: basic
  #   access_key: 名称
  #   access_secret: 密码

# 配置垃圾回收器
harbor_gc: {}
  # type: Custom # 如果为空将是自定义
  # schedule: 0 0 1 * * *
  # delete_untagged: false
  # workers: 2
  #######################################
  #####                             #####
  ##### 默认情况下它将是            #####
  #####                             #####
  ##### type: Custom                #####
  ##### schedule: 0 0 0 * * *       #####
  ##### worker: 1                   #####
  ##### delete_untagged: false      #####
  #####                             #####
  ##### 要禁用请设置为None        #####
  #####                             #####
  ##### 可用类型:                  #####
  #####  - None                     #####
  #####  - 每周                   #####
  #####  - 每天                    #####
  #####  - 每小时                  #####
  #####                             #####
  #######################################

重新安装

由于此角色会创建一个指示文件,使用该角色后将不会再次安装和配置Harbor。要重新安装Harbor,您可以在Harbor目录中删除文件 installed-indicator 或将true 设置为 harbor_force_install 变量的值。

每次使用此角色时,都会执行API操作,即使指示文件存在。

功能

  • 安装Harbor

  • 通过API创建/更新/配置:

    • 项目
    • 注册表
    • 用户
    • 成员
    • 保留策略
    • 垃圾回收器
  • 与API相关的功能:

    • 每次与相关创建列表一起生成的对象都会更新
    • 如果对象也在相关创建列表中,则不会删除该对象。要重新创建它,请先从相关创建列表中删除它,然后再次添加。

要求

远程操作系统软件包

Docker和docker-compose-plugin(您可以手动安装它们或使用任何ansible剧本/任务/角色,例如 geerlingguy.docker

本地Ansible集合

community.general

ansible-galaxy collection install community.general

community.crypto

ansible-galaxy collection install community.crypto

community.docker

ansible-galaxy collection install community.docker

未实现

  • 对于安装:

    • 使用外部数据库的能力
    • 使用外部redis的能力
    • 使用外部syslog服务器的能力
    • 使用外部跟踪的能力
    • 打开指标端点的能力
    • (以及其他未通过默认变量配置的内容)
  • 对于API:

    • CVE允许列表
    • 作业服务
    • 清理
    • 复制
    • 机器人
    • 用户组
    • Webhooks
    • 不可变标签规则
    • 预热
    • 外部身份验证提供者
    • (以及其他未通过默认变量配置的内容)

使用的解决方案

非常感谢以下项目对我实施的帮助

robertdebock.harbor

one_mind.harbor_ansible_role

关于项目

Install and configure harbor on your system.

安装
ansible-galaxy install kolesaev.harbor
许可证
mit
下载
124
拥有者