kolesaev.harbor
Ansibleロール Harbor
例のプレイブック
---
- name: Harborのインストール
hosts: all
become: yes
gather_facts: yes
roles:
# DockerとDocker Composeをインストール
- role: geerlingguy.docker
# Harborをインストール
- role: kolesaev.harbor
vars:
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:
- name: "user-one"
harbor_registries:
- url: "https://hub.docker.com"
name: "docker-hub"
type: "docker-hub"
harbor_projects:
- name: "new-project"
auto_scan: yes
public: no
retention_policy:
schedule: Hourly
rules:
- repositories_mask_type: "matching"
repositories_mask: "**"
tags_mask_type: "matching"
tags_mask: "dev-*"
rule_type: "pushed_by_days"
rule_value: 30
- name: "docker-hub"
public: yes
proxy_registry: "docker-hub"
harbor_members:
- project: "new-project"
name: "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アドレスまたは完全修飾ドメイン名を指定します。
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
# トリビを有効にするかどうか
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: []
# - name: "project-name"
# public: no
# auto_scan: false
# proxy_registry: registry-name
# # タグ保持ポリシー
# retention_policy:
# schedule: "0 0 * * * *" # cronの値を受け入れ、Hourly/Dailyを使用
# rules:
# - repositories_mask_type: "matching"
# repositories_mask: "**"
# tags_mask_type: "matching"
# tags_mask: "dev-*"
# rule_type: "pushed_by_days"
# 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: []
# - name: "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: name
# access_secret: password
# ガーベジコレクタの設定
harbor_gc: {}
# type: Custom # 空でなければカスタム
# schedule: 0 0 1 * * *
# delete_untagged: false
# workers: 2
#######################################
##### #####
##### デフォルトでは以下になります #####
##### #####
##### type: Custom #####
##### schedule: 0 0 0 * * * #####
##### worker: 1 #####
##### delete_untagged: false #####
##### #####
##### 無効にするにはtypeをNoneに #####
##### #####
##### 利用可能なタイプ: #####
##### - None #####
##### - Weekly #####
##### - Daily #####
##### - Hourly #####
##### #####
#######################################
再インストール
このロールはインジケータファイルを作成するため、既にこのロールが使用された後に再度インストールおよび設定されることはありません。Harborを再インストールするには、harborディレクトリ内のinstalled-indicatorファイルを削除するか、harbor_force_install変数にtrueの値を設定することができます。
APIアクションはこのロールを使用するたびに実行され、インジケータファイルが存在しても影響しません。
機能
Harborのインストール
APIを介した作成/更新/構成:
- プロジェクト
- レジストリ
- ユーザー
- メンバー
- 保持ポリシー
- ガーベジコレクタ
API関連機能:
- 各オブジェクトは関連する作成リストにあるたびに更新されます
- 関連する作成リストにある場合はオブジェクトを削除しません。再作成するには、最初に関連する作成リストから削除し、再度追加します。
要件
リモートOSパッケージ
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許可リスト
- ジョブサービス
- パージ
- 複製
- ロボット
- ユーザーグループ
- ウェブフック
- 不変タグルール
- プリヒート
- 外部認証プロバイダー
- (デフォルト変数を介して構成できない他の事項)
使用したソリューション
実装に際して助けていただいた以下のプロジェクトに感謝します。
プロジェクトについて
Install and configure harbor on your system.
インストール
ansible-galaxy install kolesaev.harbor
ライセンス
mit
ダウンロード
124
所有者