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
ansible-galaxy collection install community.general
ansible-galaxy collection install community.crypto
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
Install and configure harbor on your system.
ansible-galaxy install kolesaev.harbor