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可以是restartstartstop

如果您再次运行剧本以确保用户列表,但您已经更改了默认的管理员密码,您可以在某处设置 harbor_admin_password 变量,或者仅在命令行中传递 -e "harbor_admin_password=mypass"

作者信息

该角色由Nicholas Amorim于2019年创建,并于2022年由Pascal Watteel更新。

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