Project

General

Profile

Migration IRODS (Nov 2024)

Version 4.3.3: https://docs.irods.org/4.3.3/getting_started/installation/

Mise à jour de iRODS en version 4.3.2 (Ressources et Catalogue)

# dnf update 'irods*'
# service irods restart
# rpm -q irods-server

Tests

imkdir test-migration-nov2024
icd test-migration-nov2024
date > DATE
truncate -s 1G BIG
md5sum DATE BIG
iput -K -R <RESSOURCE> DATE
iput -K -R <RESSOURCE> BIG
cd /tmp
iget DATE
iget BIG
md5sum DATE BIG
irm DATE
irm BIG

Sauvegardes pour chaque ressource

/etc/pki/tls/
/etc/irods
/var/lib/irods

Maintenance sur le catalogue

Mettre les ressources offline:

# admin modresc ... status down

Ré-installation de l'OS en Alma Linux 8

https://docs.irods.org/4.3.3/release_notes/

The latest binary packages for AlmaLinux8 , RockyLinux9, Ubuntu20, Ubuntu22, Ubuntu24, Debian11, and Debian12 are available at https://packages.irods.org/.

ISO

https://mirror.in2p3.fr/pub/linux/almalinux/8/isos/x86_64/AlmaLinux-8-latest-x86_64-minimal.iso

Installation

Il faut installer dhclient.

Le fichier /etc/hostname doit contenir le nom complet de la machine.

La commande hostname doit retourner le nom complet de la machine.

Le fichier /etc/hosts doit contenir une ligne:
<IP> <nom complet> <nom>

Configurer chrony

# dnf install chrony
# systemctl enable chronyd

Fichier /etc/chrony.conf

server <NTP> iburst

driftfile /var/lib/chrony/drift

makestep 1.0 3

rtcsync

keyfile /etc/chrony.keys

leapsectz right/UTC

logdir /var/log/chrony

Vérification

# systemctl restart chronyd
# timedatectl set-timezone Europe/Paris
# timedatectl set-ntp on
# chronyc sources

SELinux

Fichier /etc/selinux/config

SELINUX=permissive
SELINUXTYPE=targeted

Commandes

# systemctl stop --now dnf-makecache.timer
# systemctl disable dnf-makecache.timer
# dnf update

Firewall

# firewall-cmd --zone=public --add-port=22/tcp
# firewall-cmd --zone=public --add-port=5555/tcp
# firewall-cmd --zone=public --add-port=5666/tcp
# firewall-cmd --zone=public --add-port=24000-25000/tcp

# firewall-cmd --runtime-to-permanent
# firewall-cmd --get-default-zone

Vérification:

# firewall-cmd --zone=public --list-ports
22/tcp 5555/tcp 5666/tcp 24000-25000/tcp

Installation d'une Ressource iRODS en version 4.3.3

Note: Il faut installer les ressources seulement une fois que le catalogue sera réinstallé.

EPEL

# dnf install epel-release
# dnf update

Repository et paquets iRODS

# rpm --import https://packages.irods.org/irods-signing-key.asc
# wget https://packages.irods.org/renci-irods.yum.repo 
# mv renci-irods.yum.repo /etc/yum.repos.d/

# dnf install irods-server irods-icommands

Certificats

Récupérer les certificats dans la sauvegarde:

/etc/pki/tls/private/sbgirods1.in2p3.fr.key
/etc/pki/tls/certs/sbgirods1.in2p3.fr.pem

# cp -p sbgirods1.in2p3.fr.key /etc/pki/tls/private
# chown irods:root /etc/pki/tls/private/sbgirods1.in2p3.fr.key
# chmod 0400 /etc/pki/tls/private/sbgirods1.in2p3.fr.key

# cp -p sbgirods1.in2p3.fr.pem /etc/pki/tls/certs/
# chown irods:root /etc/pki/tls/certs/sbgirods1.in2p3.fr.pem
# chmod 0444 /etc/pki/tls/certs/sbgirods1.in2p3.fr.pem

De même avec:

/etc/irods/dhparams.pem
/etc/pki/tls/irods.chain
/etc/pki/tls/certs/geant_ov_rsa_ca_4.pem

Note: Création du fichier irods.chain:
https://docs.irods.org/4.3.3/plugins/pluggable_authentication/#create-the-certificate-chain-file

# chown irods:irods /etc/irods/dhparams.pem

Droits des fichiers:

-r--r--r--. 1 irods root 2626 Jun  6 16:30 /etc/pki/tls/certs/sbgirods1.in2p3.fr.pem
-r--------. 1 irods root 1.7K Jun  6 16:30 /etc/pki/tls/private/sbgirods1.in2p3.fr.key
-rw-r--r--. 1 root  root 2.6K Jun  6 16:52 /etc/pki/tls/irods.chain
-rw-r--r--. 1 irods irods 424 Sep 25 18:49 /etc/irods/dhparams.pem
-rw-r--r--. 1 root  root 2.4K Jun 23  2020 /etc/pki/tls/certs/geant_ov_rsa_ca_4.pem

Fichier /etc/rsyslog.d/00-irods.conf

$FileCreateMode 0644
$DirCreateMode 0755
$Umask 0000
$template irods_format,"%msg%\n" 
:programname,startswith,"irodsServer" /var/log/irods/irods.log;irods_format
& stop
:programname,startswith,"irodsDelayServer" /var/log/irods/irods.log;irods_format
& stop
# mkdir /var/log/irods

Configuration de iRODS (Ressource)

# python3 /var/lib/irods/scripts/setup_irods.py

Choisir consumer [2]

iRODS server's zone name [tempZone]: FranceGrillesZone
iRODS catalog (ICAT) host: sbgirodsfg.in2p3.fr
iRODS server's port [1247]: 5555
iRODS port range (begin) [20000]: 24000
iRODS port range (end) [20199]: 25000

# Les valeurs suivantes sont dans le fichier /etc/irods/server_config.json dans la sauvegarde
iRODS server's zone key: 
iRODS server's negotiation key (32 characters): 
Control Plane key (32 characters): 
iRODS server's administrator password: 

Fichier /etc/irods/core.re

Remplacer la ligne avec ceci:

acPreConnect(*OUT) { *OUT="CS_NEG_REQUIRE"; }

Et remplacer demoResc avec votre ressource par défaut:

https://docs.irods.org/4.3.3/system_overview/best_practices/#do-not-use-demoresc-in-production

acSetRescSchemeForCreate {msiSetDefaultResc("...","null"); }
acSetRescSchemeForRepl {msiSetDefaultResc("...","null"); }
acSetNumThreads {msiSetNumThreads("default","default","..."); }

Fichier /var/lib/irods/.irods/irods_environment.json à restaurer de la sauvegarde

Il doit contenir (à adapter selon vos certificats et CAs, voir documentation de irods pour la création du irods.chain):

    "irods_client_server_policy": "CS_NEG_REQUIRE",
...
    "irods_ssl_ca_certificate_file": "/etc/pki/tls/certs/geant_ov_rsa_ca_4.pem",
    "irods_ssl_certificate_chain_file": "/etc/pki/tls/irods.chain",
    "irods_ssl_certificate_key_file": "/etc/pki/tls/private/sbgirodsfg.in2p3.fr.key",
...

Démarrage du service

Pour démarrer le service surtout ne pas utiliser

# systemctl start  irods
# systemctl status irods
# systemctl enable irods

Il faut que ce soit l'utilisateur irods avec:

$ ./irodsctl start
$ ./irodsctl status

Note: Si jamais la configuration se passe mal il faut nous avertir car une ressource fantôme est rajoutée dans le catalogue et il faut la supprimer avec:

# iadmin rmresc ...

Tests

imkdir test-migration
icd test-migration
date > DATE
truncate -s 1G BIG
md5sum DATE BIG
iput -K -R <RESSOURCE> DATE
iput -K -R <RESSOURCE> BIG
cd /tmp
iget DATE
iget BIG
md5sum DATE BIG

Bloquer les mises à jour de irods

Pour éviter que des update ne mettent à jour irods.

Dans /etc/dnf/dnf.conf

exclude=irods-*

Bien sûr commenter lors des mises à jour de irods