nicholasamorim.harbor
Rola Ansible: Harbor
Rola Ansible, która instaluje Harbor na systemie Linux.
Ta rola jest w fazie alfa. Problemy i prośby o wprowadzenie zmian są mile widziane.
Wymagania
Brak.
Zmienne roli
Pełna lista znajduje się w pliku defaults/main.yaml
.
Domyślnie rola używa adresu IP bieżącego hosta do ustawienia harbor_hostname
. Możesz to nadpisać.
Aby zmienić katalog instalacji:
harbor_install_dir: /opt
Aby zmienić domyślny protokół:
harbor_ui_url_protocol: "http"
Jeśli chcesz zmienić wystawione porty NGINX Harbor z domyślnych 80 i 443, użyj:
harbor_exposed_http_port: 81
harbor_exposed_https_port: 444
Jeżeli uruchamiasz Harbor za proxy, ustaw harbor_behind_proxy: yes
. To skomentuje odpowiednie linie w Nginx Harbor, aby działał zgodnie z ich sekcją rozwiązywania problemów.
Aby zainstalować dodatkowe komponenty, ustaw:
harbor_extras:
- clair
- notary
Jeśli masz już skonfigurowany Redis, możesz chcieć zmienić domyślną nazwę hosta i port Redis dla Harbor:
# zmień te wartości, jeśli masz własny Redis
harbor_redis_host: redis
harbor_redis_port: 6379
Możesz również przekazać dodatkowe argumenty do instalatora przy pomocy harbor_installer_extra_args
(ciąg tekstowy).
Możesz zdefiniować harbor_projects
, aby automatycznie tworzyć projekty po zainstalowaniu Harbor.
harbor_projects:
- project_name: test
is_public: "false"
content_trust: "false"
prevent_vul: "true"
severity: "high"
auto_scan: "true"
Domyślnie użytkownicy mogą się rejestrować samodzielnie. Jeśli wolisz, aby użytkownicy byli tworzeni automatycznie, musisz wyłączyć samodzielną rejestrację i ustawić listę użytkowników. Użytkownicy ci będą tworzeni automatycznie. Domyślne hasło to "HarborUser12345".
Operacja ta jest idempotentna.
harbor_self_registration: "off"
harbor_users:
- username: user1
email: [email protected]
realname: Użytkownik Numer 1
role_name: developer
role_id: 2
has_admin_role: true
Zależności
Brak.
Przykładowy Playbook
---
- name: Instalacja i konfiguracja Harbor
hosts: registry
vars:
harbor_projects:
- project_name: myproject
is_public: "false"
content_trust: "false"
prevent_vul: "true"
severity: "high"
auto_scan: "true"
harbor_users:
- username: user1
email: [email protected]
realname: Użytkownik Numer 1
role_name: developer
role_id: 2
has_admin_role: true
roles:
- nicholasamorim.harbor
Po uruchomieniu playbooka powinieneś móc przejść do swojego hosta na porcie 80/443 i zobaczyć interfejs użytkownika Harbor. Możesz zalogować się jako admin/Harbor12345
. Jeśli zmieniłeś wystawione porty, pamiętaj, aby użyć ich zamiast 80/443.
Uruchamianie Harbor za proxy
Typowa konfiguracja to uruchamianie Harbor za proxy, gdzie proxy odpowiada za zakończenie SSL. Harbor może być dość skomplikowany z tą konfiguracją, ponieważ ma własny Nginx wewnątrz, co może wprowadzać zamieszanie, ponieważ:
a) Harbor ma własny proxy Nginx, który musi działać jako http
.
b) Jednak pewne linie muszą być skomentowane w Nginx Harbor, jeśli używasz proxy.
c) URL realm musi być również zmieniony na ten, który jest widoczny zewnętrznie: https
.
Oto przykład zmiennych, które należy ustawić w takim scenariuszu:
harbor_hostname: "myharbor.company.com"
harbor_api_url: "https://myharbor.company.com/api"
harbor_behind_proxy: yes
# Wewnątrz Harbor nadal działa na http
harbor_ui_url_protocol: "http"
harbor_customize_crt: "off"
harbor_registry_realm_protocol: "https"
# Uruchamianie Nginx Harbor na innych portach, aby nie kolidował z 80/443
harbor_exposed_http_port: 8798
harbor_exposed_https_port: 8799
harbor_extras:
- clair
harbor_self_registration: "off"
# To jest przydatne, jeśli masz już działający kontener redis
harbor_redis_host: redisharbor
harbor_ssl_cert: /etc/ssl/certs/cert.pem
harbor_ssl_cert_key: /etc/ssl/certs/cert.key
To zapewni, że:
- Nginx Harbor skomentuje tę linię.
- URL realm rejestru zostanie zaktualizowany poprawnie.
Jest to trochę skomplikowane, ale to kompromis, aby zbytnio nie zmieniać plików/szablonów Harbor, ponieważ może to prowadzić do częstych problemów. Jestem otwarty na sugestie, jak to poprawić.
Zarządzanie stanem
Dla wygody ta rola zawiera zadania do zatrzymywania, uruchamiania i ponownego uruchamiania rejestru za pomocą docker-compose.
Oto playbook stworzony specjalnie do ponownego uruchomienia rejestru:
---
- hosts: registry
tasks:
- name: Ponowne uruchamianie Harbor
include_role:
name: harbor
tasks_from: restart
Uruchomienie powyższego playbooka efektywnie ponownie uruchamia wszystkie komponenty Harbor. Zawiera to przypadku, gdy używasz clair
i/lub notary
, oraz używa ich plików docker-compose.
tasks_from
może być restart
, start
oraz stop
.
Jeśli ponownie uruchamiasz playbook, aby upewnić się o liście użytkowników, ale już zmieniłeś domyślne hasło administratora, możesz ustawić zmienną harbor_admin_password
lub przekazać ją w wierszu poleceń za pomocą -e "harbor_admin_password=mypass"
.
Informacje o autorze
Ta rola została stworzona w 2019 roku przez Nicholasa Amorima.
Installs, Configures and Manages Harbor (docker)
ansible-galaxy install nicholasamorim.harbor