gestione-dei-fuss-client.rst 13.6 KB
Newer Older
1
2
3
4
************************
Gestione dei FUSS client
************************

Paolo Dongilli's avatar
Paolo Dongilli committed
5
Configurazione di un *FUSS Client*
6
7
==================================

Paolo Dongilli's avatar
Paolo Dongilli committed
8
Per configurare una macchina come *FUSS Client* è disponibile il comando
9
10
11
12
13
``fuss-client``, installato col pacchetto omonimo, che cura tutta la
configurazione della macchina, e l'eventuale collegamento della stessa al
*Fuss Server*, installando il software necessario ed effettuando le relative
configurazioni. 

14
Installazione ordinaria
Elena Grandi's avatar
Elena Grandi committed
15
-----------------------
Simone Piccardi's avatar
Simone Piccardi committed
16

17
18
19
20
21
22
Il comando principale per la configurazione del client è ``fuss-client -a``
che esegue il collegamento ad un *Fuss Server* rilevato automaticamente nella
rete in cui è stata inserita la macchina.

Se si dispone di una chiavetta con una chiave di autenticazione per il *Fuss
Server* questa deve essere inserita sulla macchina, e la procedura sarà
Simone Piccardi's avatar
Simone Piccardi committed
23
completamente automatizzata (per i dettagli vedi `Accesso con chiave al server per fuss-client`_), altrimenti una volta lanciato il comando dovrà
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
essere immessa per tre volte la password di root del *Fuss Server* per
consentire l'importazione delle credenziali necessarie. 

Se non vi sono cluster definiti sul *Fuss Server* o se ve ne è definito
soltanto uno, non verrà chiesto nient'altro e l'installazione proseguirà
direttamente fino alla fine, ottenendo sul terminale un risultato del tipo::

  PLAY RECAP *********************************************************************
  localhost                  : ok=129  changed=71   unreachable=0    failed=0   

(dove si deve avere ``failed=0``)

Se invece sul *Fuss Server* sono presenti più cluster all'inizio verrà chiesto
di scegliere in quale essere inseriti con una schermata del tipo::

  This server has several workstation groups
  
  Please choose the one desired for this machine:
  0  -  aula1
  1  -  aula2

  Your choice? (enter the server number) 
  0
  ...

49
Impostazione dell'hostname
Elena Grandi's avatar
Elena Grandi committed
50
--------------------------
51

52
53
54
55
56
57
58
59
60
61
62
63
64
65
Il comando ``fuss-client`` supporta la installazione ed il collegamento
al server di una macchina con la contestuale impostazione del nome della
stessa. Questo risulta utile quando un pc viene installato utilizzando
una immagine creata con clonezilla, che ha ovviamente impostato
l'hostname del client da cui la si è creata.

Inoltre, il comando ``fuss-client`` effettua una normalizzazione dei
nomi delle macchine, infatti in alcuni casi veniva usato come hostname
della macchina l'hostname completo (FQDN) della stessa, cosa che crea
poi problemi nella risoluzione dei nomi ed inseriva gli stessi nel file
``/etc/clusters`` del server. Questo cosa poi aveva portato ad usare
come hostname completo (impostato in ``/etc/hosts``) un nome semplice
senza dominio (cosa che potrebbe causare problemi con eventuali servizi
installati successivamente).
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95

Quando si esegue l'installazione ed il collegamento al server di un client, il
comando che permette l'impostazione contestuale dell'hostname della macchina
usando l'opzione ``-H`` nella forma::

  fuss-server -a -H clientname

dove ``clientname`` deve essere un nome a dominio alfanumerico che **non** deve
contenere nessun "``.``", ed essere indicato solo con lettere minuscole.

In tal caso il client, ottenuto il nome del dominio dal server, effettuerà la
corretta impostazione dei file ``/etc/hostname``, inserendovi semplicemente il
nome indicato con un contenuto come::

  clientname

mentre in ``/etc/hosts`` verrà inserito il corretto valore per la risoluzione
completa con un contenuto come::

  127.0.1.1	clientname.institute.lan clientname

e si otterrà correttamente che::

  root@testclient:~# hostname
  clientname
  root@testclient:~# hostname -f
  clientname.institute.lan

ed in questo modo nel file ``/etc/clusters`` del server verrà usato il nome
della macchina.
96
97


Elena Grandi's avatar
Elena Grandi committed
98
99
100
101
102
103
Aggiornamenti
=============

Aggiornamenti minori di fuss-client
-----------------------------------

104
105
Nel caso ci siano aggiornamenti di minor version di fuss-client (10.0.x →
10.0.(x+1)) li si può applicare aggiornando il pacchetto::
Elena Grandi's avatar
Elena Grandi committed
106
107
108
109
110
111
112
113
114
115
116
117
118
119

   # apt update
   # apt install fuss-client

e quindi lanciando::

   # fuss-client -U

per applicare le nuove configurazioni.

Le informazioni presenti in ``/usr/share/doc/fuss-client/changelog.gz``
(dopo l'installazione del pacchetto) possono essere utili per scoprire
se le modifiche sono utili per installazioni esistenti o se riguardano
solo le nuove installazioni.
Elena Grandi's avatar
Elena Grandi committed
120

121
122
123
124
125
126
127
128
Accesso con chiave al server per fuss-client
============================================

Per collegare i client ad un fuss-server è necessario dare accesso ssh
al server a chi effettua il collegamento; è possibile limitare questo
accesso usando una chiave ssh apposita che da accesso come root al
server, limitato però ai soli comandi necessari per ``fuss-client``.

129
130
131
132
Coi comandi ``fuss-server create`` o ``fuss-server upgrade`` viene
creata una coppia di chiavi in
``/etc/fuss-server/client_keys/client-rsa(.pub)`` e la stessa viene
abilitata per l'accesso al server da parte di ``fuss-client``.
133

134
Sui client già configurati con ``fuss-client`` è disponibile uno script,
135
136
137
138
139
``/usr/local/sbin/copy_server_key``, che prepara una chiavetta USB
configurata per essere riconosciuta da ``fuss-client``, il quale
provvede a montarla, usarla per l'identificazione e poi smontarla quando
non più necessaria, in modo da poter essere spostata sugli altri client.

140
141
142
143
144
In alternativa, è possibile trasferire la chiave privata sui client in
altro modo a piacere ed usare l'opzione ``-k
</path/completo/della/chiave>`` per identificarsi senza password.  In
questo caso è ovviamente cura dell'utente provvedere a mount e umount di
eventuali dispositivi rimovibili.
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168

.. note:: ssh impone che il file della chiave abbia permessi tali da
    impedirne la lettura ad altri utenti; se tali file sono su
    filesystem ext è opportuno assegnare i permessi ``0600`` al file
    della chiave privata.

    Se si usa invece un filesystem FAT, è necessario usare opzioni di
    mount opportune per evitare che i file si presentino con permessi
    ``0755``, come avviene di default.

In entrambi i casi, i file presenti sulla chiavetta vengono usati
durante la fase iniziale di fuss-client; quando non sono più in uso
viene emesso un suono diverso a seconda se la chiavetta sia stata
smontata e la si possa rimuovere tranquillamente o ci siano stati
problemi nello smontaggio e quindi la si può smontare a mano e
rimuovere.

Nel caso in cui non si senta il suono, questo avviene poco prima del
momento in cui iniziano le scritte colorate di ansible.

Gestione delle chiavi
---------------------

Aggiunta di nuove chiavi sul server
Elena Grandi's avatar
Elena Grandi committed
169
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
170
171
172
173
174
175
176
177
178
179
180

È possibile abilitare nuove chiavi mettendo la coppia di chiavi
pubbliche e private in ``/etc/fuss-server/client_keys/`` e lanciando
``fuss-server upgrade`` perché vengano abilitate all'accesso.

``/etc/fuss-server/client_keys/client-rsa(.pub)`` deve esistere
(altrimenti ne viene creata una nuova) ed è la chiave di default usata
ad esempio dallo script ``copy_server_key``, altre chiavi vanno gestite
manualmente.

Disabilitazione di chiavi
Elena Grandi's avatar
Elena Grandi committed
181
^^^^^^^^^^^^^^^^^^^^^^^^^
182
183
184
185
186
187
188

Per disabilitare una chiave dal server è necessario:

* rimuovere la riga corrispondente da ``/root/.ssh/authorized_keys``
* rimuovere le chiavi pubbliche e private da ``/etc/fuss-server/client_keys/``

Creazione di una chiavetta USB con le chiavi ssh
Elena Grandi's avatar
Elena Grandi committed
189
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213

Sui client già configurati, a partire dalla versione 9.0.16 di
fuss-client, è presente uno script, ``/usr/local/sbin/copy_server_key``,
per creare chiavette USB contenenti le chiavi ssh da usare per
l'identificazione.
Lo script non dipende da altre componenti del fuss-client e può essere
copiato su altre macchine; in tal caso per usarlo è necessario aver
installato il pacchetto ``python3-pyudev`` (dipendenza di ``fuss-client``).

Per usarlo, collegare una chiavetta USB vuota al computer e lanciare il
comando::

   # copy_server_key /dev/sdXn

dove ``/dev/sdXn`` è il device corrispondente alla partizione della
chiavetta dove si desiderano salvare le chiavi.

.. warning:: La partizione specificata verrà riformattata, perdendo
   tutti i dati eventualmente presenti sulla chiavetta.

Di default viene copiata la chiave presente sul server raggiungibile
all'indirizzo ``proxy``; in alternativa si può specificare l'indirizzo
del server tramite l'opzione ``-s <indirizzo.del.server>``.

214
.. warning:: Nella versione di mkfs.ext4 presente in Debian Buster, e
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
   quindi sul fuss-client, è presente un bug nella localizzazione
   italiana, `#907034
   <https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=907034>`_, che
   stampa le richieste di conferma in inglese, ma si aspetta risposta in
   italiano.

   Se viene stampata una richiesta tipo::

      mke2fs 1.43.4 (31-Jan-2017)
      /dev/sdb1 contiene un file system ext4 con etichetta "portachiavi"
          last mounted on /mnt/portachiavi on Mon Aug 13 09:40:52 2018
      Proceed anyway? (y,N)

   è necessario premere ``s`` per continuare; ``y`` non viene
   riconosciuto e viene trattato come il default, ``n``, che quindi
   causa l'uscita immediata dal programma.

Specifiche
----------

Chiavi USB per la distribuzione delle chiavi ssh
Elena Grandi's avatar
Elena Grandi committed
236
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
237
238
239
240
241
242
243
244
245
246
247
248

Per poter lavorare in modo sicuro, ``fuss-client`` senza opzione ``-k``
richiede che le chiavi ssh siano salvate su una chiavetta USB
configurata in modo ben preciso, come generata dallo script
``copy_server_key``.

La chiavetta USB deve contenere una partizione formattata ext con
etichetta ``portachiave``, all'interno della quale è presente una
directory ``server_key`` contenente il file ``client-rsa`` con permessi
rispettivamente ``0700`` e ``0600``, entrambi appartenenti all'utente
``root``.

Elena Grandi's avatar
Elena Grandi committed
249
250
251
Risoluzione di problemi
=======================

252
253
254
255
256
257
258
259
260
Diagnostica degli errori di fuss-client
---------------------------------------

Per poter risolvere eventuali problemi di installazione di un client durante
l'esecuzione di ``fuss-client`` è essenziale poter disporre del log completo
delle operazioni effettuate da *ansible* durante l'esecuzione, riportare solo
le righe finali del risultato non è sufficiente.

Per questo nel caso si presentino problemi è opportuno rilanciare il comando
261
seguendo le indicazioni per registrare la sessione illustrate in
Elena Grandi's avatar
Elena Grandi committed
262
:ref:`Bug-reporting`.
263

Elena Grandi's avatar
Elena Grandi committed
264
265
266
Procedure alternative
=====================

267
Installazione su Debian 10 (buster)
Elena Grandi's avatar
Elena Grandi committed
268
-----------------------------------
269

270
271
272
Fuss Client può essere installato su una Debian 10 (buster) standard; in
tal caso è necessario effettuare alcune configurazioni, sempre lavorando
come root.
273

274
* Installare Debian 10 (buster) recuperando una delle seguenti ISO (a
275
276
277
278
279
280
281
282
283
  seconda dell'occorrenza):

  .. list-table::
     :header-rows: 1

     * - Architettura
       - ISO xfce-desktop UFFICIALE
       - ISO xfce-desktop NON UFFICIALE (con firmware proprietari)
     * - amd64
284
285
286
287
       - `debian-live-10.3.0-amd64-xfce.iso
         <https://cdimage.debian.org/debian-cd/current-live/amd64/iso-hybrid/debian-live-10.3.0-amd64-xfce.iso>`_
       - `debian-live-10.3.0-amd64-xfce+nonfree.iso
         <https://cdimage.debian.org/cdimage/unofficial/non-free/cd-including-firmware/10.3.0-live+nonfree/amd64/iso-hybrid/debian-live-10.3.0-amd64-xfce+nonfree.iso>`_
288
     * - i386 
289
290
291
292
       - `debian-live-10.3.0-i386-xfce.iso
         <https://cdimage.debian.org/debian-cd/current-live/i386/iso-hybrid/debian-live-10.3.0-i386-xfce.iso>`_
       - `debian-live-10.3.0-i386-xfce+nonfree.iso
         <https://cdimage.debian.org/cdimage/unofficial/non-free/cd-including-firmware/10.3.0-live+nonfree/i386/iso-hybrid/debian-live-10.3.0-i386-xfce+nonfree.iso>`_
293

294
295
* Abilitare i repository fuss in
  ``/etc/apt/source.list.d/archive_fuss_bz_it.list``::
296

297
     deb http://archive.fuss.bz.it/ buster main
298
299
300

* aggiungere la chiave di firma del repository e aggiornare apt::

301
302
     # wget -qO - https://archive.fuss.bz.it/apt.key | apt-key add -
     # apt update
303

304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
* ed infine, lanciare il programma fuss-client::

     # fuss-client -a

Installazione standalone
------------------------

fuss-client supporta anche una modalità di installazione standalone
che non effettua il collegamento ad un fuss-server, ma si limita a
configurare un'installazione di debian con i programmi e le
personalizzazione del sistema fuss.

Per usarla, a partire da un'installazione pulita di Debian, è
sufficiente aggiungere i repository fuss in
``/etc/apt/source.list.d/archive_fuss_bz_it.list``::

     deb http://archive.fuss.bz.it/ buster main
321

322
323
324
325
* aggiungere la chiave di firma del repository e aggiornare apt::

     # wget -qO - https://archive.fuss.bz.it/apt.key | apt-key add -
     # apt update
326
327
328

* ed infine, lanciare il programma fuss-client::

329
     # fuss-client -a
330

331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
Supporto per firmware proprietari
---------------------------------

Per il funzionamento di determinato hardware è necessario l'uso di
firmware proprietari, disponibili nella sezione ``non-free`` dei
repository.

L'opzione ``--unofficial`` di ``fuss-client`` aggiunge l'installazione
di tali firmware; per usarla è necessario abilitare le sezioni
``contrib`` e ``non-free`` per i repository debian in
``/etc/apt/sources.list``.

.. warning:: Come dice il nome, questa opzione è da considerarsi non
   ufficiale, ed in particolare l'installazione di software da
   ``non-free`` diverso dai firmware necessari per il supporto hardware
   non è supportata.

348
349
350
351
352
353
354
..  LocalWords:  FUSS client Fuss fuss root RECAP localhost changed failed
..  LocalWords:  unreachable This has several groups Please choose the one
..  LocalWords:  desired for this machine Your choice number version apt log
..  LocalWords:  update install ansible nslcd stretch list table header rows
..  LocalWords:  xfce amd nonfree iso repository deb main wget key add kids
..  LocalWords:  metapacchetti children education graphics language support
..  LocalWords:  various