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

community.general

ansible-galaxy collection install community.general

community.crypto

ansible-galaxy collection install community.crypto

community.docker

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

robertdebock.harbor

one_mind.harbor_ansible_role

À propos du projet

Install and configure harbor on your system.

Installer
ansible-galaxy install kolesaev.harbor
Licence
mit
Téléchargements
124
Propriétaire