El passat 24 d’octubre vam fer una trobada tècnica de Caliu per actualitzar el sistema del servidor a Ubuntu precise perquè la lucid havia deixat de tenir manteniment des de l’estiu i ja no se’n publiquen actualitzacions de cap tipus. Aquest cop ens trobà vem lluny del servidor i vam estar treballant tota l’estona en remot.
El primer que vam fer va ser connectar al servidor de mà quines virtuals per poder tenir accés a la consola del servidor si feia falta. Tot seguit vam obrir un terminal de root amb byobu per si es tallava la connexió i vam fer una còpia de seguretat de totes les bases de dades del mysql:
mysqlshow
for D in A B C D; do \
echo -n "Dumping $D... "; \
mysqldump --opt "$D" | \
gzip -9c > "$D"-20151024.sql.gz; \
echo $?; \
done
Aleshores vam connectar al servidor de mà quines virtuals per crear snapshots dels volums lògics de la mà quina virtual i d’aquesta manera tenir una còpia de seguretat immediata:
lvs
lvcreate -s -L 256.00m -n backup_lessig_boot larry/lessig_boot
lvcreate -s -L 20.00g -n backup_lessig_sistema larry/lessig_sistema
lvs
A continuació vam aturar els serveis (apache2, nginx, mysql, memcached, monit) i els crons que actualitzen els miralls. Ens vam assegurar que tenÃem seleccionada la versió LTS i vam executar l’ordre d’actualitzar el servidor:
grep ^Prompt=lts /etc/update-manager/release-upgrades
do-release-upgrade
En aquest punt el procés d’actualització va canviar el fitxer /etc/apt/sources.list
i va començar a descarregar paquets però es va aturar queixant-se que no podia validar-ne alguns. Vam trobar en diferents fòrums una solució que havia funcionat per algunes persones però que no volÃem aplicar sense entendre quin era el problema perquè justament la grà cia és que els paquets que s’instal·len es puguin verificar. La solució deia que calia posar això al fitxer /etc/update-manage/release-upgrades.d/unauth.conf
:
[Distro]
AllowUnauthenticated=yes
Vam dedicar un parell d’hores a mirar el problema amb detall, examinant els scripts del procés d’actualització i modificant-los per obtenir més informació. La conclusió a la que vam arribar és que era un bug i com que la solució que comentà vem a dalt tampoc fa funcionar, vam tirar pel dret i vam modificar l’script d’actualització que descarrega el do-release-upgrade
(en negreta la lÃnia que vam afegir, teniu els detalls al bug que comentà vem abans):
return True
# check if the user overwrote the unauthenticated warning
try:
b = self.config.getboolean("Distro","AllowUnauthenticated")
if b:
logging.warning("AllowUnauthenticated set!")
return True
Amb aquest canvi, l’actualització es va fer amb èxit. Durant un moment es va perdre la sessió remota d’ssh però afortunadament vam poder recuperar el byobu
des de la consola de la mà quina virtual.
En aquest punt, vam revisar tots els canvis que s’havien produït o que calia fer en els fitxers de configuració. Per trobar els fitxers afectats vam utilitzar aquesta ordre:
find /etc -name '*.dpkg-*' -o -name '*.ucf-*'
Es tractava d’afegir els canvis nous (els dels fitxers .dpkg-new
o .ucf-*
) als fitxers de configutació existents o d’incorporar la configuració antiga (els fitxers .dpkg-old
) als nous fitxers de configuració. Una feinada considerable però de vegades important i que facilita les actualitzacions posteriors.
Per finalitzar vam fer net de paquets sobrers i serveis obsolets, vam tornar a posar en marxa els serveis i vam verificar que tot funcionava correctament.