Commit 49f4d8f0 authored by Simone Piccardi's avatar Simone Piccardi
Browse files

Merge branch 'master' of gitlab.com:fusslab/fuss-dev-guide

parents ac56ddfb b319641f
Creazione dell'immagine cloud-init
=====
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:
* 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
*Utilità di sistema standard* (il resto si installerà dopo).
Preparazione dell'installazione base
----------
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
``su`` o ``sudo``, o ci si collega sulla console via web. Tutte le operazioni
seguenti sono da eseguirsi dall'utente ``root``.
Il primo passo è abilitare da subito l'accesso di SSH a ``root``, inserendo
dentro ``/etc/ssh/sshd_config``::
#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
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
configurazione che verrà impostata da ``fuss-server``::
apt install cloud-init gnupg resolvconf bind9
Occorre poi configurare opportunamente ``/etc/apt/sources.list`` per usare i
repository di fuss, si utilizzi un contenuto analogo al seguente::
# buster sources
deb http://deb.debian.org/debian/ buster main
deb-src http://deb.debian.org/debian/ buster main
deb http://security.debian.org/debian-security buster/updates main
deb-src http://security.debian.org/debian-security buster/updates main
# buster-updates, previously known as 'volatile'
deb http://deb.debian.org/debian/ buster-updates main
deb-src http://deb.debian.org/debian/ buster-updates main
# fuss-sources
deb http://archive.fuss.bz.it/ buster main
deb http://archive.fuss.bz.it/ buster-proposed-updates main
(in genere basta aggiungere le ultime due righe), inoltre si deve importare la
chiave GPG di firma dei pacchetti, con::
wget -qO - https://archive.fuss.bz.it/apt.key | sudo apt-key add -
Infine 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 sotto ``/etc/network/interfaces.d``
(``50-cloud-init.cfg``) si sposti la riga che include le configurazioni da
questa directory in fondo al file, in sostanza ``/etc/network/interfaces``
dovrà essere qualcosa del tipo::
# 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à
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.
.. 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
sempre come server DNS ``127.0.0.1``.
Configurazione di ``cloud-init``
-------
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
Si aggiunga poi sotto ``/etc/cloud/cloud.cfg.d/`` il file ``10_fuss.cfg``, con
il contenuto seguente (attenzione: le spaziature **non** devono contenere
tabulazioni)::
apt:
preserve_sources_list: true
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::
> .bash_history
apt clean
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.
Generazione dell'immagine
----------------
Una volte effettuate le configurazioni precedenti, si fermi la macchina
virtuale e se ne esegua un backup, chiedendo la compressione. Si troverà il
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
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::
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
.. 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
......@@ -15,6 +15,7 @@ Il presente manuale è una guida alla manutenzione ed allo sviluppo della distri
metapacchetti
fuss-server
fuss-client
cloud-init-image
iso
nuova-versione-debian
macchine-virtuali-libvirt-qemu-kvm
......
......@@ -136,6 +136,10 @@ Quindi creare le chroot base per le distribuzioni attualmente (giugno
--mirror <un mirror debian valido> --components main
si faccia attenzione che con jessie, che è archiviata, non si può usare un
mirror qualunque, si deve invece specificare::
--mirror http://ftp.debian.org/debian --components main
Aggiungere i repository di backports e fuss alle chroot base appena
create: fare login nella chroot::
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment