nicholasamorim.harbor

Rôle Ansible : Harbor

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 le 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 de NGINX d'Harbor 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 d'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 en cours d'exécution, vous voudrez peut-être changer le nom d'hôte et le port Redis par défaut d'Harbor :

# changez ceci 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 automatiquement créés 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'enregistrer eux-mêmes. Si vous préférez créer des utilisateurs automatiquement, vous devez désactiver l'auto-enregistrement 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:
    - nicholasamorim.harbor

Après l'exécution du playbook, vous devriez être en mesure d'accéder à votre hôte sur le port 80/443 et de voir l'interface utilisateur d'Harbor. Vous pouvez vous connecter avec admin/Harbor12345. Si vous avez changé les ports exposés, n'oubliez pas d'utiliser ceux-ci à la place de 80/443.

Exécution de Harbor derrière votre proxy

Une configuration courante consiste à exécuter Harbor derrière un proxy où le proxy est responsable de la terminaison SSL. Harbor peut être un peu compliqué avec cela, 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 qu'http b) Cependant, certaines lignes doivent être commentées dans le Nginx d'Harbor si vous utilisez un proxy. c) L'URL de domaine doit également être changée en ce qui est visible à 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 sur http
harbor_ui_url_protocol: "http"
harbor_customize_crt: "off"
harbor_registry_realm_protocol: "https"
# Exécuter le Nginx d'Harbor sur des ports différents pour ne pas entrer en conflit avec 80/443
harbor_exposed_http_port: 8798
harbor_exposed_https_port: 8799
harbor_extras:
  - clair
harbor_self_registration: "off"
# Cela est utile si vous avez déjà un conteneur Redis en cours d'exécution
harbor_redis_host: redisharbor
harbor_ssl_cert: /etc/ssl/certs/cert.pem
harbor_ssl_cert_key: /etc/ssl/certs/cert.key

Cela garantira que :

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

C'est un peu compliqué, mais c'est un compromis pour essayer de ne pas changer trop les fichiers/templates d'Harbor, car cela 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 inclut 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 de ce playbook redémarre efficacement 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 de la liste des utilisateurs mais que vous avez déjà changé le mot de passe administrateur 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.

À propos du projet

Installs, Configures and Manages Harbor (docker)

Installer
ansible-galaxy install nicholasamorim.harbor
Licence
mit
Téléchargements
1.4k
Propriétaire