piwi3910.harbor
Ansible角色: Harbor
更新角色以支持现代Ansible版本,因某些功能已弃用,源角色似乎不再更新。
用于在Linux上安装Harbor的Ansible角色。
此角色处于初步阶段,欢迎报告问题和提交PR。
需求
无。
角色变量
完整列表请参见 defaults/main.yaml
。
默认情况下,该角色使用当前主机的IP来设置 harbor_hostname
。您可以覆盖它。
要更改安装目录:
harbor_install_dir: /opt
要更改默认协议:
harbor_ui_url_protocol: "http"
如果您想更改Harbor的NGINX默认暴露端口(80和443),请使用:
harbor_exposed_http_port: 81
harbor_exposed_https_port: 444
如果您在代理后运行Harbor,请设置 harbor_behind_proxy: yes
。这将注释掉Harbor的NGINX中的必要行,以使其按故障排除部分的要求工作。
要安装附加组件,请设置:
harbor_extras:
- clair
- notary
如果您已经有一个Redis实例,可能需要更改Harbor的默认Redis主机名和端口:
# 如果您已经运行自己的Redis,请更改这些
harbor_redis_host: redis
harbor_redis_port: 6379
您还可以通过 harbor_installer_extra_args
(一个字符串)传递额外的参数给安装程序。
如果您希望在Harbor安装完成后自动创建项目,可以定义 harbor_projects
。
harbor_projects:
- project_name: test
is_public: "false"
content_trust: "false"
prevent_vul: "true"
severity: "high"
auto_scan: "true"
默认情况下,用户可以自我注册。如果您更喜欢自动创建用户,则必须禁用自我注册并设置用户列表。这些用户将自动创建。默认密码为 "HarborUser12345"。
此操作是幂等的。
harbor_self_registration: "off"
harbor_users:
- username: user1
email: [email protected]
realname: 用户一号
role_name: 开发者
role_id: 2
has_admin_role: true
依赖关系
无。
示例剧本
---
- name: 安装和配置Harbor
hosts: registry
vars:
harbor_projects:
- project_name: myproject
is_public: "false"
content_trust: "false"
prevent_vul: "true"
severity: "high"
auto_scan: "true"
harbor_users:
- username: user1
email: [email protected]
realname: 用户一号
role_name: 开发者
role_id: 2
has_admin_role: true
roles:
- harbor
剧本运行后,您应该能够通过 80/443 端口访问主机并看到Harbor的界面。您可以使用 admin/Harbor12345
登录。如果您更改了暴露的端口,请记得使用新端口而不是80/443。
在代理后运行Harbor
常见设置是在代理后运行Harbor,代理负责SSL终止。由于Harbor内部有自己的Nginx,因此可能会让事情变得复杂,因为:
a) Harbor有自己的Nginx代理,必须以http
运行
b) 然而,如果您使用代理,Harbor的nginx中的某些行必须注释掉。
c) 领域URL也必须更改为外部可见的内容:https
。
以下是必须在这种情况下设置的变量示例:
harbor_hostname: "myharbor.company.com"
harbor_api_url: "https://myharbor.company.com/api"
harbor_behind_proxy: yes
# 在内部,Harbor仍然以http运行
harbor_ui_url_protocol: "http"
harbor_customize_crt: "off"
harbor_registry_realm_protocol: "https"
# 以不同端口运行Harbor的nginx,以避免与80/443冲突
harbor_exposed_http_port: 8798
harbor_exposed_https_port: 8799
harbor_extras:
- clair
harbor_self_registration: "off"
# 如果您已经运行了Redis容器,这会很有用
harbor_redis_host: redisharbor
这将确保:
- Harbor的nginx注释掉这行。
- 注册域URL正确更新。
这可能有点复杂,但这是尽量不去改变Harbor的文件/模板,以免经常出现问题。我欢迎任何改进建议。
状态管理
为了方便起见,该角色包含停止、启动和重启注册中心的任务,使用docker-compose。
以下是专门创建的重启注册中心的剧本:
---
- hosts: registry
tasks:
- name: 重启Harbor
include_role:
name: harbor
tasks_from: restart
运行上述剧本将有效地重启Harbor的所有组件。这会考虑到您是否使用clair
和/或notary
,并使用它们的docker-compose文件。
tasks_from
可以是restart
、start
和stop
。
如果您再次运行剧本以确保用户列表,但您已经更改了默认的管理员密码,您可以在某处设置 harbor_admin_password
变量,或者仅在命令行中传递 -e "harbor_admin_password=mypass"
。
作者信息
该角色由Nicholas Amorim于2019年创建,并于2022年由Pascal Watteel更新。
Installs, Configures and Manages Harbor (docker)
ansible-galaxy install piwi3910.harbor