Seguiamo pedissequamente la guida ufficiale
In accorto a questa guida, bisogna prima di tutto abilitare il servizio
Potrebbe essere necessaria circa un'ora
$ ssh uname@lxplus.cern.ch
ssh-keygen -t rsa -f cloud.key
, e premiamo due volte invio per non proteggerla con una passwordcloud.key
e cloud.key.pub
cat cloud.key.pub
)scarsivm8
)Elimina il volume con l'eliminazione dell'istanza: No
Dalla lista dei volumi disponibili, scegliere: CS8 - x86_64 [2023-03-01]
(Scegliere = Freccia a dx)
m2.large
cloud.key.pub
creato in precedenzaCi vogliono circa 10-15 minuti affinché sia pronta, ovvero quanto lo status diventa Attivo.
Una volta che la macchina virtuale è stata creata, è possibile loggarsi da lxplus con $ ssh -i cloud.key root@vmname
. Siamo effettivamente dentro alla nostra macchina virtuale, come root. Nel prossimo capitolo vediamo come preparare la nostra macchina, installando il necessario, ed usando il nostro CERN Account
Note:
Di seguito descriviamo alcune delle operazioni necessarie per preparare l'ambiente
Il package manager di default di Centos è yum
. Essendo loggati come root, usiamolo per installare alcuni semplici pacchetti che ci torneranno utili. Iniziamo ad aggiornare quanto già installato
# yum update && yum upgrade -y
Nota: il simbolo #
prima di un comando indica che deve essere eseguito come root. Nel caso fossimo su un altro utente non root, è necessario anteporre al comando da usare sudo
(Super User DO), da confermare inserendo la password di root. Al contrario, i comandi che iniziano con $
si intende siano riferiti ad un utente normale.
Installiamo dunque alcune cose che useremo spesso
# yum install -y tmux nano git sshfs wget
# yum install -y sl neofetch
Al momento possiamo loggarci sulla macchina virtuale solo usando la coppia chiave pubblica-privata. Impostiamo una password per l'account root con il comanvo passwd
: ci chiederà di inserire la password e di confermarla. Nota: mentre la scriviamo per ragioni di sicurezza non si vedrà niente, è normale.
nano /etc/ssh/sshd_config
cfr e cfr, andando a settare PasswordAuthentication yes
. C-w
, inserendo la parola da cercare e premendo invio. Ci si può muovere tra le varie voci di ricerca con M-frecce
. C-x, y, enter
sudo systemctl restart sshd.service
Per verificare che l'operazione sia andata a buon fine, possiamo disconnetterci dalla macchina (C-d
ovvero Ctrl + d
) e riconnetterci usando $ ssh root@vmname
: a questo punto ci verrà chiesto di inserire la password e saremo nuovamente dentro nella nostra macchina virtuale.
Questa è la pagina di riferimento. Scriviamo i seguenti 4 comandi:
$ sudo dnf -y install locmap-release
$ sudo dnf -y install locmap
$ sudo locmap --enable all
$ sudo locmap --configure all
Questo in automatico ci fa aggiungere l'account CERN. Inoltre in queste nuove versioni la home è già sul disco della macchina virtuale, non più su AFS, e questo è bene
Possiamo quindi disconnetterci dalla macchina e provare a loggarci nell'utente $ ssh <username>@vmname
Runnare infine il seguente comando, molto lungo, che installa tutta una serie di servizi consigliati
sudo dnf groupinstall -y 'Software Development Workstation (CERN Recommended Setup)'
si tratta di circa 1500 pacchetti, e potrebbe metterci una mezzoretta. Se pianificate di chiudere il pc in fretta, fatelo in un tmux, vedi sezione sccessiva.
Anaconda è un ottimo modo per avere un ambiente in cui lavorare con python ed installare tutti i nostri pacchetti.
Scarichiamo il file:
$ wget https://repo.anaconda.com/archive/Anaconda3-2022.10-Linux-x86_64.sh
$ bash Anaconda3-2022.10-Linux-x86_64.sh
/home/user/anaconda3
yes
Qui una guida introduttiva.
Lo scopo di un tmux è creare una serie di terminali, all'interno dei quali possiamo lanciare una serie di script, che rimarranno in esecuzione anche quando ci "stacchiamo" dal tmux e anche se ci disconnettiamo dalla macchina virtuale.
$ tmux new-session -s <sess-name>
$ tmux attach-session -t <sess-name>
. Fin tanto che non c'è ambiguità, i comandi possono essere abbreviati, per esempio $ tmux a -t <sess-name>
. Se non si specifica un target (-t
) si verrà connessi all'ultima sessione (tmux a
)$ tmux ls
Tutti i comandi di in una sessione tmux sono costituiti da C-b
(ovvero Ctrl + b
) e poi un certo carattere. Di seguito riepilogo i comandi più utili
C-b d
Detach from session, ovvero uscire dal tmux, comando più importante per chi si approccia la prima voltaDividere lo schermo e navigarci
C-b %
(Da effettuare come Ctrl + b
e quindi Shift + %
, come nel mio caso che il simbolo % si trova sopra il 5): Divide lo schermo in verticaleC-b "
: Divide lo schemo in orizzontaleC-b <frecce>
: Navigare tra le varie finestre C-b x
: Chiude un pannelloC-b M-1
e C-b M-2
: Per riordinare le finestre (in un modo comodo): uno le riordina in verticale, l'altro in orizzontale. Nota: il simbolo M-2
equivale ad Alt + 2
Creare nuove finestre, al cui interno posso dividerle in più terminali
C-b c
: Crea una nuova finestra (Create)C-b n
: Naviga alla finestra successiva (Next)C-b p
: Naviga alla finestra successiva (Previous)Altri comandi utili:
C-b [
: Per poter scrollare nella cronologia. q
per uscireC-b ?
: Per accedere alla guidaNon è necessario installarlo, è sufficiente fare il sourcing da CVMFS
source /cvmfs/sft.cern.ch/lcg/contrib/gcc/9/x86_64-centos8/setup.sh
source /cvmfs/geant4.cern.ch/geant4/11.0.p02/x86_64-centos8-gcc9-optdeb-MT/GNUMake-setup.sh
A questo punto possiamo eseguire i nostri comandi di compilazione, per esempio
cmake -DGeant4_DIR=/cvmfs/geant4.cern.ch/geant4/11.0.p02/x86_64-centos8-gcc9-optdeb-MT/lib64/Geant4-11.0.2/ ../CERN2022 && make -j8
Ogni sei mesi queste macchine scadrebbero. Visto che non vogliamo rifare ogni volta tutta questa fatica, da openstack Progetto -> Compute -> Istanze
, e clicchiamo il bottone Prolong expiration per la nostra macchina
Ci siamo accorti che su queste nuove macchine, anche da lxplus ci viene sempre richiesta la password, e questo può essere scomodo. Possiamo pertanto impostare un login basato su una chiave pubblica-privata, un po' come all'inizio abbiamo fatto per loggarci nell'account root. A questa pagina c'è un possibile riferimento.
cat cloud.key.pub
.ssh
esista (mkdir -p ~/.ssh/
), copiamo la chiave precedentemente stampata e pastiamola nel seguente file nano ~/.ssh/authorized_keys
, e salviamo con l'usuale sequenza C-x, y, enter
sudo systemctl restart sshd.service
ssh -i cloud.key vmname
Per le persone molto pigre esiste anche la seguente versione, da effettuare sulla Virtual Machine
mkdir -p ~/.ssh && cat /afs/cern.ch/user/u/uname/cloud.key.pub >> ~/.ssh/authorized_keys
dove u/uname
deve essere adattato al vostro caso specifico (p. es. s/scarsi
)
Per concludere il lavoro in bellezza, possiamo tornare su lxplus, editare il .bashrc
ed aggiungere un alias, tipo alias vm='ssh -i ~/cloud.key vmname'
.
Nota: affinché questo alias abbia effetto, è necessario ri-effettuare il source del suddetto file (source .bashrc
oppure nella versione compatta . .bashrc
)
La stringa PS1 è tutto ciò che compare sulla linea di comando, prima del comando che possiamo inserire. Può essere personalizzata all'interno del .bashrc
.
La mia configurazione è la seguente, con colori modificati e che mostra la branch di un eventuale repo git
# Funzione per ottenere la git branch
parse_git_branch() {
git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/ (\1)/'
}
# Stringa PS1 come su mio ubuntu
PS1='${debian_chroot:+($debian_chroot)}\[\033[38;5;10m\]\u\[\033[38;5;10m\]@\[\033[38;5;45m\]\h\[\033[00m\]:\[\033[38;5;11m\]\w\[\033[38;5;214m\]$(parse_git_branch)\[\033[38;5;9m\] \$ \[\033[00m\]'
Questo e questo, con in particolare questo tool sono dei possibili spunti
Sourcing di ROOT da CVMFS (per esempio per poter fare hadd
)
$ source /cvmfs/sft.cern.ch/lcg/app/releases/ROOT/6.28.00/x86_64-centos8-gcc85-opt/bin/thisroot.sh