piwi3910.harbor

Rôle Ansible : Harbor

Rôle mis à jour pour fonctionner avec des versions modernes d'Ansible en raison de certaines déprécations, car le rôle source ne semble plus mis à jour.

Un rôle Ansible qui installe Harbor sur Linux.

Ce rôle est en phase alpha. Les problèmes et les demandes de tirage sont les bienvenus.

Exigences

Aucune.

Variables du rôle

Pour une liste complète, voir defaults/main.yaml.

Par défaut, le rôle utilise l'adresse IP de l'hôte actuel pour définir harbor_hostname. Vous pouvez la remplacer.

Pour changer le répertoire d'installation :

harbor_install_dir: /opt

Pour changer le protocole par défaut :

harbor_ui_url_protocol: "http"

Si vous souhaitez changer les ports exposés du NGINX de Harbor, qui sont par défaut 80 et 443, utilisez :

harbor_exposed_http_port: 81
harbor_exposed_https_port: 444

Si vous exécutez Harbor derrière un proxy, définissez harbor_behind_proxy: yes. Cela commentera les lignes nécessaires dans le Nginx de Harbor pour le faire fonctionner comme indiqué dans leur section dépannage.

Pour installer avec des extras, définissez :

harbor_extras:
    - clair
    - notary

Si vous avez déjà un Redis configuré, vous voudrez peut-être changer le nom d'hôte et le port Redis par défaut de Harbor :

# changez cela si vous avez déjà votre propre redis en cours d'exécution
harbor_redis_host: redis
harbor_redis_port: 6379

Vous pouvez également passer des arguments supplémentaires à l'installateur avec harbor_installer_extra_args (une chaîne).

Vous pouvez définir harbor_projects si vous souhaitez que des projets soient créés automatiquement une fois Harbor installé.

harbor_projects:
  - project_name: test
    is_public: "false"
    content_trust: "false"
    prevent_vul: "true"
    severity: "high"
    auto_scan: "true"

Par défaut, les utilisateurs peuvent s'auto-inscrire. Si vous préférez créer des utilisateurs automatiquement, vous devez désactiver l'auto-inscription et définir une liste d'utilisateurs. Ces utilisateurs seront créés automatiquement. Le mot de passe par défaut est "HarborUser12345".

Cette opération est idempotente.

harbor_self_registration: "off"
harbor_users:
    - username: user1
      email: [email protected]
      realname: Utilisateur Numéro 1
      role_name: développeur
      role_id: 2
      has_admin_role: true

Dépendances

Aucune.

Exemple de Playbook

---
- name: Installer et configurer 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: Utilisateur Numéro 1
        role_name: développeur
        role_id: 2
        has_admin_role: true
  roles:
    - harbor

Après l'exécution du playbook, vous devriez pouvoir naviguer vers votre hôte sur le port 80/443 et voir l'interface de Harbor. Vous pouvez vous connecter avec admin/Harbor12345. Si vous avez changé les ports exposés, n'oubliez pas de les utiliser à la place de 80/443.

Exécuter Harbor derrière votre proxy

Une configuration courante est d'exécuter Harbor derrière un proxy où le proxy est responsable de la terminaison SSL. Harbor peut être un peu délicat à gérer car il a son propre Nginx à l'intérieur et les choses peuvent devenir confuses car

a) Harbor a son propre proxy Nginx, qui doit fonctionner en tant que http b) Cependant, certaines lignes doivent être commentées dans le Nginx de Harbor si vous utilisez un proxy. c) L'URL du realm doit également être changée en ce qui est visible de l'extérieur : https.

Voici un exemple des variables qui doivent être définies dans un tel scénario :

harbor_hostname: "myharbor.company.com"
harbor_api_url: "https://myharbor.company.com/api"
harbor_behind_proxy: yes
# En interne, Harbor fonctionne toujours en http
harbor_ui_url_protocol: "http"
harbor_customize_crt: "off"
harbor_registry_realm_protocol: "https"
# Exécution du Nginx de Harbor sur des ports différents pour éviter de confliter avec 80/443
harbor_exposed_http_port: 8798
harbor_exposed_https_port: 8799
harbor_extras:
  - clair
harbor_self_registration: "off"
# Ceci est utile si vous avez déjà un conteneur redis en cours d'exécution
harbor_redis_host: redisharbor

Cela garantira que :

  • Le Nginx de Harbor obtient cette ligne commentée.
  • L'URL du realm de registre est correctement mise à jour.

C'est un peu compliqué mais c'est un compromis pour essayer de ne pas modifier les fichiers/modèles de Harbor trop, ce qui entraînerait des pannes fréquentes. Je suis ouvert aux suggestions sur la façon d'améliorer cela.

Gestion de l'état

Pour plus de commodité, ce rôle comprend des tâches pour arrêter, démarrer et redémarrer le registre en utilisant docker-compose.

Voici un playbook créé spécifiquement pour redémarrer le registre :

---
- hosts: registry
  tasks:
    - name: Redémarrer Harbor
      include_role:
        name: harbor
        tasks_from: restart

L'exécution du playbook ci-dessus redémarre effectivement tous les composants de Harbor. Cela prend en compte si vous utilisez clair et/ou notary et utilise également leurs fichiers docker-compose.

tasks_from peut être restart, start et stop.

Si vous exécutez à nouveau le playbook pour vous assurer que la liste des utilisateurs est correcte mais que vous avez déjà changé le mot de passe admin par défaut, vous pouvez définir la variable harbor_admin_password quelque part ou simplement la passer en ligne de commande avec -e "harbor_admin_password=mypass".

Informations sur l'auteur

Ce rôle a été créé en 2019 par Nicholas Amorim et est maintenant mis à jour par Pascal Watteel en 2022.

À propos du projet

Installs, Configures and Manages Harbor (docker)

Installer
ansible-galaxy install piwi3910.harbor
Licence
mit
Téléchargements
86
Propriétaire