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.

Zainstaluj
ansible-galaxy install nicholasamorim.harbor
Licencja
mit
Pobrania
1.4k
Właściciel