From 979076a2cafaff0d65f3343a4e9da52c82ff378f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Pansanel?= Date: Thu, 29 Apr 2021 14:54:17 +0200 Subject: [PATCH 1/2] French iRODS user documentation --- irods-fr/Makefile | 20 + irods-fr/_static/fg_logo.png | Bin 0 -> 39926 bytes irods-fr/conf.py | 169 +++++++++ irods-fr/guide-utilisation-fg-irods.rst | 481 ++++++++++++++++++++++++ irods-fr/index.rst | 17 + 5 files changed, 687 insertions(+) create mode 100644 irods-fr/Makefile create mode 100644 irods-fr/_static/fg_logo.png create mode 100644 irods-fr/conf.py create mode 100644 irods-fr/guide-utilisation-fg-irods.rst create mode 100644 irods-fr/index.rst diff --git a/irods-fr/Makefile b/irods-fr/Makefile new file mode 100644 index 0000000..a4380cb --- /dev/null +++ b/irods-fr/Makefile @@ -0,0 +1,20 @@ +# Minimal makefile for Sphinx documentation +# + +# You can set these variables from the command line. +SPHINXOPTS = +SPHINXBUILD = sphinx-build +SPHINXPROJ = UtilisationduserviceFG-iRODS +SOURCEDIR = . +BUILDDIR = _build + +# Put it first so that "make" without argument is like "make help". +help: + @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) + +.PHONY: help Makefile + +# Catch-all target: route all unknown targets to Sphinx using the new +# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS). +%: Makefile + @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) \ No newline at end of file diff --git a/irods-fr/_static/fg_logo.png b/irods-fr/_static/fg_logo.png new file mode 100644 index 0000000000000000000000000000000000000000..090027943842e8318cfee0cb334c85f0f0dd0b41 GIT binary patch literal 39926 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 Vp+ejqW)8qTI``_ +avec le `service iRODS +`_ +(FG-iRODS) proposé par France Grilles. Il est basé sur sur le contenu +de la documentation en ligne du service FG-iRODS rédigée par Catherine +Biscarat, Pierre Gay et Jérôme Pansanel. + +La dernière version de ce document est disponible sur : +https://github.com/FranceGrilles/user-docs/tree/main/irods-fr. + +| Copyright (c) 2021 CNRS et Université de Strasbourg. +| Ce document est distribué sous la licence `Creative Commons Attribution 4.0 International license `_. + + +Le service FG-iRODS +------------------- + +Le service FG-iRODS, proposé par l'infrastructure de recherche +`France Grilles `_ a pour objectif +de faciliter la gestion des données de recherche. Il repose sur : + +* une infrastructure de stockage géographiquement distribuée + de niveau *production* hautement disponible ; + +* l'utilisation du logiciel iRODS ; + +* un accompagnement personnalisé des utilisateurs ; + +* un ensemble d'outils permettant d'en simplifier l'usage. + +L'accès à ce service est nominatif et réalisé par une simple demande +adressée à `info@france-frilles.fr `_. +Après étude de la demande et avant création des comptes, il est demandé +aux utilisateurs : + +* de signer les conditions d'accès au service FG-iRODS : http://www.france-grilles.fr/IMG/pdf/iRODS_Service_Policy.pdf ; + +* de fournir un plan de gestion de données (PGD). Plusieurs exemples de PGD + sont disponibles sur le site de DMP OPIDoR ``_ . + +Une fois les documents reçus, l'accès au service est ouvert, les +identifiants et la documentation du service transmis aux +utilisateurs. + + +Installation du client +====================== + +Prérequis +--------- + +L'installation du client iRODS nécessite de disposer d'un poste client +fonctionnant avec le système CentOS 7 ou Ubuntu (16.04, 18.04), sur +lequel il est possible d'installer de nouveaux logiciels. + + +Environnement +------------- + +Le client en ligne de commande iRODS utilise un fichier pour stocker +la configuration pour se connecter à l'infrastructure iRODS. Ce fichier +est *~/irods/irods_environment.json* et doit être créé avec le contenu +suivant : + +.. code-block:: console + + { + "irods_host": "ccirodsfg.in2p3.fr", + "irods_port": 5555, + "irods_zone_name": "FranceGrillesZone", + "irods_user_name": "", + "irods_default_resource": "", + "irods_client_server_negotiation": "request_server_negotiation", + "irods_client_server_policy": "CS_NEG_REQUIRE", + "irods_default_hash_scheme": "SHA256", + "irods_default_number_of_transfer_threads": 4, + "irods_encryption_algorithm": "AES-256-CBC", + "irods_encryption_key_size": 32, + "irods_encryption_num_hash_rounds": 16, + "irods_encryption_salt_size": 8, + "irods_match_hash_policy": "compatible", + "irods_maximum_size_for_single_buffer_in_megabytes": 32, + "irods_ssl_verify_server": "cert" + } + +Les valeurs ** et ** doivent être remplacées par +les valeurs qui vous ont été transmises lors de l'enregistrement auprès du service. + + +Installation des paquets +------------------------ + +Les paquets pour le client iRODS sont disponibles pour les systèmes +CentOS 7, Ubuntu 16.04 et Ubuntu 18.04. + +Les instructions d'installation pour les systèmes de gestion de paquets +*APT* et *YUM* sont détaillées sur la page https://packages.irods.org. + +Une fois que le dépôt est correctement configuré, il faut installer le +paquet ``irods-icommands``. + +La vérification de l'installation du client est réalisée avec : + +.. code-block:: shell-session + + $ iinit + +La commande **iinit** permets d'ouvrir une session vers l'instance iRODS. +Elle vous demande le mot de passe pour vous connecter. Une fois que vous +avez terminé votre transfert de données, vous pouvez terminer la session +avec la commande **iexit**. + +La commande **ienv** affiche l'environnement iRODS : + +.. code-block:: console + + irods_version - 4.2.8 + irods_client_server_negotiation - request_server_negotiation + irods_encryption_key_size - 32 + irods_environment_file - /home//.irods/irods_environment.json + irods_default_hash_scheme - SHA256 + irods_default_number_of_transfer_threads - 4 + irods_host - ccirodsfg.in2p3.fr + irods_client_server_policy - CS_NEG_REQUIRE + irods_session_environment_file - /home//.irods/irods_environment.json.15934 + irods_default_resource - + irods_encryption_algorithm - AES-256-CBC + irods_encryption_num_hash_rounds - 16 + irods_encryption_salt_size - 8 + irods_match_hash_policy - compatible + irods_ssl_verify_server - cert + irods_maximum_size_for_single_buffer_in_megabytes - 32 + irods_port - 5555 + irods_user_name - + irods_zone_name - FranceGrillesZone + + +Utilisation du service FG-iRODS +=============================== + +Aide en ligne +------------- + +**ihelp** permet d'afficher la liste des commandes iRODS, ainsi que l'aide +sur une commande spécifique : + +.. code-block:: shell-session + + $ ihelp ils + Usage: ils [-ArlLv] dataObj|collection ... + Usage: ils --bundle [-r] dataObj|collection ... + Display data Objects and collections stored in irods. + Options are: + -A ACL (access control list) and inheritance format + -l long format + -L very long format + -r recursive - show subcollections + -t ticket - use a read (or write) ticket to access collection information + -v verbose + -V Very verbose + -h this help + --bundle - list the subfiles in the bundle file (usually stored in the + /myZone/bundle collection) created by iphybun command. + + iRODS Version 4.2.8 ils + +La liste complète des commandes disponibles est également disponible dans +la `documentation officielle iRODS `_. + + +Répertoire de travail +--------------------- + +La commande **ils** affiche le contenu du répertoire courant avec lequel +vous travaillez sur le système FG-iRODS (par défaut, il s'agit de votre +répertoire utilisateur) : + +.. code-block:: shell-session + + $ ils + /FranceGrillesZone/home/: + +* *FranceGrillesZone* : le nom de la zone iRODS + +* */home/* : votre répertoire personnel + + +Chargement des données +---------------------- + +Dans cette section, des fichiers vont être chargés vers FG-iRODS. Tout d'abord, +créez un fichier exemple, tel que ``foo.txt``. + +Le fichier est copié vers l'infrastructure iRODS avec la commande : + +.. code-block:: shell-session + + $ iput -K foo.txt + +L'option *-K* permet de vérifier le *checksum* et de le stocker dans la base +de données. Il est recommandé de l'utiliser systématiquement. Le fichier +est maintenant disponible sur FG-iRODS : + +.. code-block:: shell-session + + $ ils + /FranceGrillesZone/home/: + foo.txt + +Le fichier peut être supprimé avec la commande suivante : + +.. code-block:: shell-session + + $ irm foo.txt + + +Espace de nom et chemin physique +-------------------------------- + +iRODS fournit une abstraction de l'emplacement physique des fichiers. +Par exemple, ``/FranceGrillesZone/home//foo.txt`` est le chemin +logique utilisé par iRODS. Pour savoir où sont réellement stockées +les données, il faut utiliser l'option **-L** avec la commande **ils** : + +.. code-block:: shell-session + + $ ils -L + /FranceGrillesZone/home/: + 0 mcia;mcia-fgirods1 483 2020-11-20.09:30 & foo.txt + sha2:veVzp+ApMzyVRzZN0BZIkDyFuqUp/4tM4sLVACp00B8= generic /vault1/resc/home//foo.txt + + +Cette commmande nous indique que : + + * le fichier ``foo.txt`` est enregistré par FG-iRODS comme : + ``/FranceGrillesZone/home//foo.txt`` ; + + * son propriétaire est ** ; + + * il a été chargé sur la ressource de stockage *mcia* ; + + * il n'y a qu'un seul réplica, dont l'identifiant est *0* ; + + * sa taille est de 483 octets ; + + * son *checksum* a été enregistré (*sha:veVzp+ApMzyVRzZN0BZIkDyFuqUp/4tM4sLVACp00B8=*). + + +Téléchargement de données +------------------------- + +Le fichier stocké dans FG-iRODS peut être téléchargé avec : + +.. code-block:: shell-session + + $ iget -K foo.txt foo-restore.txt + +Le fichier ``foo.txt`` a été téléchargé et nommé ``foo-restore.txt``. +Avec l'option **-K** option, le *checksum* du fichier local est comparé +avec le *checksum* du fichier sur FG-iRODS. + + +Structuration des données +------------------------- + +Création d'une collection ++++++++++++++++++++++++++ + +Sur votre ordinateur, les données sont organisées dans des répertoires. +Avec iRODS, elles sont organisées de la même manière, sauf que ces dossiers +sont appelés des *collections*. + +Pour créer une collection iRODS : + +.. code-block:: shell-session + + $ imkdir mycollection + +Le fichier ``foo.txt`` peut être déplacé dans la collection +*mycollection* avec : + +.. code-block:: shell-session + + $ imv foo.txt mycollection + $ ils -L mycollection + /FranceGrillesZone/home//mycollection: + 0 mcia;mcia-fgirods1 483 2020-11-20.10:18 & foo.txt + sha2:veVzp+ApMzyVRzZN0BZIkDyFuqUp/4tM4sLVACp00B8= generic /vault1/resc/home//mycollection/foo.txt + +Vous pouver voir que le chemin logique de la collection +``/FranceGrillesZone/home//mycollection`` a un +répertoire physique : ``/vault1/resc/home//mycollection``. +Ainsi, les données n'arrivent pas n'importe où sur un serveur iRODS, +mais se placent dans cette structure. + +Les données peuvent être chargées directement dans une collection : + +.. code-block:: shell-session + + $ iput -K -r bar.txt mycollection + $ ils /FranceGrillesZone/home//mycollection + /FranceGrillesZone/home//mycollection: + bar.txt + foo.txt + + +L'option **-r** permet un chargement récursif. + + +Naviguer à travers les collections +++++++++++++++++++++++++++++++++++ + +Pour afficher votre répertoire courant sur iRODS, utilisez : + +.. code-block:: shell-session + + $ ipwd + /FranceGrillesZone/home/ + +Si vous ne spécifiez pas le chemin complet, mais uniquemenet un chemin +relatif tel que ``mycollection/``, iRDS utilise automatiquement +le répertoire courant de travail comme préfixe. Le répertoire courant +de travail peut être modifié avec : + +.. code-block:: shell-session + + $ icd mycollection + + +Gestion des métadonnées +----------------------- + +iRODS est un logiciel disposant de nombreuses fonctionnalités reposant +sur l'utilisation des métadonnées. + +Création de métadonnées ++++++++++++++++++++++++ + +Il est possible d'ajouter à chaque fichier une ou plusieurs métadonnées +représentées sous forme de triplet *Attribute*, *Value*, *Unit* (AVU). +Ces triplets sont ajoutés dans la base iCAT d'iRODS et peuvent être +recherchés. Les métadonnées sont ajoutées avec la commande : + +.. code-block:: shell-session + + $ imeta add -d foo.txt 'length' '20' 'words' + + +Le champs *Unit* peut être vide : + +.. code-block:: shell-session + + $ imeta add -d foo.txt 'project' 'example' + +Les métadonnnées peuvent également être ajoutées à une collection : + +.. code-block:: shell-session + + $ imeta add -C mycollection 'author' 'John Smith' + + +Affichage des métadonnées ++++++++++++++++++++++++++ + +Pour afficher les métadonnées d'un objet de données (fichier), il +faut entrer : + +.. code-block:: shell-session + + $ imeta ls -d foo.txt + AVUs defined for dataObj /FranceGrillesZone/home//mycollection/foo.txt: + attribute: length + value: 20 + units: words + +et pour une collection, la commande suivante : + +.. code-block:: shell-session + + $ imeta ls -C mycollection + AVUs defined for collection /FranceGrillesZone/home//mycollection: + attribute: author + value: John Smith + units: + + +Recherche avec les métadonnées +------------------------------ + +La recherche de fichiers ou de collections à l'aide des métadonnées +est effectuée avec la commande suivante : + +.. code-block:: shell-session + + $ imeta qu -d 'length' = '20' + collection: /FranceGrillesZone/home//mycollection + dataObj: foo.txt + + + +Recherche avancée +----------------- + +Afin d'effectuer une recherche plus fine de fichiers ou de collections, +il est possible d'interroger directement le calagoue iCAT avec la +commande **iquest** : + +.. code-block:: shell-session + + $ iquest "select COLL_NAME, META_COLL_ATTR_VALUE where META_COLL_ATTR_NAME like 'author'" + COLL_NAME = /FranceGrillesZone/home//mycollection + META_COLL_ATTR_VALUE = John Smith + ------------------------------------------------------------ + +Les résultats peuvent être filtrés en fonction d'une valeur spécifique : + +.. code-block:: shell-session + + $ iquest "select COLL_NAME, META_COLL_ATTR_VALUE where META_COLL_ATTR_NAME like 'author' \ + and META_COLL_ATTR_VALUE like 'John%'" + COLL_NAME = /FranceGrillesZone/home//mycollection + META_COLL_ATTR_VALUE = John Smith + ------------------------------------------------------------ + + +**NOTE**: le caractère '%' est un caractère générique (*wildcard*). + +Si vous recherchez un objet de données plutôt qu'une collection, il +faut remplacer *META_COLL_ATTR_NAME* par *META_DATA_ATTR_NAME*. De +nombreux attributs peuvent être utilisés pour les recherches. Pour +les afficher, utilisez : + +.. code-block:: shell-session + + $ iquest attrs + + +Contrôle d'accès +---------------- + +iRODS propose un mécanisme de droits d'accès similaire au système +disponible sur les systèmes UNIX (ACL). Il permet de contrôler les +droits de lecture, d'écriture et de propriété. Pour afficher les droits +d'accès à la collection actuelle : + +.. code-block:: shell-session + + $ ils -r -A + /FranceGrillesZone/home//mycollection: + ACL - #FranceGrillesZone:own + Inheritance - Disabled + bar.txt + ACL - #FranceGrillesZone:own + foo.txt + ACL - #FranceGrillesZone:own + + +Les droits d'accès à un fichier sont spécifiés après le mot-clé *ACL*. +Dans cet exemple, ** est propriétaire de tous les fichiers +affichés. Aucune autre personne ne peut y accéder. + +Les collections ont un attribut *Inheritance*. Lorsque la valeur de cet +attribut est égale à *Enabled*, l'ensemble du contenu de la collection +hérite des droits d'accès de la collection. Cet héritage ne s'applique +qu'aux nouveaux fichiers copiés dans la collection. + +La modification des droits d'accès pour autoriser un collègue à accéder +à ses données se fait avec : + +.. code-block:: shell-session + + $ ichmod read foo.txt + +L'utilisateur ** peut maintenant accéder en lecture au +fichier ``foo.txt``. diff --git a/irods-fr/index.rst b/irods-fr/index.rst new file mode 100644 index 0000000..eac6179 --- /dev/null +++ b/irods-fr/index.rst @@ -0,0 +1,17 @@ +.. + Copyright 2021 CNRS and University of Strasbourg + + This work is licensed under the Creative Commons Attribution 4.0 + International License. To view a copy of this license, visit + http://creativecommons.org/licenses/by/4.0/ or send a letter to Creative + Commons, PO Box 1866, Mountain View, CA 94042, USA. + +======================================= +Guide d'utilisation du service FG-iRODS +======================================= + +.. toctree:: + :maxdepth: 2 + :caption: Sommaire + + guide-utilisation-fg-irods.rst From 062db37e2acd41353b233ba49f80b6c9705f1f05 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Pansanel?= Date: Thu, 29 Apr 2021 16:02:36 +0200 Subject: [PATCH 2/2] Fix some typo --- README.rst | 4 +++- irods-fr/guide-utilisation-fg-irods.rst | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/README.rst b/README.rst index a6e06d1..16ab40c 100644 --- a/README.rst +++ b/README.rst @@ -3,7 +3,9 @@ Documentation utilisateur Les documentations pour les utilisateurs des services France Grilles hébergés sur cet entrepôt sont : -* ̀ FG-iRODS Users Guide `_ (en) + + * `FG-iRODS Users Guide `_ (en) + * `Guide d'utilisation du service FG-iRODS `_ (fr) La documentation est rédigée à l'aide du langage de balisage léger `reStructuredTExt `_. diff --git a/irods-fr/guide-utilisation-fg-irods.rst b/irods-fr/guide-utilisation-fg-irods.rst index 3f316e4..2623e1d 100644 --- a/irods-fr/guide-utilisation-fg-irods.rst +++ b/irods-fr/guide-utilisation-fg-irods.rst @@ -408,7 +408,7 @@ Recherche avancée ----------------- Afin d'effectuer une recherche plus fine de fichiers ou de collections, -il est possible d'interroger directement le calagoue iCAT avec la +il est possible d'interroger directement le catalogue iCAT avec la commande **iquest** : .. code-block:: shell-session