kolesaev.harbor

Rola Ansible Harbor

Przykładowy Playbook

---
- nazwa: Instalacja Harbor
  gospodarze: wszyscy
  zostań: tak
  zbierz_fakty: tak

  role:

    # zainstaluj docker i docker-compose
    - rola: geerlingguy.docker

    # zainstaluj Harbor
    - rola: kolesaev.harbor
      zmienne:
        harbor_parent_dir: /data
        harbor_data_dir: /data/harbor_data
        harbor_enable_trivy: prawda
        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:
          - biblioteka

        harbor_users:
          - nazwa: "użytkownik-jeden"

        harbor_registries:
          - url: "https://hub.docker.com"
            nazwa: "docker-hub"
            typ: "docker-hub"

        harbor_projects:
          - nazwa: "nowy-projekt"
            auto_scan: tak
            public: nie
            retention_policy:
              schedule: Co godzinę
              rules:
                - repositories_mask_type: "matching"
                  repositories_mask: "**"
                  tags_mask_type: "matching"
                  tags_mask: "dev-*"
                  rule_type: "pushed_by_days"
                  rule_value: 30

          - nazwa: "docker-hub"
            public: tak
            proxy_registry: "docker-hub"

        harbor_members:
          - projekt: "nowy-projekt"
            nazwa: "użytkownik-jeden"
            role_id: 2

Zmienne roli

Możesz używać dowolnych zmiennych typu boolean (tak/nie/prawda/fałsz).

Wartości domyślne dla zmiennych są ustawione w defaults/main.yml.

---
# Czy wyłączyć usługę automatycznych aktualizacji
system_disable_unattended_upgrades: fałsz

# Wersja, którą chcesz zainstalować
harbor_version: "2.10.0"

# Czy wymusić instalację Harbor, nawet jeśli jest już zainstalowany
harbor_force_install: fałsz

# Jakiego rodzaju instalacji chcesz, "online" lub "offline".
harbor_installation_type: online

# Określ adres IP lub w pełni kwalifikowaną nazwę domeny (FQDN) docelowego hosta, na którym chcesz wdrożyć Harbor.
harbor_hostname: "{{ ansible_host }}"

# Ustaw początkowe hasło dla administratora systemu Harbor.
harbor_admin_password: "Harbor12345"

# Gdzie utworzyć katalog Harbor
harbor_parent_dir: /home

# Gdzie przechowywać dane
harbor_data_dir: "{{ harbor_parent_dir }}/harbor/data"

# Port Http
harbor_http_port: 80

# Port Https
harbor_https_port: 443

# Zainstalować z trivy czy nie
harbor_enable_trivy: fałsz

# Wypełnij harbor_external_url, jeśli chcesz włączyć zewnętrzny proxy.
harbor_external_url: ""

# Możemy zdefiniować adres IP interfejsu dla otwartego portu przy włączonym zewnętrznym proxy
harbor_iface_ip: "" 
  ###########################################################
  #####                                                 #####
  ##### Adres IP interfejsu można ustawić raz przy użyciu #####
  ##### tej roli, nie będzie aktualizowany po zmianie     #####
  ##### wartości, ale tylko do czasu, gdy usuniesz        #####
  ##### plik wskaźnikowy lub użyjesz zmiennej            #####
  ##### harbor_force_install                             #####
  #####                                                 #####
  ###########################################################

#################
### Rzeczy API ###
#################

# Czy administratorzy mogą tylko tworzyć projekty
harbor_project_creation_restriction: fałsz

# Lista rejestrów do usunięcia
harbor_registries_to_remove: []
  # - nazwa-rejestru

# Lista członków do usunięcia
harbor_members_to_remove: []
  # - projekt: nazwa-projektu
  #   member_id: id-członka
  ##################################################
  ##### Możesz uzyskać ID członków za pomocą API #####
  #####      Ale łatwiej je usunąć przez UI       #####
  ##################################################

# Lista projektów do usunięcia
harbor_projects_to_remove: []
  # - nazwa-projektu

# Lista użytkowników do usunięcia
harbor_users_to_remove: []
  # - nazwa-użytkownika

# Lista projektów do utworzenia
harbor_projects: []
  # - nazwa: "nazwa-projektu"
  #   public: nie
  #   auto_scan: fałsz
  #   proxy_registry: nazwa-rejestru
  #   # polityka zachowania tagów
  #   retention_policy:
  #     schedule: "0 0 * * * *" # akceptuje cron i wartość Co godzinę/Dziennie
  #     rules:
  #       - repositories_mask_type: "matching"
  #         repositories_mask: "**"
  #         tags_mask_type: "matching"
  #         tags_mask: "dev-*"
  #         rule_type: "pushed_by_days"
  #         rule_value: 30
  #         with_untagged: fałsz
  ####################################################
  #####                                          #####
  ##### Mapowanie dla reguł zachowania            #####
  #####                                          #####
  ##### 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"                  #####
  #####                                          #####
  ####################################################

# Lista użytkowników do utworzenia
harbor_users: []
  # - nazwa: "użytkownik"
  #   email: "[email protected]"
  #   hasło: "Harbor12345" # Hasło można ustawić raz przy użyciu tej roli, nie będzie aktualizowane po zmianie wartości
  #   prawdziwe_nazwisko: "użytkownik"
  #   komentarz: "komentarz"

# Tworzenie członków projektu
harbor_members: []
  # - projekt: "nazwa-projektu"
  #   nazwa: "nazwa-użytkownika"
  #   role_id: 1
  #############################
  ##### ID ról:         #####
  #####                   #####
  ##### Administrator projektu = 1 #####
  ##### Programista     = 2 #####
  ##### Gość           = 3 #####
  ##### Utrzymujący    = 4 #####
  ##### Ograniczony Gość = 5 #####
  #############################

# Tworzenie lustrzanych rejestrów
harbor_registries: []
  # - url: "https://hub.docker.com"
  #   insecure: fałsz
  #   nazwa: "Docker Hub"
  #   typ: "docker-hub"
  #   auth_type: basic
  #   access_key: nazwa
  #   access_secret: hasło

# Konfiguracja zbieracza odpadów
harbor_gc: {}
  # typ: Custom # będzie niestandardowy, jeśli pusty
  # harmonogram: 0 0 1 * * *
  # delete_untagged: fałsz
  # pracownicy: 2
  #######################################
  #####                             #####
  ##### Domyślnie będzie to z      #####
  #####                             #####
  ##### typ: Custom                #####
  ##### harmonogram: 0 0 0 * * *       #####
  ##### pracownik: 1                   #####
  ##### delete_untagged: fałsz      #####
  #####                             #####
  ##### Aby wyłączyć, ustaw typ None #####
  #####                             #####
  ##### Dostępne typy:             #####
  #####  - None                     #####
  #####  - Co tydzień              #####
  #####  - Codziennie              #####
  #####  - Co godzinę              #####
  #####                             #####
  #######################################

Ponowna instalacja

Ponieważ ta rola stworzy plik wskaźnikowy, nie będzie ponownie instalowana i konfigurowana po tym, jak ta rola została już użyta. Aby ponownie zainstalować Harbor, możesz usunąć plik installed-indicator w katalogu harbor lub ustawić true jako wartość dla zmiennej harbor_force_install.

Akcje API będą wykonywane za każdym razem, gdy ta rola będzie używana, nawet jeśli plik wskaźnikowy istnieje.

Cechy

  • Instalacja Harbor

  • Tworzenie/Aktualizacja/Konfiguracja za pomocą API:

    • Projekty
    • Rejestry
    • Użytkownicy
    • Członkowie
    • Polityki zachowania
    • Zbieracz śmieci
  • Funkcje związane z API:

    • Każdy obiekt będzie aktualizowany za każdym razem, gdy znajduje się na liście tworzenia
    • Nie usunie obiektu, jeśli również znajduje się na liście tworzenia. Aby go ponownie utworzyć, najpierw usuń go z listy tworzenia, a następnie dodaj ponownie.

Wymagania

Pakiety OS zdalnego

Docker i docker-compose-plugin (możesz zainstalować je ręcznie lub użyć dowolnego playbooka/task/roli ansible, np. geerlingguy.docker)

Kolekcje Ansible lokalne

community.general

ansible-galaxy collection install community.general

community.crypto

ansible-galaxy collection install community.crypto

community.docker

ansible-galaxy collection install community.docker

Nie zrealizowane

  • W instalacji:

    • możliwość korzystania z zewnętrznej bazy danych
    • możliwość korzystania z zewnętrznego redis
    • możliwość korzystania z zewnętrznego serwera syslog
    • możliwość korzystania z zewnętrznego śledzenia
    • możliwość otwierania punktu końcowego metryk
    • (i inne rzeczy, które nie są konfigurowalne przez domyślne zmienne)
  • W API:

    • listy dozwolone CVE
    • usługi zajęć
    • oczyszczanie
    • replikacje
    • roboty
    • grupy użytkowników
    • webhooki
    • reguły niezmiennych tagów
    • wstępne ładowania
    • zewnętrzni dostawcy autoryzacji
    • (i inne rzeczy, które nie są konfigurowalne przez domyślne zmienne)

Używane rozwiązania

Wielkie podziękowania dla poniższych projektów, które pomogły mi w realizacji

robertdebock.harbor

one_mind.harbor_ansible_role

O projekcie

Install and configure harbor on your system.

Zainstaluj
ansible-galaxy install kolesaev.harbor
Licencja
mit
Pobrania
124
Właściciel