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集合
ansible-galaxy collection install community.general
ansible-galaxy collection install community.crypto
ansible-galaxy collection install community.docker
未实现
对于安装:
- 使用外部数据库的能力
- 使用外部redis的能力
- 使用外部syslog服务器的能力
- 使用外部跟踪的能力
- 打开指标端点的能力
- (以及其他未通过默认变量配置的内容)
对于API:
- CVE允许列表
- 作业服务
- 清理
- 复制
- 机器人
- 用户组
- Webhooks
- 不可变标签规则
- 预热
- 外部身份验证提供者
- (以及其他未通过默认变量配置的内容)
使用的解决方案
非常感谢以下项目对我实施的帮助
安装
ansible-galaxy install kolesaev.harbor
许可证
mit
下载
124
拥有者