piwi3910.harbor

Rol de Ansible: Harbor

Rol actualizado para funcionar con versiones modernas de Ansible debido a algunas deprecaciones, ya que el rol original parece no estar más actualizado.

Un rol de Ansible que instala Harbor en Linux.

Este rol está en etapa alfa. Se aceptan problemas y PRs.

Requisitos

Ninguno.

Variables del Rol

Para una lista completa, consulta defaults/main.yaml.

Por defecto, el rol usa la IP del host actual para establecer harbor_hostname. Puedes sobrescribirlo.

Para cambiar el directorio de instalación:

harbor_install_dir: /opt

Para cambiar el protocolo por defecto:

harbor_ui_url_protocol: "http"

Si deseas cambiar los puertos expuestos de NGINX de Harbor desde los valores por defecto de 80 y 443, usa:

harbor_exposed_http_port: 81
harbor_exposed_https_port: 444

Si estás ejecutando Harbor detrás de un proxy, establece harbor_behind_proxy: yes. Esto comentará las líneas necesarias en NGINX de Harbor para que funcione según su sección de solución de problemas.

Para instalar con extras, establece:

harbor_extras:
    - clair
    - notary

Si ya tienes un Redis configurado, es posible que desees cambiar el nombre de host y el puerto de Redis predeterminados de Harbor:

# cambia esto si ya tienes tu propio redis en ejecución
harbor_redis_host: redis
harbor_redis_port: 6379

También puedes pasar argumentos extra al instalador con harbor_installer_extra_args (una cadena).

Puedes definir harbor_projects si deseas que se creen proyectos automáticamente una vez que se instale Harbor.

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

Por defecto, los usuarios pueden registrarse por sí mismos. Si prefieres crear usuarios automáticamente, debes deshabilitar el auto-registro y establecer una lista de usuarios. Esos usuarios se crearán automáticamente. La contraseña predeterminada es "HarborUser12345".

Esta operación es idempotente.

harbor_self_registration: "off"
harbor_users:
    - username: user1
      email: [email protected]
      realname: User Number 1
      role_name: developer
      role_id: 2
      has_admin_role: true

Dependencias

Ninguna.

Ejemplo de Playbook

---
- name: Instalando y configurando 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: User Number 1
        role_name: developer
        role_id: 2
        has_admin_role: true
  roles:
    - harbor

Después de que se ejecute el playbook, deberías poder navegar a tu host en el puerto 80/443 y ver la interfaz de usuario de Harbor. Puedes iniciar sesión con admin/Harbor12345. Si cambiaste los puertos expuestos, recuerda usarlos en lugar de 80/443.

Ejecutando Harbor detrás de tu proxy

Una configuración común es ejecutar Harbor detrás de un proxy donde el proxy es responsable de la terminación SSL. Harbor puede ser un poco complicado con esto, ya que tiene su propio Nginx interno y las cosas pueden confundirse porque

a) Harbor tiene su propio proxy Nginx, que debe ejecutarse como http b) Sin embargo, ciertas líneas deben comentarse en el nginx de Harbor si utilizas un proxy. c) La URL de reino también debe cambiarse a lo que es externamente visible: https.

Aquí hay un ejemplo de las variables que deben configurarse en tal escenario:

harbor_hostname: "myharbor.company.com"
harbor_api_url: "https://myharbor.company.com/api"
harbor_behind_proxy: yes
# Internamente, Harbor sigue ejecutándose en http
harbor_ui_url_protocol: "http"
harbor_customize_crt: "off"
harbor_registry_realm_protocol: "https"
# Ejecutando nginx de Harbor en diferentes puertos para no confligir con 80/443
harbor_exposed_http_port: 8798
harbor_exposed_https_port: 8799
harbor_extras:
  - clair
harbor_self_registration: "off"
# Esto es útil si ya tienes un contenedor redis corriendo
harbor_redis_host: redisharbor

Esto asegurará que:

  • El nginx de Harbor tenga esta línea comentada.
  • La URL del reino del registro se actualice correctamente.

Esto es un poco complicado, pero es un compromiso para intentar no cambiar demasiado los archivos/plantillas de Harbor, ya que esto podría causar problemas frecuentes. Estoy abierto a sugerencias sobre cómo mejorar, sin embargo.

Manejo del estado

Para conveniencia, este rol incluye tareas para detener, iniciar y reiniciar el registro usando docker-compose.

Aquí hay un playbook creado específicamente para reiniciar el registro:

---
- hosts: registry
  tasks:
    - name: Reiniciando Harbor
      include_role:
        name: harbor
        tasks_from: restart

Ejecutar el playbook anterior reinicia efectivamente todos los componentes de Harbor. Esto toma en cuenta si estás utilizando clair y/o notary y utiliza sus archivos docker-compose también.

tasks_from puede ser restart, start y stop.

Si estás ejecutando el playbook nuevamente para asegurar la lista de usuarios pero ya has cambiado la contraseña del administrador predeterminada, puedes establecer la variable harbor_admin_password en algún lugar o simplemente pasarla por línea de comandos con -e "harbor_admin_password=mypass".

Información del Autor

Este rol fue creado en 2019 por Nicholas Amorim y ahora actualizado por Pascal Watteel en 2022.

Acerca del proyecto

Installs, Configures and Manages Harbor (docker)

Instalar
ansible-galaxy install piwi3910.harbor
Licencia
mit
Descargas
86
Propietario