Skip to content

Phase 4.5 — Harbor

Provisionnement de la VM via OpenTofu, configuration via Ansible.


Vue d'ensemble

Harbor stocke les images Docker des applications Python (FastAPI, Streamlit, Flask).

Rôle Valeur
VM 201 — harbor (192.168.1.30)
Nœud Proxmox pve02
Groupe Ansible harbor
URL https://harbor.mounik.ovh
Stockage 80 Go
Auth OIDC via Keycloak

1. Provisionnement OpenTofu

# harbor.tf — appel au module vm
module "harbor" {
  source = "./modules/vm"

  name        = "harbor"
  target_node = "pve02"
  vmid        = 201
  cores       = 2
  memory      = 4096
  balloon     = 2048
  disk_size   = "80G"
  ip          = "192.168.1.30"
  ssh_key     = local.ssh_key

  depends_on = [module.gitlab]
}

Exécution :

cd homelab-proxmox/opentofu
tofu plan -target=module.harbor -out=tfplan
tofu apply tfplan

2. Configuration Ansible

Le playbook ansible/playbooks/05-harbor.yml applique le rôle harbor :

ansible-playbook -i inventory/homelab.yml playbooks/05-harbor.yml

Le rôle harbor : 1. Installe Docker et docker-compose-v2 2. Télécharge et extrait l'installeur offline Harbor 3. Déploie harbor.yml (template Jinja2 — OIDC Keycloak, base de données) 4. Lance install.sh --with-trivy

Variables sensibles : harbor_admin_password, harbor_db_password, harbor_oidc_secret (via Vault).


3. Projets

Projet Type Description
fastapi Privé Images FastAPI
streamlit Privé Images Streamlit
flask Privé Images Flask

4. Vérification

docker login harbor.mounik.ovh -u admin
docker pull hello-world
docker tag hello-world harbor.mounik.ovh/library/hello-world
docker push harbor.mounik.ovh/library/hello-world

Livrable : Harbor déployé avec Trivy, OIDC Keycloak, projets créés.


Pour aller plus loin