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.chssh-keygen -t rsa -f cloud.key, e premiamo due volte invio per non proteggerla con una passwordcloud.key e cloud.key.pubcat 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.largecloud.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, entersudo systemctl restart sshd.servicePer 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/anaconda3yesQui 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 lsTutti 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 + 2Creare 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, entersudo systemctl restart sshd.servicessh -i cloud.key vmnamePer 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