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 のすべてのコンポーネントが再起動します。これは clair
や notary
を使用している場合も考慮しています。
tasks_from
には restart
、start
、stop
のいずれかを指定できます。
再度プレイブックを実行してユーザーリストを確認する場合、既にデフォルトの管理者パスワードを変更している場合は、harbor_admin_password
変数をどこかに設定するか、コマンドラインで -e "harbor_admin_password=mypass"
と指定することができます。
作者情報
このロールは 2019 年に Nicholas Amorim によって作成されました。
Installs, Configures and Manages Harbor (docker)
ansible-galaxy install nicholasamorim.harbor