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

community.general

ansible-galaxy collection install community.general

community.crypto

ansible-galaxy collection install community.crypto

community.docker

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.

robertdebock.harbor

one_mind.harbor_ansible_role

Über das Projekt

Install and configure harbor on your system.

Installieren
ansible-galaxy install kolesaev.harbor
GitHub Repository
Lizenz
mit
Downloads
124
Besitzer