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.
Installs, Configures and Manages Harbor (docker)
ansible-galaxy install piwi3910.harbor