cloud-init-image.rst 13.7 KB
Newer Older
1
2
Creazione dell'immagine cloud-init
=====
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
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

A partire da FUSS 10 (Debian Buster) si genereranno delle immagini complete
per macchina virtuale del server nel formato dei dump della piattaforma
Proxmox adottata dal progetto, in modo da semplificare l'installazione e la
configurazione iniziale di un FUSS server.

Le immagini si appoggiano a ``cloud-init`` in modo da consentire la gestione
della rete direttamente dall'interfaccia web, una volta che le si siano
importate e gli si sia associato un volume per ``cloud-init`` (i dettagli sono
illustrati nella fuss-tech-guide.



Creazione macchina virtuale
-------

Si crei una nuova macchina virtuale (VM) su Proxmox, in fase iniziale è
sufficiente l'interfaccia di rete singola creata dal wizard, si usi il bridge
associato alla rete esterna: la seconda interfaccia per la rete esterna, e la
eventuale terza per il captive portal possono essere aggiunte in un secondo
tempo.

Sulla macchina virtuale si deve fare una installazione ordinaria di Debian con
*netinstall* (ci si procuri l'ultima versione della ISO e la si carichi dentro
``/var/lib/vz/template/iso``)::

  cd /var/lib/vz/template/iso/
  wget https://cdimage.debian.org/debian-cd/current/amd64/iso-cd/debian-10.3.0-amd64-netinst.iso

Nella creazione si utilizzi la precedente immagine come CDROM e per il resto
si usino i valori di default per tutto, compresi i 32 G di dimensione del
disco, avendo però cura di fare installare quest'ultimo sullo storage
``local`` in formato *qcow* (che consente eventualmente di distribuire
direttamente il file che si otterrà come immagine del disco per l'uso da parte
di altre piattaforme).

Installare Debian
-------

Si esegua l'installazione in maniera ordinaria; per la rete si può anche usare
un eventuale DHCP, la configurazione scelta in fase di installazione verrà
comunque sovrascritta da quella che si imposterà in fase di deploy con
``cloud-init``.

Le operazioni specifiche che occorre fare in fase di installazione sono:

49
50
51
52
53
54
55
56
57
58
59
60
61
* si imposti per ``root`` la password di default: ``fuss``
  
* si usi un utente normale: ``fuss`` (o altro, andrà comunque cancellato)
  
* si configuri la rete nella maniera più semplice per accedere sulla macchina
  
* scegliere il partizionamento manuale del disco,
  
  * creare una prima partizione primaria di 4G come swap
    
  * creare una seconda partizione primaria con resto del disco come radice

* nella schermata *Selezione del software* scegliere solo *Server SSH* e
62
63
  *Utilità di sistema standard* (il resto si installerà dopo).

64

65
66
67
68
69
70
Configurazione di ``cloud-init``
-------

Una volta completata l'installazione base si potrà passare a preparare il
server. Dato che l'installazione di default blocca l'accesso in SSH a root, o
si usa l'utente normale provvisorio creato in fase di installazione e si usa
Simone Piccardi's avatar
Simone Piccardi committed
71
72
``su`` o ``sudo``, o ci si collega sulla console via web. Tutte le operazioni
seguenti sono da eseguirsi dall'utente ``root``.
73

Simone Piccardi's avatar
Simone Piccardi committed
74
75
Il primo passo è abilitare da subito l'accesso di SSH a ``root``, inserendo
dentro ``/etc/ssh/sshd_config``::
76
77
78
79
80
81
82
83
84
85
86
87

  #PermitRootLogin prohibit-password
  PermitRootLogin yes

e riavviare ``sshd`` con ``service ssh restart``; non è necessario configurare
in questa fase l'uso di chiavi in ``authorized_keys``, queste possono essere
impostate in qualunque momento successivo tramite ``cloud-init``.

Si rimuova poi l'utente creato in fase di installazione con::

  userdel -r fuss

Simone Piccardi's avatar
Simone Piccardi committed
88
89
90
91
Occorrerà anzitutto installare ``cloud-init``, servono inoltre ``gnupg`` per
poter importare le chiavi di APT di FUSS, ``resolvconf`` per poter gestire la
configurazione del DNS attraverso ``cloud-init`` e ``bind9`` per poter
configurare da subito la macchina in modalità compatibile con la
92
93
94
configurazione che verrà impostata da ``fuss-server``::

  apt install cloud-init gnupg resolvconf bind9
95

96
97
98
99
100
101
inoltre per evitare che la voce di configurazione per ``lo`` presente in
``/etc/network/interfaces`` sovrascriva la stessa voce che ``cloud-init``
configura con un suo file (``50-cloud-init.cfg``) sotto
``/etc/network/interfaces.d`` si sposto la riga che include le configurazioni
da questa directory in fondo al file, in sostanza ``/etc/network/interfaces``
dovrà essere qualcosa del tipo::
102

103
104
105
106
107
108
109
110
111
112
113
114
  # This file describes the network interfaces available on your system
  # and how to activate them. For more information, see interfaces(5).
  
  # The loopback network interface
  auto lo
  iface lo inet loopback
  
  source /etc/network/interfaces.d/*

.. note:: si tenga presente che con questo ``/etc/network/interfaces`` non
	  verrà configurata automaticamente nessuna interfaccia di rete, e se
	  non si configura la stessa via ``cloud-init`` la macchina risulterà
Simone Piccardi's avatar
Simone Piccardi committed
115
116
117
118
	  raggiungibile solo sulla console, pertanto se vi si deve accedere
	  via rete per lavorarci sopra prima di creare l'immagine di
	  ``cloud-init`` si lasci presente la configurazione dell'interfaccia
	  che si intende utilizzare, rimuovendola nella fase di pulizia.
119
120
121
122
123
124
  
.. note:: si tenga presente che con questa configurazione si gestisce il
	  contenuto di ``/etc/resolv.conf`` con ``cloud-init``, ma questo file
	  viene anche scritto direttamente dal comando ``fuss-server``, per
	  cui si abbia cura di impostare via  ``cloud-init`` lo stesso nome a
	  dominio che si imposterà poi nel ``fuss-server`` e di indicare
125
	  sempre come server DNS ``127.0.0.1``.
126
	  
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
La configurazione di default installata da ``cloud-init`` prevede la creazione
di un utente di default ed il blocco dell'accesso come ``root``. La scelta del
progetto è di fornire un accesso diretto a ``root`` a chiavi, con la
possibilità di usare una password, per questo vanno fatte alcune modifiche in
``/etc/cloud/cloud.cfg``. Anzitutto si devono commentare in le due righe
relative alla gestione degli utenti locali creati di default come nell'esempio
seguente::

  # A set of users which may be applied and/or used by various modules
  # when a 'default' entry is found it will reference the 'default_user'
  # from the distro configuration specified below
  #users:
  #   - default

e poi bisogna evitare che venga applicata la configurazione che disabilita
l'uso dell'utente ``root``, configurando ``disable_root`` a ``false`` come
in::
  
  # If this is set, 'root' will not be able to ssh in and they
  # will get a message to login instead as the above $user (debian)
  disable_root: false

infine si aggiungano poi in coda al file le ulteriori configurazioni, che
consente ``cloud-init`` di gestire ``/etc/hosts``::
  
  manage_etc_hosts: true

154

155
Si aggiunga poi sotto ``/etc/cloud/cloud.cfg.d/`` il file ``10_fuss.cfg``,
156
con il contenuto seguente (le spaziature **non** devono contenere
Simone Piccardi's avatar
Simone Piccardi committed
157
158
159
tabulazioni), le chiavi citate sono quelle di APT per il repository di
``archive.fuss.bz.it`` e possono essere scaricate dallo stesso come indicato
sulla relativa pagina web:: 
160
  
Simone Piccardi's avatar
Simone Piccardi committed
161
162
163
164
165
  apt:
      sources:
          fuss-buster.list:
              source: "deb http://archive.fuss.bz.it/ buster main"
              key: |
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
                -----BEGIN PGP PUBLIC KEY BLOCK-----
                Version: GnuPG v1
                
                mQENBFhBb9EBCACuiJWfhUrHmECgdfWgjX44YB4XXRJBvWmRAsZevUQL8TeMw2fr
                5W3mkMzcfuZlye2ewIEqF9dN/ql9px92MhEkHacMiqdYN+2k2F4dvkgca3L0KSDM
                3VIPT643aY9DlVmgyx9X+y5nqTNHdT92VOhfiAJS7f2escA6L+TXHhqXe6KO6Svo
                RzeMGzHwtupFRt+3i45iaxiXOiEjXdZo8shc+6hXQWsN/zRe6MiW1yPEEceQT92z
                NzQsN2LO1YxprpxRlBiatNHId7PmEetm9nX4Rp56bwBn8wxF6QTCLeIKa4GX+3Ka
                hiMqGOJyDPAJW01Huhwho+/WJ+/KChCohMRnABEBAAG0LUZ1c3MgUGFja2FnZSBS
                ZXBvc2l0b3J5IDxwYWNrYWdlc0BmdXNzLmJ6Lml0PokBOAQTAQIAIgUCWEFv0QIb
                AwYLCQgHAwIGFQgCCQoLBBYCAwECHgECF4AACgkQIpz3qHHHyCPGJQf/ZSv4JWYL
                F2uoI7+S/HETOTYa/47mAJr5UuggGMZlBU3C/ySzoe2F43tF83WqyY6LWVd8Gi0S
                FM0ZiF6I8OwKwXoWzyT0nj+Ukm+tWonllSvkLgXMfPWYqCi5zrotmq8nNT8zKeXT
                /0likZL/8y0+LwNnrwlQWdnXi08lVX1GZn5z2jWJL6s0g6XBXdh+QyN1b3FDzVEz
                7Twrc4mwlt7mPk4nzqUsJQY//yzh4HsWLewnriQ58qO8tVauzPxwrxLi7A5tZIHP
                6nljxBZiide5MnR2vjv8vLSntwwZE7r/Ex93e1+r3nx/oRC69kVdVLnMyrKoxCsY
                DNq6rPu1oi0YiLkBDQRYQW/RAQgAqR7cBTusW/NSqOetDw2QszNNkTc7OaI9+iQu
                0QBG0+QYzEs7M6jZBjGReqCpQ6mquPVU2q0xAYnVNG6J+4W+QsGhOsOO8jQOxMTi
                3BUsjItgzWhEEyQaMMjEL8/HuQ2uzp7jv19HF6KnDSJ74thCI+Pc/8BRf2fRIja0
                nyndAFfSpDI3gLRFGqFzqF8sQQ61vCyue0UtlkzDpCPqVqKrty26QZT9fzoKSLkc
                VzSXJ/IYW5+9J8vfWzRadY02MdpTzR+9p5L4Jfr+nUVlM8G7lc0KHjvQz+FsKrwV
                otBuMGu+EN4D74JowjB5AwGyEMfzP+qiKLy2jklHUx904wKkEQARAQABiQEfBBgB
                AgAJBQJYQW/RAhsMAAoJECKc96hxx8gjHZsH/jMJE4HDRA0mBSVuU81hxxNaF1T/
                vpxk0r+VlUcuDAo/GdnIMkMchki6Fv72DslxkoXRfD2Mues/eE4YV5824MUQDGkf
                nNYs9X3wdQNITMdwfkVArly8dm7Jo2UaJtGoZeHKG7TcVv/UwYA+0PxZUynaQxW+
                LBNA5lQUIryaFCqz0NaNojFMqrBf665ws95HKEqBSdY6+fPZtoPkUlFra4GTiZlf
                Hythrz0bh1b0+N/MlWMIegmgGgVaNq6942zAjwy8oHr+wwA5b2s4YY3NbTQinI+v
                jg3H27aWWlxME27u63o/gm4zXGk4taPBph81WvbORP50ztDAk2UfIVTWCeQ=
                =fwLI
                -----END PGP PUBLIC KEY BLOCK-----
Simone Piccardi's avatar
Simone Piccardi committed
196
          fuss-proposed-updates.list:
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
            source: "deb http://archive.fuss.bz.it/ buster-proposed-updates main"
            key: |
                -----BEGIN PGP PUBLIC KEY BLOCK-----
                Version: GnuPG v1
                
                mQENBFhBb9EBCACuiJWfhUrHmECgdfWgjX44YB4XXRJBvWmRAsZevUQL8TeMw2fr
                5W3mkMzcfuZlye2ewIEqF9dN/ql9px92MhEkHacMiqdYN+2k2F4dvkgca3L0KSDM
                3VIPT643aY9DlVmgyx9X+y5nqTNHdT92VOhfiAJS7f2escA6L+TXHhqXe6KO6Svo
                RzeMGzHwtupFRt+3i45iaxiXOiEjXdZo8shc+6hXQWsN/zRe6MiW1yPEEceQT92z
                NzQsN2LO1YxprpxRlBiatNHId7PmEetm9nX4Rp56bwBn8wxF6QTCLeIKa4GX+3Ka
                hiMqGOJyDPAJW01Huhwho+/WJ+/KChCohMRnABEBAAG0LUZ1c3MgUGFja2FnZSBS
                ZXBvc2l0b3J5IDxwYWNrYWdlc0BmdXNzLmJ6Lml0PokBOAQTAQIAIgUCWEFv0QIb
                AwYLCQgHAwIGFQgCCQoLBBYCAwECHgECF4AACgkQIpz3qHHHyCPGJQf/ZSv4JWYL
                F2uoI7+S/HETOTYa/47mAJr5UuggGMZlBU3C/ySzoe2F43tF83WqyY6LWVd8Gi0S
                FM0ZiF6I8OwKwXoWzyT0nj+Ukm+tWonllSvkLgXMfPWYqCi5zrotmq8nNT8zKeXT
                /0likZL/8y0+LwNnrwlQWdnXi08lVX1GZn5z2jWJL6s0g6XBXdh+QyN1b3FDzVEz
                7Twrc4mwlt7mPk4nzqUsJQY//yzh4HsWLewnriQ58qO8tVauzPxwrxLi7A5tZIHP
                6nljxBZiide5MnR2vjv8vLSntwwZE7r/Ex93e1+r3nx/oRC69kVdVLnMyrKoxCsY
                DNq6rPu1oi0YiLkBDQRYQW/RAQgAqR7cBTusW/NSqOetDw2QszNNkTc7OaI9+iQu
                0QBG0+QYzEs7M6jZBjGReqCpQ6mquPVU2q0xAYnVNG6J+4W+QsGhOsOO8jQOxMTi
                3BUsjItgzWhEEyQaMMjEL8/HuQ2uzp7jv19HF6KnDSJ74thCI+Pc/8BRf2fRIja0
                nyndAFfSpDI3gLRFGqFzqF8sQQ61vCyue0UtlkzDpCPqVqKrty26QZT9fzoKSLkc
                VzSXJ/IYW5+9J8vfWzRadY02MdpTzR+9p5L4Jfr+nUVlM8G7lc0KHjvQz+FsKrwV
                otBuMGu+EN4D74JowjB5AwGyEMfzP+qiKLy2jklHUx904wKkEQARAQABiQEfBBgB
                AgAJBQJYQW/RAhsMAAoJECKc96hxx8gjHZsH/jMJE4HDRA0mBSVuU81hxxNaF1T/
                vpxk0r+VlUcuDAo/GdnIMkMchki6Fv72DslxkoXRfD2Mues/eE4YV5824MUQDGkf
                nNYs9X3wdQNITMdwfkVArly8dm7Jo2UaJtGoZeHKG7TcVv/UwYA+0PxZUynaQxW+
                LBNA5lQUIryaFCqz0NaNojFMqrBf665ws95HKEqBSdY6+fPZtoPkUlFra4GTiZlf
                Hythrz0bh1b0+N/MlWMIegmgGgVaNq6942zAjwy8oHr+wwA5b2s4YY3NbTQinI+v
                jg3H27aWWlxME27u63o/gm4zXGk4taPBph81WvbORP50ztDAk2UfIVTWCeQ=
                =fwLI
                -----END PGP PUBLIC KEY BLOCK-----
Simone Piccardi's avatar
Simone Piccardi committed
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
  packages:
    - fuss-server

Pulizia
-------

Una volte effettuate le configurazioni precedenti si proceda a ripulire
l'immagine da tutti i dati spuri, ci si sconnetta e ci si riconnetta eseguendo
il comando::

  set +o history

e si eseguano poi i comandi::

  apt clean
  > .bash_history
  find /etc -name "*~" -delete
  cd /var/log/
  > syslog
  > auth.log
  > cloud-init.log
  > cloud-init-output.log
  > debug
  > dpkg.log
  > messages
  > kern.log
  > user.log
  > daemon.log
  

Se si è lasciato la configurazione dell'interfaccia di rete principale usata
in fase di installazione dentro ``/etc/network/interfaces`` la si rimuova.
261
262
263
264
265
266


Generazione dell'immagine
----------------

Una volte effettuate le configurazioni precedenti, si fermi la macchina
Simone Piccardi's avatar
Simone Piccardi committed
267
virtuale e se ne esegua un backup, chiedendo la compressione. Si troverà il
268
269
270
271
272
273
file del backup sotto ``/var/lib/vz/dump`` (o nella directory che si è
configurato come storage di backup) nella forma::
  
  vzdump-qemu-VMID-ANNO_ME_GI-OR_MI_SE.vma.lzo

e questo potrà essere caricato sul repository per il download da parte degli
Simone Piccardi's avatar
Simone Piccardi committed
274
275
276
277
278
279
280
utilizzatori, con qualcosa del tipo::

  scp /var/lib/vz/dump/vzdump-qemu-103-2020_04_02-20_32_20.vma.lzo \
      root@iso.fuss.bz.it:/var/www/iso/cloud-init/

ci si colleghi poi su ``iso.fuss.bz.it`` e si aggiorni il link simbolico che
punta all'immagine con::
281

Simone Piccardi's avatar
Simone Piccardi committed
282
283
284
  cd /var/www/iso/cloud-init/
  ln -s vzdump-qemu-VMID-ANNO_ME_GI-OR_MI_SE.vma.lzo \
        vzdump-qemu-fuss-server-10.0-latest.vma.lzo
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299

..  LocalWords:  cloud init FUSS Buster dump Proxmox fuss tech VM wizard wget
..  LocalWords:  portal netinstall CDROM storage local qcow DHCP deploy root
..  LocalWords:  swap SSH PermitRootLogin prohibit yes sshd service ssh keys
..  LocalWords:  restart authorized userdel gnupg APT resolvconf DNS bind apt
..  LocalWords:  install cfg This describes the interfaces available your and
..  LocalWords:  system how to activate them For information see loopback of
..  LocalWords:  interface iface inet source users which may applied used is
..  LocalWords:  various modules when entry found it will reference from If
..  LocalWords:  distro configuration specified below disable this not able
..  LocalWords:  they get message instead as above debian manage hosts true
..  LocalWords:  repository sources buster list deb main key BEGIN PGP PUBLIC
..  LocalWords:  BLOCK Version GnuPG proposed updates packages history clean
..  LocalWords:  bash find name delete syslog auth log debug dpkg messages ln
..  LocalWords:  kern daemon scp