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