Actualización automática de Drupal y sus módulos con drush
Drupal ha avanzado mucho en todo lo que se refiere a actualización automática. Sin embargo todavía es algo engorroso.
Afortunadamente existe drush que aunque es un poco lioso de instalar para aquellos que no son amigos de la consola, es una verdadera maravilla una vez instalado.
Te actualiza todo, te instala lo que quieras .. etc etc etc
Pero una vez que lo tienes no puedes evitar pensar, ¿Por qué no lo hará todo el solo? No es que sea muy recomendable si tenemos drupales muy complejos y con mucho código creado. Está claro que siempre puede haber alguna incompatibilidad, aunque yo hasta ahora no me he encontrado con ninguna y estas actualizaciones habrá que revisarlas.
Como no encontré nada por ahí decidí hacer este sencillo script que comprueba si son necesarias actualizaciones, las realiza , y te manda un correo si ha realizado alguna para que revises que todo esta bien.
Si os es útil hacédmelo saber dejando un comentario.
#!/bin/bash
#Shell que vamos a usar. Podemos averiguar el path de nuestro servidor con el comando --> which bash
# directorio donde se encuentra instalado drush, modificalo para acomodarlo al lugar en el que lo hayas instalado
drush=/home/miusuario/drush/drush
echo "Usando drush en la ruat $drush"
# Asignando a una variable la salida del drush sin provocar actualización para saber si hay algo que actualizar
updatedr=`echo "Primer drupal blabla.es" && cd ~/directorio_raiz/deldrupalblabla && $drush up -n && echo " Segundo drupal a actualizar petepete.es" && cd ~/public_html/petepete && $drush up -n -l petepete.es && echo "tercer drupal miweb.es" && cd ~/public_html/miweb && $drush up -n | mail -s "Actualizacion de core y modulos drupal realizada" micorreo@midominio.es`
#Sólo para saber si todo va bien mostramos que nos ha devuelto este comando, para saber que hay dentro de la variable.
echo 'la variable updatedr es igual a -->' $updatedr
# La palabra NOTE en mayúsculas sólo aparece cuando hay algo que actualizar en drush
# Actualmente lo he cambiado por la detección de la palabra SECURITY
updatoso=`echo $updatedr | grep SECURITY`
#Sólo por seguir el funcionamiento del script mostramos el valor almacenado. Si no hay nada que actualizar updatoso no tendrá valor
#Ésta es la frase que aparece cuando hay algo que actualizar.
#NOTE: A security update for the Drupal core is available.
#Actualmente lo he cambiado por la detección de la palabra SECURITY
echo 'updatoso igual a -->' $updatoso
#Si updatoso no tiene valor no actualizamos nada y salimos
#Si updatoso tiene algún valor realizamos actualización automática con drush -y
if [ "$updatoso" = "" ]; then
echo "hemos llegado al then"
echo "No hay nada que actualizar y salimos"
else
echo "hemos llegado al else"
echo "existen actualizaciones"
echo "Primer drupal blabla.es" && cd ~/directorio_raiz/deldrupalblabla && $drush up -y && echo " Segundo drupal a actualizar petepete.es" && cd ~/public_html/petepete && $drush up -y -l petepete.es && echo "tercer drupal miweb.es" && cd ~/public_html/miweb && $drush up -y | mail -s "Actualización de core y módulos drupal realizada" micorreo@midominio.es
fi
Sólo haceros notar que la línea de comandos drush es igual al principio que al final excepto porque le indicamos a drush que no actualize “drush up -n” mientras que la linea de comandos del final que se ejecuta sólo cuando sabemos que hay que actualizar algo usamos “drush up -y” .
Esto evita que nos esté mandando correos todos los días avisando solo cuando hay algo que actualizar.
Si como yo en algún caso usáis multi-instalaciones de drupal deberéis usar el parámetro -l por cada dominio alojado. Como ocurre en el dominio imaginario “drush up -y -l petepete.es”
Sólo os queda ponerlo en el cron (tareas programadas) de vuestro servidor , por ejemplo cada 12 horas y dormiréis mejor por las noches cuando penséis en esos drupales abandonados que ya casi no tocáis.