Commit b243aa6e authored by LUCAS VINCENT's avatar LUCAS VINCENT
Browse files

Merge branch 'feature/doc_style' into develop

parents b529093b a985d896
Pipeline #17610 passed with stages
in 49 seconds
Title: How to use docker / singularity on the HPC cluster
Date: 2019-01-24
category: hpc
Category: hpc
Slug: singularity
Authors: David Brusson, Vincent Lucas
## Requirements
Send us your ssh public-key (cf. section "How to generate a ssh key").
* Contact us in order to deploy your [ssh key](ssh_key.html) for this service.
* Do not forget to run and add your [ssh agent](ssh_key.html) when connecting to
hpc-login.u-strasbg.fr.
* Load the singularity module :
```bash
module load singularity/singularity
```
## Create a singularity image
* Create a directory and move to it.
* Create a image definition file `<project_name>.def` (e.g. [exemple.def](https://git.unistra.fr/HPC/singularity/blob/master/examples/simple/simple.def))
* Generate the singularity image with the following script:
```bash
module load singularity/singularity-3.0.3
hpc_login_gen.sh <project_name>
```
* When successful, the image is generated as `<project_name>.sif`
### Test a singularity image (run on your PC or hpc-login)
```bash
module load singularity/singularity-3.0.3
singularity run <project_name>.sif
```
......@@ -30,7 +35,7 @@ This is a simple sbatch script example:
#SBATCH -N 8 # Request 8 cores
module load singularity/singularity-3.0.3
module load singularity/singularity
singularity run <project_name>.sif
```
......@@ -104,15 +109,9 @@ From: hpc-singularity.di.unistra.fr:5000/<my_image>
```
* Generate the singularity image with the following script:
```bash
hpc_login_docker.sh <my_image.tar> <my_image.def>
hpc_login_docker.sh <project_name>
```
* When successful, the image is generated as `<my_image>.sif`
## How to generate a ssh key
```bash
ssh-keygen -t rsa -b 4096
```
## Singularity help pages
[Singularity official documentation](https://www.sylabs.io/guides/3.0/user-guide/)
Title: Documentation sur les clefs ssh publique et privée
Date: 2019-02-13
category: hpc
Slug: ssh_key
Authors: David Brusson, Michel Ringenbach, Vincent Lucas
## Préambule
Pour des raisons de sécurité, la connexion par mot de passe au cluster n'est pas
autorisée.
Seul est autorisé le mécanisme des clefs privée/publique, qui fonctionne sur le
principe :
* d'une clef privée ne quittant jamais votre poste de travail (PC, ordinateur
portable,...)
* d'une clef publique installée sous votre compte sur le serveur sur lequel vous
souhaitez vous connecter (hpc-login.u-strasbg.fr dans le cas du cluster de
calcul).
Une même paire de clef peut être utilisé pour se connecter à différents
serveurs.
La clef publique est à transmettre par messagerie, soit sous forme pièce-jointe,
soit simplement copiée dans le corps du mail.
### Mise en garde
Attention: dans tous les cas lisez la première mise en garde ci-dessous :
* si vous utilisez déjà le mécanisme des clef, mais que
votre clef privée n'est pas sécurisée par une passphrase, il faudra
suivre la procédure ci-dessous "Sécuriser une clef privée existante avec
une passphrase".
* en aucun cas il ne faut installer votre clef privée au sein du cluster.
Celle-ci doit être présente uniquement sur votre poste de travail.
Une fois votre clef publique installée sur le cluster, lors d'une
connexion, le système vous demandera la passphrase de la clef privée, et
non pas le mot de passe sur le cluster (qui sera de toute façon bloqué).
Si cela vous semble fastidieux, vous pouvez utiliser un "agent" ssh pour
stocker la passphrase (le temps de la session de travail). Voir
ci-dessous "Utiliser un agent pour stocker la passphrase".
## Générer une paire de clefs publique et privée
### Sur un poste Linux ou MacOS
```bash
cd
ssh-keygen -t rsa -b 4096
```
* à la question "Enter file in which to save the key", appuyez sur la touche Entrée pour le choix par défaut
* à la question "Enter passphrase", entrez un mot de passe, de préférence sous la forme d'une phrase
La clef publique utiliser pour le cluster se trouve dans le fichier indiqué par "Your public key has been saved in"
### Sur un poste Windows
* Utiliser l'utilitaire PuTTYgen pour générer vos clés :
https://winscp.net/eng/download.php
* Une fois PuTTYgen lancé, générer un jeu de clés de type SSH-2 RSA de
taille 2048.
* La clef publique à installer sur le cluster se trouve dans champ
suivant :
      "*Public key for pasting into OpenSSH authorized_keys file*".
* Il suffit de la récupérer par copier/coller.
## Utiliser un agent pour stocker la passphrase
Certains système (comme Ubuntu) gèrent cet aspect automatiquement.
Si ce n'est pas le cas, sur votre poste de travail :
* Démarrage de l'agent :
```bash
ssh-agent > a; sh ./a
```
* Enregistrement de la passphrase (pour la durée de vie de votre session sur le poste de travail) :
```bash
ssh-add
```
La séquence ci-dessus peut être automatisée via le script de démarrage
de votre session.
## Sécuriser une clef privée existante avec une passphrase
Cette opération protège votre clef privée en cas de vol de votre poste,
ou simplement d'accès en-dehors de votre présence.
Sur votre poste de travail :
```bash
ssh-keygen -p
Répondre aux questions
```
## Cas particulier
### FileZilla
Dans certains cas, FileZilla n'est compatible qu'avec le format de clé
.ppk (Putty Private Key).
Le plus simple est :
* d'aller dans le gestionnaire de site de FileZilla (Fichier > Gestionnaire de Sites),
* puis pour le site correspondant à hpc-login, choisir le type d'authentification "Fichier de clé".
* Ensuite, il faut chercher la clé privée qui devrait être .ssh/id_rsa (il faudra sans doute taper ceci à
la main, FileZilla ne va pas trouver le répertoire .ssh tout seul).
* Il y aura un message qui expliquera que le format de clé n'est pas pris en
charge, mais qu'il peut être converti : valider, puis nommer la nouvelle
clé comme on le souhaite (par exemple id_rsa.ppk).
### x2go
Cocher la case :
* Essayer l'authentification automatique (via l'agent SSH ou la clé SSH par défaut)
Si la clef n'est pas dans un emplacement standard, il faut de plus
indiquer sa localisation dans le champ :
* Utiliser une clé RSA/DSA pour la connexion SSH
### plusieurs postes de travail
Si vous avez plusieurs postes de travail, deux options s'offrent à vous :
Vous pouvez générer autant de paires de clef que de postes de travail,
et rajouter les nouvelles clef publiques dans
hpc-login:~/.ssh/autorized_keys
Ou encore n'utiliser qu'une seule paire de clef, mais dupliquer la clef
privée sur tous les postes. Attention dans ce cas à ne pas faire
transiter la clef privée par le réseau, mais via par exemple une clef
USB et nettoyer la clef USB après transfert.
La première méthode est recommandée. Vous pouvez pour vous simplifier la
vie et utiliser la même passphrase pour toutes les clef privées.
......@@ -34,3 +34,5 @@ DEFAULT_PAGINATION = 10
# Uncomment following line if you want document-relative URLs when developing
#RELATIVE_URLS = True
THEME = "./theme_unistra"
:root {
--color-blue: rgb(15, 101, 165);
--color-dark-blue: rgb(13, 87, 142);
--color-gray: rgb(236, 238, 232);
--color-dark-gray: rgb(196, 198, 192);
}
body {
font-family:"Unistra A",Arial,sans-serif;
font-size: 100%;
color: black;
background-color: var(--color-dark-blue);
max-width: 1024px;
margin: auto;
/*background: url(../images/sculpture.jpg) left top no-repeat;
background-size: 25%;*/
}
body * {
color: black;
background-color: white;
}
header {
text-align: center;
}
footer {
text-align: right;
}
section {
background-color: white;
margin: 5px 0px 5px;
/*background-color: var(--color-gray);*/
padding-left: 10px;
padding-right: 10px;
border-style: solid;
border-width: 1px;
}
article {
background-color: white;
margin: 5px;
padding-left: 10px;
padding-right: 10px;
background-color: white;
text-align: justify;
}
nav {
width: 100%;
top: 0;
position: sticky;
color: black;
background-color: white;
border-bottom-style: solid;
border-bottom-width: 1px;
background-attachment: scroll;
background-clip: border-box;
text-align: center;
font-size: 1.2em;
}
nav ul {
padding: 0;
}
nav ul li {
display: inline;
margin: 5px;
}
h3, h4, h5, h6 {
color: black;
background-color: var(--color-gray);
padding-left: 5px;
padding-right: 5px;
font-variant: small-caps;
}
/*h2 {
color: white;
background-color: var(--color-blue);
text-align: center;
font-variant: small-caps;
}*/
h1, h2, h1>a, h2>a{
color: white;
background-color: var(--color-dark-blue);
text-align: center;
font-variant: small-caps;
}
h1 a:hover, h2 a:hover{
color: var(--color-dark-gray);
background-color: var(--color-dark-blue);
}
a {
font-weight: bold;
color: var(--color-blue);
text-decoration: none;
transition: 0.3s;
transition-property: background, color;
}
a:hover {
color: black;
background-color: var(--color-gray);
}
*:hover.a_main_header {
color: white;
background-color: var(--color-blue);
}
.active {
color: white;
background-color: var(--color-blue);
padding-left: 5px;
padding-right: 5px;
}
.main_header {
display: flex;
flex-wrap: wrap;
justify-content: center;
}
.main_header > div {
display: flex;
flex-wrap: nowrap;
}
.main_header > div > div {
border-style: solid;
border-width: 1px;
padding: 0px 5px 0px;
margin: 1px;
}
pre {
overflow: auto;
border-style: solid;
border-width: 1px;
padding: 10px 10px 10px;
margin: 10px;
color: var(--color-blue);
background-color: var(--color-gray);
font-family: "Lucida Console", Courier, monospace;
}
h2.entry-title, h2.entry-title a {
color: var(--color-dark-blue);
background-color: white;
border-style: solid;
border-width: 1px 0px 1px 0px;
text-align: center;
font-variant: small-caps;
}
@charset "UTF-8";
/* FONT PATH -------------------------- */
@font-face { font-family: 'NovaIcons'; src: url("../fonts/novaicons.eot?v=1.0.0"); src: url("../fonts/novaicons.eot?#iefix&v=1.0.0") format("embedded-opentype"), url("../fonts/novaicons.woff?v=1.0.0") format("woff"), url("../fonts/novaicons.ttf?v=1.0.0") format("truetype"); font-weight: normal; font-style: normal; }
.nv { display: inline-block; font: normal normal normal 0.65em/1 NovaIcons; font-size-adjust: none; text-rendering: auto; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; }
/* makes the font 33% larger relative to the icon container */
.nv-lg { font-size: 0.86667em; line-height: 0.75em; vertical-align: -15%; }
.nv-2x { font-size: 1.3em; }
.nv-3x { font-size: 1.95em; }
.nv-4x { font-size: 2.6em; }
.nv-5x { font-size: 3.25em; }
.nv-fw { width: 1.97802em; text-align: center; }
.nv-ul { padding-left: 0; margin-left: 2.14286em; list-style-type: none; }
.nv-ul > li { position: relative; }
.nv-li { position: absolute; left: -3.2967em; width: 3.2967em; top: 0.42857em; text-align: center; }
.nv-li.nv-lg { left: -2.85714em; }
.nv-border { padding: .2em .25em .15em; border: solid 0.08em #eee; border-radius: .1em; }
.nv-pull-left { float: left; }
.nv-pull-right { float: right; }
.nv.nv-pull-left { margin-right: .3em; }
.nv.nv-pull-right { margin-left: .3em; }
.nv-spin { -webkit-animation: nv-spin 2s infinite linear; animation: nv-spin 2s infinite linear; }
.nv-pulse { -webkit-animation: nv-spin 1s infinite steps(8); animation: nv-spin 1s infinite steps(8); }
@-webkit-keyframes nv-spin { 0% { -webkit-transform: rotate(0deg); transform: rotate(0deg); }
100% { -webkit-transform: rotate(359deg); transform: rotate(359deg); } }
@keyframes nv-spin { 0% { -webkit-transform: rotate(0deg); transform: rotate(0deg); }
100% { -webkit-transform: rotate(359deg); transform: rotate(359deg); } }
.nv-rotate-90 { -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=1)"; -webkit-transform: rotate(90deg); -ms-transform: rotate(90deg); transform: rotate(90deg); }
.nv-rotate-180 { -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2)"; -webkit-transform: rotate(180deg); -ms-transform: rotate(180deg); transform: rotate(180deg); }
.nv-rotate-270 { -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=3)"; -webkit-transform: rotate(270deg); -ms-transform: rotate(270deg); transform: rotate(270deg); }
.nv-flip-horizontal { -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)"; -webkit-transform: scale(-1, 1); -ms-transform: scale(-1, 1); transform: scale(-1, 1); }
.nv-flip-vertical { -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"; -webkit-transform: scale(1, -1); -ms-transform: scale(1, -1); transform: scale(1, -1); }
:root .nv-rotate-90, :root .nv-rotate-180, :root .nv-rotate-270, :root .nv-flip-horizontal, :root .nv-flip-vertical { filter: none; }
.nv-stack { position: relative; display: inline-block; width: 2em; height: 2em; line-height: 2em; vertical-align: middle; }
.nv-stack-1x, .nv-stack-2x { position: absolute; left: 0; width: 100%; text-align: center; }
.nv-stack-1x { line-height: inherit; }
.nv-stack-2x { font-size: 2em; }
.nv-inverse { color: #fff; }
.nv-download::before { content: ""; }
.nv-expand::before { content: ""; }
.nv-fax::before { content: ""; }
.nv-file-download::before { content: ""; }
.nv-home::before { content: ""; }
.nv-link::before { content: ""; }
.nv-play::before { content: ""; }
.nv-search::before { content: ""; }
.nv-shrink::before { content: ""; }
.nv-star::before { content: ""; }
.nv-warning::before { content: ""; }
.sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); border: 0; }
.sr-only-focusable:active, .sr-only-focusable:focus { position: static; width: auto; height: auto; margin: 0; overflow: visible; clip: auto; }
@font-face {
font-family:'Unistra A';
src: url('../fonts/UnistraA-Italic.eot');
src: url('../fonts/UnistraA-Italic.eot?#iefix') format('embedded-opentype'),
url('../fonts/UnistraA-Italic.woff2') format('woff2'),
url('../fonts/UnistraA-Italic.woff') format('woff'),
url('../fonts/UnistraA-Italic.svg') format('svg');
font-weight: 400;
font-style: italic;
}
@font-face {
font-family:'Unistra A';
src: url('../fonts/UnistraA-Regular.eot');
src: url('../fonts/UnistraA-Regular.eot?#iefix') format('embedded-opentype'),
url('../fonts/UnistraA-Regular.woff2') format('woff2'),
url('../fonts/UnistraA-Regular.woff') format('woff'),
url('../fonts/UnistraA-Regular.svg') format('svg');
font-weight: 400;
font-style: normal;
}
@font-face {
font-family:'Unistra A';
src: url('../fonts/UnistraA-Bold.eot');
src: url('../fonts/UnistraA-Bold.eot?#iefix') format('embedded-opentype'),
url('../fonts/UnistraA-Bold.woff2') format('woff2'),
url('../fonts/UnistraA-Bold.woff') format('woff'),
url('../fonts/UnistraA-Bold.svg') format('svg');
font-weight: 700;
font-style: normal;
}
@font-face {
font-family:'Unistra A';
src: url('../fonts/UnistraA-BoldItalic.eot');
src: url('../fonts/UnistraA-BoldItalic.eot?#iefix') format('embedded-opentype'),
url('../fonts/UnistraA-BoldItalic.woff2') format('woff2'),
url('../fonts/UnistraA-BoldItalic.woff') format('woff'),
url('../fonts/UnistraA-BoldItalic.svg') format('svg');
font-weight: 700;
font-style: italic;
}
@font-face {
font-family:'Unistra C';
src: url('../fonts/UnistraC-Italic.eot');
src: url('../fonts/UnistraC-Italic.eot?#iefix') format('embedded-opentype'),
url('../fonts/UnistraC-Italic.woff2') format('woff2'),
url('../fonts/UnistraC-Italic.woff') format('woff'),
url('../fonts/UnistraC-Italic.svg') format('svg');
font-weight: 400;
font-style: italic;
}
@font-face {
font-family:'Unistra C';
src: url('../fonts/UnistraC-Regular.eot');
src: url('../fonts/UnistraC-Regular.eot?#iefix') format('embedded-opentype'),
url('../fonts/UnistraC-Regular.woff2') format('woff2'),
url('../fonts/UnistraC-Regular.woff') format('woff'),
url('../fonts/UnistraC-Regular.svg') format('svg');
font-weight: 400;
font-style: normal;
}
@font-face {
font-family:'Unistra C';
src: url('../fonts/UnistraC-Bold.eot');
src: url('../fonts/UnistraC-Bold.eot?#iefix') format('embedded-opentype'),
url('../fonts/UnistraC-Bold.woff2') format('woff2'),
url('../fonts/UnistraC-Bold.woff') format('woff'),
url('../fonts/UnistraC-Bold.svg') format('svg');
font-weight: 700;
font-style: normal;
}
@font-face {
font-family:'Unistra C';
src: url('../fonts/UnistraC-BoldItalic.eot');
src: url('../fonts/UnistraC-BoldItalic.eot?#iefix') format('embedded-opentype'),
url('../fonts/UnistraC-BoldItalic.woff2') format('woff2'),
url('../fonts/UnistraC-BoldItalic.woff') format('woff'),
url('../fonts/UnistraC-BoldItalic.svg') format('svg');
font-weight: 700;
font-style: italic;
}
\ No newline at end of file
@charset "UTF-8";
/* FONT PATH -------------------------- */
@font-face { font-family: 'Unistra Symbol'; src: url("../fonts/unistrasymbol-webfont.eot?v=1.0.0"); src: url("../fonts/unistrasymbol-webfont.eot?#iefix&v=1.0.0") format("embedded-opentype"), url("../fonts/unistrasymbol-webfont.woff2?v=1.0.0") format("woff2"), url("../fonts/unistrasymbol-webfont.woff?v=1.0.0") format("woff"), url("../fonts/unistrasymbol-webfont.ttf?v=1.0.0") format("truetype"); font-weight: normal; font-style: normal; }
.us { display: inline-block; font: normal normal normal 18px/1 "Unistra Symbol"; font-size: inherit; text-rendering: auto; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; }
/* makes the font 33% larger relative to the icon container */
.us-lg { font-size: 1.33333em; line-height: 0.75em; vertical-align: -15%; }
.us-2x { font-size: 2em; }
.us-3x { font-size: 3em; }
.us-4x { font-size: 4em; }
.us-5x { font-size: 5em; }
.us-fw { width: 1.28571em; text-align: center; }
.us-ul { padding-left: 0; margin-left: 2.14286em; list-style-type: none; }
.us-ul > li { position: relative; }
.us-li { position: absolute; left: -2.14286em; width: 2.14286em; top: 0.14286em; text-align: center; }
.us-li.us-lg { left: -1.85714em; }
.us-border { padding: .2em .25em .15em; border: solid 0.08em #eee; border-radius: .1em; }
.us-pull-left { float: left; }
.us-pull-right { float: right; }
.us.us-pull-left { margin-right: .3em; }
.us.us-pull-right { margin-left: .3em; }
.us-spin { -webkit-animation: us-spin 2s infinite linear; animation: us-spin 2s infinite linear; }
.us-pulse { -webkit-animation: us-spin 1s infinite steps(8); animation: us-spin 1s infinite steps(8); }
@-webkit-keyframes us-spin { 0% { -webkit-transform: rotate(0deg); transform: rotate(0deg); }
100% { -webkit-transform: rotate(359deg); transform: rotate(359deg); } }
@keyframes us-spin { 0% { -webkit-transform: rotate(0deg); transform: rotate(0deg); }
100% { -webkit-transform: rotate(359deg); transform: rotate(359deg); } }
.us-rotate-90 { -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=1)"; -webkit-transform: rotate(90deg); -ms-transform: rotate(90deg); transform: rotate(90deg); }
.us-rotate-180 { -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2)"; -webkit-transform: rotate(180deg); -ms-transform: rotate(180deg); transform: rotate(180deg); }
.us-rotate-270 { -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=3)"; -webkit-transform: rotate(270deg); -ms-transform: rotate(270deg); transform: rotate(270deg); }
.us-flip-horizontal { -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)"; -webkit-transform: scale(-1, 1); -ms-transform: scale(-1, 1); transform: scale(-1, 1); }
.us-flip-vertical { -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"; -webkit-transform: scale(1, -1); -ms-transform: scale(1, -1); transform: scale(1, -1); }
:root .us-rotate-90, :root .us-rotate-180, :root .us-rotate-270, :root .us-flip-horizontal, :root .us-flip-vertical { filter: none; }
.us-stack { position: relative; display: inline-block; width: 2em; height: 2em; line-height: 2em; vertical-align: middle; }
.us-stack-1x, .us-stack-2x { position: absolute; left: 0; width: 100%; text-align: center; }