Skip to content

Commit 82412a4

Browse files
New translations 07_contributing.md (Italian)
1 parent 1100c44 commit 82412a4

File tree

1 file changed

+135
-0
lines changed

1 file changed

+135
-0
lines changed
Lines changed: 135 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,135 @@
1+
---
2+
title: 7. Contribuire
3+
author: Wale Soyinka
4+
contributors: Steven Spencer, Ganna Zhyrnova
5+
tags:
6+
- cloud-init
7+
- open source
8+
- development
9+
- python
10+
---
11+
12+
## Contribuire al progetto cloud-init
13+
14+
Congratulazioni! Abbiamo affrontato i concetti fondamentali di `cloud-init` fino alle tecniche avanzate di provisioning e risoluzione dei problemi. Ora siete un utente esperto di `cloud-init`. Questo capitolo finale apre le porte alla fase successiva del tuo percorso: passare dall'essere un utente di `cloud-init` a un potenziale collaboratore.
15+
16+
`cloud-init` è un progetto open source fondamentale che prospera grazie ai contributi della comunità. Che si tratti di correggere un errore tipografico nella documentazione, segnalare un bug o scrivere un modulo completamente nuovo, ogni contributo è utile. Questo capitolo fornisce una panoramica di alto livello per comprendere il codice sorgente, creare un modulo personalizzato e interagire con la comunità upstream. Non è una guida completa per sviluppatori, ma piuttosto un'introduzione amichevole per iniziare a partecipare.
17+
18+
## 1. Il panorama del codice sorgente di `cloud-init`
19+
20+
Prima di poter contribuire, devi conoscere bene il progetto. Esploriamo il codice sorgente e configuriamo un ambiente di sviluppo di base.
21+
22+
### Il linguaggio e la repository
23+
24+
Scritto quasi interamente in **Python**, Canonical ospita il repository del codice sorgente `cloud-init` su **Launchpad**, ma per facilitare la collaborazione e offrire un'interfaccia più familiare, la maggior parte dei contributori interagisce con il suo mirror ufficiale su **GitHub**.
25+
26+
- **Canonical repository (Launchpad):** [https://git.launchpad.net/cloud-init](https://git.launchpad.net/cloud-init)
27+
28+
- **GitHub mirror:** [https://github.com/canonical/cloud-init](https://github.com/canonical/cloud-init)
29+
30+
Per ottenere il codice sorgente, è possibile clonare il repository GitHub:
31+
32+
```bash
33+
# Clonare il codice sorgente sulla macchina locale
34+
git clone https://github.com/canonical/cloud-init.git
35+
cd cloud-init
36+
```
37+
38+
### Configurare di un ambiente di sviluppo
39+
40+
Per lavorare sul codice senza influire sui pacchetti Python del sistema, è consigliabile utilizzare sempre un ambiente virtuale.
41+
42+
```bash
43+
# Creare un ambiente virtuale Python
44+
python3 -m venv .venv
45+
46+
# Attivare l'ambiente virtuale
47+
source .venv/bin/activate
48+
49+
# Installare le dipendenze di sviluppo richieste
50+
pip install -r requirements-dev.txt
51+
```
52+
53+
### Una panoramica di alto livello sul codice sorgente
54+
55+
Navigare nel codice sorgente per la prima volta può essere scoraggiante. Ecco le directory più importanti:
56+
57+
- `cloudinit/`: questa è la directory principale dei sorgenti Python.
58+
- `cloudinit/sources/`: questa directory contiene il codice per le **fonti dati** (ad esempio, `DataSourceNoCloud.py`). Ecco come `cloud-init` rileva e legge la configurazione da diverse piattaforme cloud.
59+
- `cloudinit/config/`: qui risiedono i **moduli** (ad esempio, `cc_packages.py`, `cc_users_groups.py`). Il prefisso `cc_` è una convenzione per i moduli abilitati da `#cloud-config`. Questo è il percorso più comune per i contributi relativi alle nuove funzionalità.
60+
- `doc/`: La documentazione ufficiale del progetto. Migliorare la documentazione è uno dei modi migliori per dare il tuo primo contributo.
61+
- `tests/`: La suite di test completa per il progetto.
62+
63+
## 2. Scrivere un modulo personalizzato di base
64+
65+
Sebbene `runcmd` sia utile, scrivere un modulo personalizzato è il modo migliore per creare configurazioni riutilizzabili, portabili e idempotenti.
66+
67+
Creiamo il modulo più semplice possibile: uno che legga una chiave di configurazione da `user-data` e scriva un messaggio nel log `cloud-init`.
68+
69+
1. **Creare il file del modulo:** Creare un nuovo file denominato `cloudinit/config/cc_hello_world.py`.
70+
71+
```python
72+
# Nome file: cloudinit/config/cc_hello_world.py
73+
74+
# Elenco delle frequenze e delle fasi di esecuzione di questo modulo
75+
frequency = “once-per-instance”
76+
distros = [“all”]
77+
78+
def handle(name, cfg, cloud, log, args):
79+
# Ottieni una chiave “message” dalla configurazione dei dati utente.
80+
# Se non esiste, utilizzare un valore predefinito.
81+
message = cfg.get(“message”, “Ciao da un modulo personalizzato!”)
82+
83+
# Scrivere il messaggio nel log principale di cloud-init.
84+
log.info(f“Il modulo Hello World dice: {message}”)
85+
```
86+
87+
2. **Abilitare il modulo:** Creare il file non è sufficiente. È necessario indicare a `cloud-init` di eseguirlo. Creare un file in `/etc/cloud/cloud.cfg.d/99-my-modules.cfg` e aggiungere il nuovo modulo a uno degli elenchi di moduli:
88+
89+
```yaml
90+
# Aggiungere il nostro modulo personalizzato all'elenco dei moduli eseguiti durante la fase di configurazione
91+
cloud_config_modules:
92+
- hello_world
93+
```
94+
95+
3. **Utilizzare il modulo:** Ora si può utilizzare il modulo personalizzato nel vostro `user-data`. La chiave di primo livello (`hello_world`) deve corrispondere al nome del modulo senza il prefisso `cc_`.
96+
97+
```yaml
98+
#cloud-config
99+
hello_world:
100+
message: "My first custom module is working!"
101+
```
102+
103+
Dopo aver avviato una VM con questa configurazione, puoi controllare `/var/log/cloud-init.log` e troverai il tuo messaggio personalizzato, a dimostrazione che il tuo modulo ha funzionato.
104+
105+
## 3. Il workflow per contribuire
106+
107+
Il contributo a un progetto open source segue un workflow standard. Ecco una panoramica semplificata:
108+
109+
1. **Trova qualcosa su cui lavorare:** il punto di partenza migliore è l'issue tracker del progetto su Launchpad. Cerca bug o richieste di funzionalità. I nuovi arrivati sono incoraggiati a iniziare con correzioni alla documentazione o problemi contrassegnati come “low-hanging-fruit” (facili da risolvere) o “good first issue” (buoni primi problemi).
110+
111+
2. **Fork e branch:** creare una vostra copia (un “fork”) del repository `cloud-init` su GitHub. Quindi, creare un nuovo ramo per le vostre modifiche.
112+
113+
```bash
114+
git checkout -b my-documentation-fix
115+
```
116+
117+
3. **Apportare le modifiche e conferma:** Apportare le modifiche al codice o alla documentazione. Quando si esegue il commit, si scriva un messaggio chiaro che descriva ciò che si è fatto. Il flag `-s` aggiunge una riga `Signed-off-by`, che certifica che si è scritto la patch o che si ha il diritto di contribuire ad essa.
118+
119+
```bash
120+
git commit -s -m “Doc: correzione di un errore tipografico nella documentazione del modulo utenti”
121+
```
122+
123+
4. **Includere i test:** tutti i contributi significativi, in particolare le nuove funzionalità, devono includere i test. Esplorare la directory `tests/` per vedere come vengono testati i moduli esistenti.
124+
125+
5. **Invia una richiesta pull (PR):** invia il tuo ramo al tuo fork su GitHub e apri una richiesta pull al ramo `main` del repository `canonical/cloud-init`. Questa è la vostra richiesta formale per includere il vostro lavoro nel progetto.
126+
127+
6. **Partecipare alla revisione del codice:** i responsabili del progetto esamineranno la vostra richiesta di pull. Potrebbero porre domande o richiedere modifiche. Si tratta di un processo collaborativo. Interagire con il feedback è una parte fondamentale del contributo all'open source.
128+
129+
### Coinvolgimento della comunità
130+
131+
Per saperne di più, porre domande e interagire con la comunità, è possibile partecipare al canale `#cloud-init` sulla rete IRC OFTC o alla mailing list ufficiale.
132+
133+
## Un'ultima cosa
134+
135+
Congratulazioni per aver completato questa guida. Si è passati da utente principiante a utente esperto di `cloud-init` e ora avete una mappa che vi guiderà nel mondo del open source per contribuirvi. La comunità `cloud-init` è accogliente e apprezza i tuoi contributi, anche se piccoli. Happy building!

0 commit comments

Comments
 (0)