Skip to content

Commit de02516

Browse files
New translations 05_image_builders_perspective.md (Italian)
1 parent 000ce91 commit de02516

File tree

1 file changed

+141
-0
lines changed

1 file changed

+141
-0
lines changed
Lines changed: 141 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,141 @@
1+
---
2+
title: 5. La prospettiva del image builder
3+
author: Wale Soyinka
4+
contributors: Steven Spencer
5+
tags:
6+
- cloud-init
7+
- rocky linux
8+
- cloud
9+
- automation
10+
- image-building
11+
---
12+
13+
## Impostazioni predefinite e generalizzazione
14+
15+
Finora, il nostro percorso si è concentrato sulla configurazione delle singole istanze all'avvio utilizzando `user-data`. In questo capitolo, cambieremo prospettiva e assumeremo quella di un **image builder**. Cioè qualcuno che crea e gestisce le “golden images” che fungono da modelli per altre macchine virtuali.
16+
17+
Il nostro obiettivo è quello di creare una nuova immagine personalizzata con le nostre policies ed impostazioni predefinite integrate. Ciò comporta due passaggi fondamentali:
18+
19+
1. **Personalizzazione delle impostazioni predefinite a livello di sistema:** Modifica della configurazione `cloud-init` _all'interno dell'immagine stessa_.
20+
2. **Generalizzazione dell'immagine:** utilizzo di strumenti quali `cloud-init clean` e `virt-sysprep` per rimuovere tutti i dati specifici della macchina, preparando l'immagine per la clonazione.
21+
22+
## 1) Configurazione del laboratorio di personalizzazione
23+
24+
Per iniziare, abbiamo bisogno di un'istanza funzionante dell'immagine cloud di base da poter modificare. Avvieremo questa VM _senza_ fornire alcun `dato utente` per ottenere un sistema pulito.
25+
26+
```bash
27+
# Create un'immagine disco per il nostro nuovo modello
28+
qemu-img create -f qcow2 -o size=10G golden-image-template.qcow2
29+
30+
# Avviate l'immagine di base utilizzando virt-install
31+
virt-install --name golden-image-builder \
32+
--memory 2048 --vcpus 2 \
33+
--disk path=golden-image-template.qcow2,format=qcow2 \
34+
--cloud-init none --os-variant rockylinux10 --import
35+
36+
# Connettersi alla console ed effettuare il login come utente predefinito “rocky”.
37+
virsh console golden-image-builder
38+
```
39+
40+
## 2. Configurazione a livello di sistema con `cloud.cfg.d`
41+
42+
All'interno della nostra VM in esecuzione, ora possiamo personalizzare la configurazione `cloud-init` a livello di sistema. Non modificare mai direttamente il file master, `/etc/cloud/cloud.cfg`. La posizione corretta e sicura per gli aggiornamenti delle personalizzazioni è la directory `/etc/cloud/cloud.cfg.d/`. `cloud-init` legge tutti i file `.cfg` qui presenti in ordine alfabetico dopo il file principale `cloud.cfg`, consentendo di sovrascrivere le impostazioni predefinite.
43+
44+
### Hands-on: impostazione dei valori predefiniti della golden image
45+
46+
Applichiamo una policy sul nostro golden image: disabiliteremo l'autenticazione tramite password, imposteremo un nuovo utente predefinito e garantiremo che sia sempre installato un set di pacchetti di base.
47+
48+
1. **Creare un file di configurazione personalizzato:** dall'interno della VM, creare `/etc/cloud/cloud.cfg.d/99-custom-defaults.cfg`. Il prefisso “99-” assicura che venga letto per ultimo.
49+
50+
```bash
51+
sudo cat <<EOF > /etc/cloud/cloud.cfg.d/99-custom-defaults.cfg
52+
# Golden Image Customizations
53+
54+
# Define a new default user named 'admin'
55+
system_info:
56+
default_user:
57+
name: admin
58+
sudo: ["ALL=(ALL) NOPASSWD:ALL"]
59+
shell: /bin/bash
60+
61+
# Enforce key-based SSH authentication
62+
ssh_pwauth: false
63+
64+
# Ensure a baseline of packages is always installed
65+
packages:
66+
- htop
67+
- vim-enhanced
68+
EOF
69+
```
70+
71+
!!! tip "Disabilitazione di moduli specifici"
72+
73+
Una tecnica per una sicurezza efficace consiste nel disabilitare completamente determinati moduli `cloud-init`. Ad esempio, per impedire a qualsiasi utente di utilizzare `runcmd`, è possibile aggiungere quanto segue al file `.cfg` personalizzato. In questo modo si indica a `cloud-init` di eseguire un elenco vuoto di moduli durante la fase finale.
74+
75+
`yaml cloud_final_modules: [] `
76+
77+
## 3. Generalizzare l'immagine
78+
79+
La nostra VM ora contiene la nostra configurazione personalizzata, ma contiene anche identificatori univoci della macchina (come `/etc/machine-id`) e chiavi host SSH. Prima di poterlo clonare, dobbiamo rimuovere questi dati attraverso un processo chiamato **generalizzazione**.
80+
81+
### Metodo 1: `cloud-init clean` (all'interno della VM)
82+
83+
`cloud-init` fornisce un comando integrato per questo scopo.
84+
85+
1. **Eseguire `cloud-init clean`:** dall'interno della VM, eseguire il seguente comando per rimuovere i dati specifici dell'istanza.
86+
87+
```bash
88+
sudo cloud-init clean --logs --seed
89+
```
90+
91+
!!! note "Riguardo a `cloud-init clean --seed`"
92+
93+
```
94+
Questo comando rimuove il seed univoco utilizzato da `cloud-init` per identificare l'istanza, costringendola a eseguire il processo da zero al successivo avvio. **Non** rimuove le configurazioni personalizzate in `/etc/cloud/cloud.cfg.d/`. Questo passaggio è essenziale per creare un modello veramente generico.
95+
```
96+
97+
2. **Spegnimento immediato:** dopo la pulizia, spegnere immediatamente la VM.
98+
99+
```bash
100+
sudo poweroff
101+
```
102+
103+
### Metodo 2: `virt-sysprep` (dall'host)
104+
105+
Uno strumento ancora più completo e conforme agli standard del settore è `virt-sysprep`. È possibile eseguire questa operazione dal computer host sul disco della macchina virtuale spenta. Esegue tutte le azioni di `cloud-init clean` e molto altro ancora, come cancellare la cronologia dei comandi, rimuovere i file temporanei e reimpostare i file di log.
106+
107+
1. **Assicurarsi che la VM sia spenta.**
108+
109+
2. **Eseguire `virt-sysprep` dal vostro host:**
110+
111+
```bash
112+
sudo virt-sysprep -a golden-image-template.qcow2
113+
```
114+
115+
Una volta completato il processo di generalizzazione, il file su disco (`golden-image-template.qcow2`) diveterà la vostra nuova nuova golden image.
116+
117+
!!! note "Convenzioni di denominazione delle golden image"
118+
119+
È buona norma assegnare alle golden image nomi descrittivi che includano il sistema operativo e il numero di versione, ad esempio `rocky10-base-v1.0.qcow2`. Ciò facilita il controllo delle versioni e la gestione dell'infrastruttura.
120+
121+
## 4. Verificare la golden image
122+
123+
Proviamo la nostra nuova immagine avviando una nuova istanza _da_ essa senza alcun `user-data`.
124+
125+
1. **Creare un nuovo VM disk dalla nostra golden image:**
126+
127+
```bash
128+
qemu-img create -f qcow2 -F qcow2 -b golden-image-template.qcow2 test-instance.qcow2
129+
```
130+
131+
2. **Avviare l'istanza di prova:**
132+
133+
```bash
134+
virt-install --name golden-image-test --cloud-init none ...
135+
```
136+
137+
3. **Verifica:** Connettersi alla console (`virsh console golden-image-test`). La richiesta di accesso dovrebbe essere per l'utente `admin`, non per `rocky`. Una volta effettuato l'accesso, è anche possibile verificare l'installazione di `htop` con (`rpm -q htop`). Questo conferma che le impostazioni predefinite integrate funzionano correttamente.
138+
139+
## Il passo successivo
140+
141+
Ora avete imparato come creare modelli standardizzati integrando le impostazioni predefinite nella configurazione di sistema di `cloud-init` e generalizzandoli correttamente per la clonazione. Nel prossimo capitolo tratteremo le competenze essenziali per la risoluzione dei problemi quando `cloud-init` non funziona come previsto.

0 commit comments

Comments
 (0)