nicholasamorim.harbor

Ansible Rolle: Harbor

Eine Ansible Rolle, die Harbor auf Linux installiert.

Diese Rolle befindet sich in der Alpha-Phase. Probleme und Pull-Requests sind willkommen.

Anforderungen

Keine.

Rollenvariablen

Eine vollständige Liste finden Sie in defaults/main.yaml.

Standardmäßig verwendet die Rolle die IP des aktuellen Hosts, um harbor_hostname festzulegen. Sie können dies überschreiben.

Um das Installationsverzeichnis zu ändern:

harbor_install_dir: /opt

Um das Standardprotokoll zu ändern:

harbor_ui_url_protocol: "http"

Wenn Sie die exponierten Ports von Harbors NGINX von den Standardwerten 80 und 443 ändern möchten, verwenden Sie:

harbor_exposed_http_port: 81
harbor_exposed_https_port: 444

Wenn Sie Harbor hinter einem Proxy ausführen, setzen Sie harbor_behind_proxy: yes. Dies wird die notwendigen Zeilen in Harbors Nginx kommentieren, um es gemäß ihrer Fehlerbehebung zu betreiben.

Um mit Extras zu installieren, setzen Sie:

harbor_extras:
    - clair
    - notary

Wenn Sie bereits einen Redis eingerichtet haben, möchten Sie möglicherweise den Standard-Redis-Hostnamen und -Port von Harbor ändern:

# Ändern Sie diese, wenn Sie bereits einen eigenen Redis ausführen
harbor_redis_host: redis
harbor_redis_port: 6379

Sie können auch zusätzliche Argumente an den Installer mit harbor_installer_extra_args (ein String) übergeben.

Sie können harbor_projects definieren, wenn Sie möchten, dass Projekte automatisch erstellt werden, sobald Harbor installiert ist.

harbor_projects:
  - project_name: test
    is_public: "false"
    content_trust: "false"
    prevent_vul: "true"
    severity: "high"
    auto_scan: "true"

Standardmäßig können sich Benutzer selbst registrieren. Wenn Sie die Benutzer automatisch erstellen möchten, müssen Sie die Selbstregistrierung deaktivieren und eine Liste von Benutzern angeben. Diese Benutzer werden automatisch erstellt. Das Passwort ist standardmäßig "HarborUser12345".

Diese Operation ist idempotent.

harbor_self_registration: "off"
harbor_users:
    - username: user1
      email: [email protected]
      realname: Benutzer Nummer 1
      role_name: Entwickler
      role_id: 2
      has_admin_role: true

Abhängigkeiten

Keine.

Beispiel-Playbook

---
- name: Installation und Konfiguration von Harbor
  hosts: registry
  vars:
    harbor_projects:
      - project_name: meinProjekt
        is_public: "false"
        content_trust: "false"
        prevent_vul: "true"
        severity: "high"
        auto_scan: "true"
    harbor_users:
      - username: user1
        email: [email protected]
        realname: Benutzer Nummer 1
        role_name: Entwickler
        role_id: 2
        has_admin_role: true
  roles:
    - nicholasamorim.harbor

Nachdem das Playbook ausgeführt wurde, sollten Sie in der Lage sein, zu Ihrem Host auf Port 80/443 zu navigieren und die UI von Harbor zu sehen. Sie können sich mit admin/Harbor12345 anmelden. Wenn Sie die exponierten Ports geändert haben, denken Sie daran, diese anstelle von 80/443 zu verwenden.

Ausführen von Harbor hinter Ihrem Proxy

Eine gängige Konfiguration ist, Harbor hinter einem Proxy auszuführen, wobei der Proxy für die SSL-Terminierung verantwortlich ist. Harbor kann damit recht kompliziert sein, da es sein eigenes Nginx hat und es verwirrend werden kann, weil

a) Harbor sein eigenes Nginx-Proxy hat, das als http ausgeführt werden muss
b) Bestimmte Zeilen in Harbors Nginx kommentiert werden müssen, wenn Sie einen Proxy verwenden.
c) Die Realm-URL muss ebenfalls auf das extern Sichtbare geändert werden: https.

Hier ist ein Beispiel der Variablen, die in diesem Szenario festgelegt werden müssen:

harbor_hostname: "myharbor.company.com"
harbor_api_url: "https://myharbor.company.com/api"
harbor_behind_proxy: yes
# Intern läuft Harbor weiterhin unter http
harbor_ui_url_protocol: "http"
harbor_customize_crt: "off"
harbor_registry_realm_protocol: "https"
# Ausführen von Harbors Nginx auf unterschiedlichen Ports, um Konflikte mit 80/443 zu vermeiden
harbor_exposed_http_port: 8798
harbor_exposed_https_port: 8799
harbor_extras:
  - clair
harbor_self_registration: "off"
# Dies ist nützlich, wenn Sie bereits einen Redis-Container ausführen
harbor_redis_host: redisharbor
harbor_ssl_cert: /etc/ssl/certs/cert.pem
harbor_ssl_cert_key: /etc/ssl/certs/cert.key

Damit wird sichergestellt, dass:

  • Harbors Nginx diese Zeile kommentiert wird.
  • Die URL des Registrierungsbereichs korrekt aktualisiert wird.

Das ist etwas kompliziert, aber es ist ein Kompromiss, um Harbors Dateien/Vorlagen nicht zu stark zu ändern, da dies häufige Probleme verursachen kann. Ich bin jedoch offen für Vorschläge zur Verbesserung.

Verwaltung des Status

Zur Vereinfachung enthält diese Rolle Aufgaben zum Stoppen, Starten und Neustarten des Registrys mit docker-compose.

Hier ist ein Playbook, das speziell zum Neustarten der Registry erstellt wurde:

---
- hosts: registry
  tasks:
    - name: Neustart von Harbor
      include_role:
        name: harbor
        tasks_from: restart

Das Ausführen des obigen Playbooks startet effektiv alle Komponenten von Harbor neu. Dies berücksichtigt, ob Sie clair und/oder notary verwenden und deren docker-compose-Dateien ebenfalls verwendet werden.

tasks_from kann restart, start und stop sein.

Wenn Sie das Playbook erneut ausführen, um die Liste der Benutzer sicherzustellen, aber das Standard-Admin-Passwort bereits geändert haben, können Sie die Variable harbor_admin_password an einer Stelle festlegen oder sie einfach über die Befehlszeile mit -e "harbor_admin_password=mypass" übergeben.

Autorinformationen

Diese Rolle wurde 2019 von Nicholas Amorim erstellt.

Installieren
ansible-galaxy install nicholasamorim.harbor
Lizenz
mit
Downloads
1.4k
Besitzer