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.
Installs, Configures and Manages Harbor (docker)
ansible-galaxy install nicholasamorim.harbor