kolesaev.harbor
Rôle Ansible Harbor
Exemple de Playbook
---
- nom: Installation de Harbor
hôtes: tous
devenir: oui
collecter_faits: oui
rôles:
# installer docker et docker-compose
- rôle: geerlingguy.docker
# installer Harbor
- rôle: kolesaev.harbor
vars:
harbor_parent_dir: /data
harbor_data_dir: /data/harbor_data
harbor_enable_trivy: vrai
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:
- library
harbor_users:
- nom: "user-one"
harbor_registries:
- url: "https://hub.docker.com"
nom: "docker-hub"
type: "docker-hub"
harbor_projects:
- nom: "new-project"
auto_scan: oui
public: non
retention_policy:
schedule: Horaire
rules:
- repositories_mask_type: "matching"
repositories_mask: "**"
tags_mask_type: "matching"
tags_mask: "dev-*"
rule_type: "pushed_by_days"
rule_value: 30
- nom: "docker-hub"
public: oui
proxy_registry: "docker-hub"
harbor_members:
- project: "new-project"
nom: "user-one"
role_id: 2
Variables de rôle
Vous devriez pouvoir utiliser toutes les variables booléennes (oui/non/vrai/faux).
Les valeurs par défaut pour les variables sont définies dans defaults/main.yml
.
---
# Devons-nous désactiver le service des mises à jour automatiques
system_disable_unattended_upgrades: faux
# Version que vous souhaitez installer
harbor_version: "2.10.0"
# Devrions-nous forcer l'installation de Harbor même s'il est déjà installé
harbor_force_install: faux
# Quel type d'installation souhaitez-vous, soit "en ligne" ou "hors ligne".
harbor_installation_type: en ligne
# Indiquez l'adresse IP ou le nom de domaine complet (FQDN) de l'hôte cible sur lequel déployer Harbor.
harbor_hostname: "{{ ansible_host }}"
# Définir un mot de passe initial pour l'administrateur système de Harbor.
harbor_admin_password: "Harbor12345"
# Où créer le répertoire Harbor
harbor_parent_dir: /home
# Où stocker les données
harbor_data_dir: "{{ harbor_parent_dir }}/harbor/data"
# Port Http
harbor_http_port: 80
# Port Https
harbor_https_port: 443
# Installer avec trivy ou non
harbor_enable_trivy: faux
# Remplissez harbor_external_url si vous souhaitez activer le proxy externe.
harbor_external_url: ""
# Nous pouvons définir une adresse IP d'interface pour le port ouvert lorsque nous activons le proxy externe
harbor_iface_ip: ""
###########################################################
##### #####
##### L'adresse IP de l'interface peut être définie une #####
##### fois en utilisant ce rôle, elle ne sera pas mise à #####
##### jour après avoir changé la valeur mais seulement #####
##### jusqu'à ce que vous supprimiez le fichier indicateur #####
##### ou que vous utilisiez la variable harbor_force_install #
##### #####
###########################################################
#################
### API stuff ###
#################
# Les administrateurs sont-ils uniquement capables de créer des projets
harbor_project_creation_restriction: faux
# Liste des registres à supprimer
harbor_registries_to_remove: []
# - registry-name
# Liste des membres à supprimer
harbor_members_to_remove: []
# - project: project-name
# member_id: member-id
##################################################
##### Vous pourrez obtenir les ID des membres via l'API #####
##### Mais il est plus facile de les supprimer via l'UI #####
##################################################
# Liste des projets à supprimer
harbor_projects_to_remove: []
# - project-name
# Liste des utilisateurs à supprimer
harbor_users_to_remove: []
# - user-name
# Liste des projets à créer
harbor_projects: []
# - nom: "project-name"
# public: non
# auto_scan: faux
# proxy_registry: registry-name
# # politique de conservation des étiquettes
# retention_policy:
# schedule: "0 0 * * * *" # accepte cron et valeur Horaire/Journalière
# rules:
# - repositories_mask_type: "matching"
# repositories_mask: "**"
# tags_mask_type: "matching"
# tags_mask: "dev-*"
# rule_type: "pushed_by_days"
# rule_value: 30
# with_untagged: faux
####################################################
##### #####
##### Mappage pour les règles de conservation #####
##### #####
##### 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" #####
##### #####
####################################################
# Liste des utilisateurs à créer
harbor_users: []
# - nom: "user"
# email: "[email protected]"
# password: "Harbor12345" # Le mot de passe peut être défini une fois avec ce rôle, il ne sera pas mis à jour après avoir changé la valeur
# realname: "user"
# comment: "comment"
# Créer des membres de projet
harbor_members: []
# - project: "project-name"
# nom: "user-name"
# role_id: 1
#############################
##### ID des rôles : #####
##### #####
##### Administrateur du projet = 1 #####
##### Développeur = 2 #####
##### Invité = 3 #####
##### Responsable = 4 #####
##### Invité limité = 5 #####
#############################
# Créer des registres miroir
harbor_registries: []
# - url: "https://hub.docker.com"
# insecure: faux
# nom: "Docker Hub"
# type: "docker-hub"
# auth_type: basic
# access_key: name
# access_secret: password
# Configuration du collecteur de déchets
harbor_gc: {}
# type: Personnalisé # sera personnalisé si vide
# schedule: 0 0 1 * * *
# delete_untagged: faux
# workers: 2
#######################################
##### #####
##### Par défaut, il sera avec #####
##### #####
##### type: Personnalisé #####
##### schedule: 0 0 0 * * * #####
##### worker: 1 #####
##### delete_untagged: faux #####
##### #####
##### Pour désactiver, définissez le type à Aucun #####
##### #####
##### Types disponibles : #####
##### - Aucun #####
##### - Hebdomadaire #####
##### - Quotidien #####
##### - Horaire #####
##### #####
#######################################
Réinstaller
Comme ce rôle crée un fichier indicateur, il ne sera pas installé et configuré à nouveau après que ce rôle ait déjà été utilisé. Pour réinstaller Harbor, vous pouvez supprimer le fichier installed-indicator dans le répertoire harbor ou définir true comme valeur pour la variable harbor_force_install.
Les actions API seront effectuées chaque fois que ce rôle est utilisé, même si le fichier indicateur existe.
Fonctionnalités
Installation de Harbor
Création/Mise à jour/Configuration via API :
- Projets
- Registres
- Utilisateurs
- Membres
- Politiques de conservation
- Collecteur de déchets
Fonctionnalités liées à l'API :
- Chaque objet sera mis à jour chaque fois qu'il est dans la liste de création associée
- Il ne supprimera pas un objet s'il est également dans la liste de création associée. Pour le recréer, supprimez-le d'abord de la liste de création associée, puis ajoutez-le à nouveau.
Exigences
Packages OS distants
Docker et docker-compose-plugin (vous pouvez les installer manuellement ou utiliser un playbook/tâche/rôle ansible, par exemple, geerlingguy.docker
)
Collections Ansible locales
ansible-galaxy collection install community.general
ansible-galaxy collection install community.crypto
ansible-galaxy collection install community.docker
Non implémenté
Pour l'installation :
- possibilité d'utiliser une base de données externe
- possibilité d'utiliser un redis externe
- possibilité d'utiliser un serveur syslog externe
- possibilité d'utiliser un traçage externe
- possibilité d'ouvrir un point de terminaison de métriques
- (et d'autres choses qui ne sont pas configurables via des variables par défaut)
Pour l'API :
- listes de consensus CVE
- services de travail
- purges
- répliques
- robots
- groupes d'utilisateurs
- webhooks
- règles de balises immuables
- préchauffages
- fournisseurs d'authentification externes
- (et d'autres choses qui ne sont pas configurables via des variables par défaut)
Solutions utilisées
Un grand merci aux projets suivants qui m'ont aidé dans la mise en œuvre
Install and configure harbor on your system.
ansible-galaxy install kolesaev.harbor