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