kolesaev.harbor
Ansible Rolle Harbor
Beispiel Playbook
---
- name: Harbor Installation
hosts: all
become: yes
gather_facts: yes
roles:
# Docker und Docker-Compose installieren
- role: geerlingguy.docker
# Harbor installieren
- 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: "neues-projekt"
auto_scan: yes
public: no
retention_policy:
schedule: Stündlich
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: "neues-projekt"
name: "user-one"
role_id: 2
Rollen Variablen
Sie sollten in der Lage sein, alle booleschen Variablen (ja/nein/wahr/falsch) zu verwenden.
Die Standardwerte für die Variablen sind in defaults/main.yml
festgelegt.
---
# Soll der Dienst für unbeaufsichtigte Updates deaktiviert werden
system_disable_unattended_upgrades: false
# Version, die Sie installieren möchten
harbor_version: "2.10.0"
# Soll Harbor auch dann gezwungen installiert werden, wenn es bereits installiert ist
harbor_force_install: false
# Welchen Typ der Installation möchten Sie, entweder "online" oder "offline".
harbor_installation_type: online
# Geben Sie die IP-Adresse oder den vollqualifizierten Domainnamen (FQDN) des Zielhosts an, auf dem Sie Harbor bereitstellen möchten.
harbor_hostname: "{{ ansible_host }}"
# Setzen Sie ein anfängliches Passwort für den Administrator des Harbor-Systems.
harbor_admin_password: "Harbor12345"
# Wo das Harbor-Verzeichnis erstellt werden soll
harbor_parent_dir: /home
# Wo die Daten gespeichert werden
harbor_data_dir: "{{ harbor_parent_dir }}/harbor/data"
# Http-Port
harbor_http_port: 80
# Https-Port
harbor_https_port: 443
# Mit Trivy installieren oder nicht
harbor_enable_trivy: false
# Füllen Sie harbor_external_url aus, wenn Sie einen externen Proxy aktivieren möchten.
harbor_external_url: ""
# Wir können eine Interface-IP für den offenen Port definieren, wenn wir den externen Proxy aktivieren
harbor_iface_ip: ""
###########################################################
##### #####
##### Die Interface-IP kann einmal mit dieser Rolle #####
##### festgelegt werden, sie wird nicht aktualisiert, #####
##### nachdem der Wert geändert wurde, sondern nur #####
##### solange Sie die Indikator-Datei löschen oder die #####
##### harbor_force_install-Variable verwenden. #####
##### #####
###########################################################
#################
### API-Info ###
#################
# Können nur Admins Projekte erstellen
harbor_project_creation_restriction: false
# Liste der zu entfernenden Registrierungen
harbor_registries_to_remove: []
# - registrierungs-name
# Liste der zu entfernenden Mitglieder
harbor_members_to_remove: []
# - project: projekt-name
# member_id: mitglieder-id
##################################################
##### Sie können Mitglieds-IDs über die API abrufen #####
##### Aber einfacher über die UI zu entfernen #####
##################################################
# Liste der zu entfernenden Projekte
harbor_projects_to_remove: []
# - projekt-name
# Liste der zu entfernenden Benutzer
harbor_users_to_remove: []
# - benutzer-name
# Liste der zu erstellenden Projekte
harbor_projects: []
# - name: "projekt-name"
# public: no
# auto_scan: false
# proxy_registry: registrierungs-name
# # Tag-Rückhaltspolitik
# retention_policy:
# schedule: "0 0 * * * *" # akzeptiert cron und Werte Stündlich/Täglich
# 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
####################################################
##### #####
##### Zuordnungen für Rückhalt-Regeln #####
##### #####
##### 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" #####
##### #####
####################################################
# Liste der zu erstellenden Benutzer
harbor_users: []
# - name: "benutzer"
# email: "[email protected]"
# password: "Harbor12345" # Das Passwort kann einmal mit dieser Rolle festgelegt werden, es wird nach der Änderung des Wertes nicht aktualisiert
# realname: "benutzer"
# comment: "kommentar"
# Mitglieder der Projekte erstellen
harbor_members: []
# - project: "projekt-name"
# name: "benutzer-name"
# role_id: 1
#############################
##### Rollennummern: #####
##### #####
##### Projekt Admin = 1 #####
##### Entwickler = 2 #####
##### Gast = 3 #####
##### Wartender = 4 #####
##### Eingeschränkter Gast = 5 #####
#############################
# Spiegelregistrierungen erstellen
harbor_registries: []
# - url: "https://hub.docker.com"
# insecure: false
# name: "Docker Hub"
# type: "docker-hub"
# auth_type: basic
# access_key: name
# access_secret: passwort
# Garbage Collector konfigurieren
harbor_gc: {}
# type: Custom # wird als Custom betrachtet, wenn leer
# schedule: 0 0 1 * * *
# delete_untagged: false
# workers: 2
#######################################
##### #####
##### Standardmäßig wird er mit #####
##### #####
##### type: Custom #####
##### schedule: 0 0 0 * * * #####
##### worker: 1 #####
##### delete_untagged: false #####
##### #####
##### Um zu deaktivieren, setzen Sie type auf None #####
##### #####
##### Verfügbare Typen: #####
##### - None #####
##### - Wöchentlich #####
##### - Täglich #####
##### - Stündlich #####
##### #####
#######################################
Neuinstallation
Da diese Rolle eine Indikator-Datei erstellt, wird sie nach der Verwendung dieser Rolle nicht erneut installiert oder konfiguriert. Um Harbor neu zu installieren, können Sie die Datei installed-indicator im Harbor-Verzeichnis löschen oder true als Wert für die Variable harbor_force_install setzen.
API-Aktionen werden jedes Mal durchgeführt, wenn diese Rolle verwendet wird, auch wenn die Indikator-Datei vorhanden ist.
Funktionen
Installation von Harbor
Erstellen/Aktualisieren/Konfigurieren über die API:
- Projekte
- Registrierungen
- Benutzer
- Mitglieder
- Rückhaltpolitiken
- Garbage Collector
API-bezogene Funktionen:
- Jedes Objekt wird jedes Mal aktualisiert, wenn es sich in der entsprechenden Erstellungsliste befindet.
- Es wird kein Objekt entfernt, wenn es sich ebenfalls in der entsprechenden Erstellungsliste befindet. Um es neu zu erstellen, entfernen Sie es zuerst aus der entsprechenden Erstellungsliste und fügen Sie es dann wieder hinzu.
Anforderungen
Remote OS-Pakete
Docker und Docker-Compose-Plugin (Sie können diese manuell installieren oder ein beliebiges Ansible-Playbook/-Aufgabe/-Rolle verwenden, z.B. geerlingguy.docker
)
Lokale Ansible-Kollektionen
ansible-galaxy collection install community.general
ansible-galaxy collection install community.crypto
ansible-galaxy collection install community.docker
Nicht implementiert
Für die Installation:
- Möglichkeit, eine externe Datenbank zu verwenden
- Möglichkeit, einen externen Redis zu verwenden
- Möglichkeit, einen externen Syslog-Server zu verwenden
- Möglichkeit, externes Tracing zu verwenden
- Möglichkeit, den Metrik-Endpunkt zu öffnen
- (und andere Dinge, die nicht über Standardvariablen konfiguriert werden können)
Für die API:
- CVE-Whitelist
- Jobdienste
- Bereinigungen
- Replikationen
- Roboter
- Benutzergruppen
- Webhooks
- Unveränderliche Regelungen für Tags
- Vorheizungen
- Externe Authentifizierungsanbieter
- (und andere Dinge, die nicht über Standardvariablen konfiguriert werden können)
Verwendete Lösungen
Vielen Dank an die folgenden Projekte, die mir bei der Umsetzung geholfen haben.
Install and configure harbor on your system.
ansible-galaxy install kolesaev.harbor