nicholasamorim.harbor

Rol de Ansible: Harbor

Un rol de Ansible que instala Harbor en Linux.

Este rol está en fase alfa. Se aceptan problemas e implementaciones.

Requisitos

Ninguno.

Variables del Rol

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

Por defecto, el rol utiliza la IP del host actual para establecer harbor_hostname. Puedes anularlo.

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 de los valores por defecto 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 el 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, podrías querer cambiar el nombre de host y el puerto de Redis de Harbor:

# cambia estos si ya tienes tu propio redis en funcionamiento
harbor_redis_host: redis
harbor_redis_port: 6379

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

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

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

Por defecto, los usuarios pueden autorregistrarse. Si prefieres crear usuarios automáticamente, debes desactivar el autorregistro y establecer una lista de usuarios. Esos usuarios se crearán automáticamente. La contraseña por defecto es "HarborUser12345".

Esta operación es idempotente.

harbor_self_registration: "off"
harbor_users:
    - username: user1
      email: [email protected]
      realname: Usuario Número 1
      role_name: desarrollador
      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: Usuario Número 1
        role_name: desarrollador
        role_id: 2
        has_admin_role: true
  roles:
    - nicholasamorim.harbor

Una vez 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 eso ya que tiene su propio Nginx interno y las cosas pueden volverse confusas debido a

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 del realm 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 el nginx de Harbor en puertos diferentes para no entrar en conflicto 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 de redis en funcionamiento
harbor_redis_host: redisharbor
harbor_ssl_cert: /etc/ssl/certs/cert.pem
harbor_ssl_cert_key: /etc/ssl/certs/cert.key

Esto asegurará que:

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

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

Administración 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 reiniciará efectivamente todos los componentes de Harbor. Esto toma en consideración 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 asegurarte de la lista de usuarios, pero ya has cambiado la contraseña de administrador por defecto, puedes establecer la variable harbor_admin_password en algún lugar o simplemente pasarla en la línea de comando con -e "harbor_admin_password=mypass".

Información del Autor

Este rol fue creado en 2019 por Nicholas Amorim.

Acerca del proyecto

Installs, Configures and Manages Harbor (docker)

Instalar
ansible-galaxy install nicholasamorim.harbor
Licencia
mit
Descargas
1.4k
Propietario