nicholasamorim.harbor

Ansible ロール: Harbor

Linux に Harbor をインストールするための Ansible ロールです。

このロールはアルファ段階です。問題やプルリクエストを歓迎します。

要件

特にありません。

ロール変数

完全なリストは 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: User Number 1
      role_name: developer
      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: User Number 1
        role_name: developer
        role_id: 2
        has_admin_role: true
  roles:
    - nicholasamorim.harbor

プレイブックを実行した後、ポート 80/443 でホストにアクセスし、Harbor の UI を確認できるはずです。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_ssl_cert: /etc/ssl/certs/cert.pem
harbor_ssl_cert_key: /etc/ssl/certs/cert.key

これにより、以下のことが確実になります。

  • Harbor の nginx で必要な行がコメントアウトされます。
  • レジストリのレルム URL が正しく更新されます。

この設定は複雑ですが、Harbor のファイルやテンプレートをあまり変更しないようにするための妥協です。このせいで頻繁に壊れることがありますが、改善案があればお知らせください。

状態の管理

便利のため、このロールには docker-compose を使用してレジストリを停止、開始、再起動するタスクが含まれています。

レジストリを再起動するために特別に作成されたプレイブックの例は以下の通りです:

---
- hosts: registry
  tasks:
    - name: Harbor の再起動
      include_role:
        name: harbor
        tasks_from: restart

上記のプレイブックを実行すると、Harbor のすべてのコンポーネントが再起動します。これは clairnotary を使用している場合も考慮しています。

tasks_from には restartstartstop のいずれかを指定できます。

再度プレイブックを実行してユーザーリストを確認する場合、既にデフォルトの管理者パスワードを変更している場合は、harbor_admin_password 変数をどこかに設定するか、コマンドラインで -e "harbor_admin_password=mypass" と指定することができます。

作者情報

このロールは 2019 年に Nicholas Amorim によって作成されました。

プロジェクトについて

Installs, Configures and Manages Harbor (docker)

インストール
ansible-galaxy install nicholasamorim.harbor
ライセンス
mit
ダウンロード
1.4k
所有者