1. Copia de Seguridad de Gitlab
sudo gitlab-backup create
sudo tar -czf /var/opt/gitlab/backups/gitlab_config_backup.tar.gz /etc/gitlab
2. Actualizar GitLab
Vamos al botón qe hay abajo a la izquierda "Admin" y nos aparece na pantalla con múltiples datos. En concreto en la zona "GitLab Version"- "Components", si hay alguna versión nueva nos lo dice, y es conveniene actualizarla.
En este caso no aparece.
Para actualizar hay que meterse en el servidor por ssh
ssh usuario@192.XXX.XXX.XXX
y dentro del servidor LDAP se ejecuta
sudo apt update sudo apt dist-upgrade
A veces puede fallar, pues a veces no quiere que cambiemos directamente a la versión actual sin pasar por versiones intermedias. En este caso habría que consultar los logs para ir migrando escalonadamente, y preguntar al Chat GPT los comandos para hacerlo
Pero hay que hacer una copia de seguridad de los ficheros de Gitlab
3. Definir el email
gitlab_rails['smtp_enable'] = true gitlab_rails['smtp_address'] = "smtp.gmail.com" gitlab_rails['smtp_port'] = 587 gitlab_rails['smtp_user_name'] = "tu_correo@gmail.com" gitlab_rails['smtp_password'] = "tu_contraseña" gitlab_rails['smtp_domain'] = "gmail.com" gitlab_rails['smtp_authentication'] = "login" gitlab_rails['smtp_enable_starttls_auto'] = true gitlab_rails['smtp_tls'] = false gitlab_rails['smtp_openssl_verify_mode'] = "peer" #------------------------------------- # Estos datos pueden ser importantes #------------------------------------- gitlab_rails['gitlab_email_from'] = 'gitlab@tu-dominio.com' gitlab_rails['gitlab_email_display_name'] = 'GitLab Notifications'
sudo gitlab-ctl reconfigure
sudo gitlab-rails console
Notify.test_email('correo_destinatario@dominio.com', 'Prueba de correo', 'Esto es un correo de prueba de GitLab.').deliver_now
4. Runners
Podemos tener por ejemplo un "branch" de "development" y otra "branch" de "deployment". Si cada vez que actualizamos la "branc" de despliegue, queremos actualizarla en el servidor que va a desplegar dicha apliación, entonces podemos utilizar runners.
He pedido a chat GPT que me haga un runner para que actualice la carpeta "/home/deploys" del servidor del despliegue "myserver.midominio.es"
Y me contesta:
1. Paso 1:
Se crea el archivo ".gitlab-ci.yml" en el servidor gitlab
stages:
- deploy
deploy_to_server:
stage: deploy
only:
- deploy
script:
- echo "Iniciando el despliegue en el servidor remoto..."
- ssh -o StrictHostKeyChecking=no user@myserver.dominio.es 'rm -rf /home/deploys/*'
- scp -r . user@myserver.dominio.es:/home/deploys/
environment:
name: production
url: http://myserver.dominio.es
Siendo:
Stages: Define una etapa llamada deploy.
Job (deploy_to_server):
stage: Este trabajo pertenece a la etapa deploy.
only: El trabajo solo se ejecutará cuando se actualice la branch deploy.
script:
Elimina el contenido existente de /home/deploys en el servidor remoto.
Usa scp para copiar los archivos del repositorio al servidor remoto.
environment: Define que este trabajo pertenece al entorno production y establece la URL correspondiente.
2. Paso 2
Se configura el servidor remoto de manera que pueda recibir conexiones SSH y:
Se crea un usuario para depliegue, seleda permiso al directorio de despliegue
sudo adduser user sudo mkdir -p /home/deploys sudo chown -R user:user /home/deploys
Hay que permitir la conexión por SSH, para ello se agrea la clave pública de GitLab Runner al archivo ~/.ssh/authorized_keys del usuario user.
3. Paso 3
Para configurar las claves SSH en GitLab
En el servidor gitlab, ejecutar:
ssh-keygen -t ed25519 -C "gitlab-runner"
Agrega la clave privada (la que NO termina en ".pub") en una variable protegida en Gitlab. Para ello apretamos el botón "Admin" de la parte inferior izquierda y luego "Settings"
En "Settings" hay un desplegable que tiene además "CI/CD", que abre una pantalla que entre otras cosas tiene "Variables" y le damos al botón de la derecha "Add variable" que le llamamos "SSH_PRIVATE_KEY" y le pegamos el contenido de la clave privada.
Ahora agregamos la clave pública (la que termina en ".pub") al archivo ~/.ssh/authorized_keys del usuario user en el servidor remoto.
4. Paso 4
Actualizamos el fichero ".gitlab-ci.yml" en el servidor gitlab para usar la clave SSH
stages:
- deploy
deploy_to_server:
stage: deploy
only:
- deploy
before_script:
- mkdir -p ~/.ssh
- echo "$SSH_PRIVATE_KEY" | tr -d '\r' > ~/.ssh/id_ed25519
- chmod 600 ~/.ssh/id_ed25519
- ssh-keyscan -H myserver.dominio.es >> ~/.ssh/known_hosts
script:
- echo "Iniciando el despliegue en el servidor remoto..."
- ssh user@myserver.dominio.es 'rm -rf /home/deploys/*'
- scp -r . user@myserver.dominio.es:/home/deploys/
environment:
name: production
url: http://myserver.dominio.es
Notas Finales:
Seguridad:
Las variables protegidas deben configurarse como "Masked" y "Protected" en GitLab.
Asegúrate de que solo los usuarios autorizados puedan acceder a las variables y la branch deploy.
Pruebas:
Antes de activar este pipeline, pruébalo manualmente ejecutando los comandos SSH y scp desde el Runner o desde tu máquina local.
Con esto, tu pipeline debería estar listo para actualizar automáticamente el servidor remoto cada vez que se realice un push en la branch deploy.
No hay comentarios :
Publicar un comentario