diff --git a/docs/books/admin_guide/01-presentation.it.md b/docs/books/admin_guide/01-presentation.it.md index 45af01b52f..0238d079fa 100644 --- a/docs/books/admin_guide/01-presentation.it.md +++ b/docs/books/admin_guide/01-presentation.it.md @@ -10,7 +10,7 @@ In questo capitolo imparerete a conoscere le distribuzioni GNU/Linux. **** -**Obiettivi**: In questo capitolo imparerai a: +**Obiettivi**: In questo capitolo si apprenderà come: :heavy_check_mark: Descrivere le caratteristiche e le possibili architetture di un sistema operativo.. :heavy_check_mark: Raccontare la storia di UNIX e GNU/Linux. @@ -20,17 +20,16 @@ In questo capitolo imparerete a conoscere le distribuzioni GNU/Linux. :checkered_flag: **generalità**, **linux**, **distribuzioni** +**Conoscenza**: :star: **Complessità**: :star: -**Complexity**: :star: - **Tempo di lettura**: 10 minuti **** ## Che cos'è un sistema operativo? -Linux, UNIX, BSD, VxWorks, Windows e MacOS sono tutti **sistemi operativi**. +Linux, UNIX, BSD, Windows e MacOS sono tutti **sistemi operativi**. !!! abstract "Astrazione" @@ -44,7 +43,7 @@ Nell'ambito di questa gestione delle risorse, il sistema operativo deve: * La **memoria virtuale** è una posizione sul disco rigido (la partizione **swap**) che consente di svuotare la memoria fisica e di salvare lo stato attuale del sistema durante lo spegnimento elettrico del computer. -* Intercettare **l'accesso alle periferiche**. Raramente il software può accedere direttamente all'hardware (ad eccezione delle schede grafiche per esigenze molto specifiche). +* Intercettare **l'accesso alle periferiche**. Raramente il software può accedere direttamente all'hardware (ad eccezione delle schede grafiche per esigenze specifiche). * Fornire alle applicazioni una corretta **gestione delle attività**. Il sistema operativo è responsabile della pianificazione dei processi che occupano il processore @@ -62,11 +61,11 @@ Nell'ambito di questa gestione delle risorse, il sistema operativo deve: * **1964 - 1968**: MULTICS (MULTiplexed Information and Computing Service) è stato sviluppato per il MIT, i Bell Labs (AT&T) e General Electric. -* **1969 — 1971**: Dopo il ritiro di Bell (1969) e poi di General Electric dal progetto, due sviluppatori, Ken Thompson e Dennis Ritchie (a cui si aggiunge in seguito Brian Kernighan), giudicando MULTICS troppo complesso, iniziano lo sviluppo di UNIX (UNiplexed Information and Computing Service). Sebbene sia stato originariamente creato in linguaggio Assembly, i creatori di UNIX svilupparono alla fine il linguaggio B e poi il linguaggio C (1971) e riscrissero completamente UNIX. Poiché è stato sviluppato nel 1970, la data di riferimento (epoch) per l'inizio del periodo di tempo dei sistemi UNIX/Linux è fissata al 01 gennaio 1970. +* **1969 — 1971**: Dopo il ritiro di Bell (1969) e poi di General Electric dal progetto, due sviluppatori, Ken Thompson e Dennis Ritchie (a cui si aggiunge in seguito Brian Kernighan), giudicando MULTICS troppo complesso, iniziano lo sviluppo di UNIX (UNiplexed Information and Computing Service). Pur essendo stato creato in linguaggio Assembly, i creatori di UNIX svilupparono alla fine il linguaggio B e poi il linguaggio C (1971) e riscrissero completamente UNIX. Poiché è stato sviluppato nel 1970, la data di riferimento (epoch) per l'inizio del periodo di tempo dei sistemi UNIX/Linux è fissata al 01 gennaio 1970. -Il linguaggio C rimane ancora oggi uno dei linguaggi di programmazione più diffusi. Un linguaggio di basso livello, a contatto con l'hardware, che permette di adattare il sistema operativo a qualsiasi architettura di macchina dotata di un compilatore C. +Il C rimane oggi uno dei linguaggi di programmazione più diffusi. Un linguaggio di basso livello vicino all'hardware, che consente di adattare il sistema operativo a qualsiasi architettura di macchina dotata di un compilatore C. -UNIX è un sistema operativo aperto e in continua evoluzione che ha svolto un ruolo fondamentale nella storia dell'informatica. Costituisce la base di molti altri sistemi come Linux, BSD, MacOS e altri ancora. +UNIX è un sistema operativo aperto e in continua evoluzione che ha svolto un ruolo fondamentale nella storia dell'informatica. Costituisce la base di molti altri sistemi come Linux, BSD, macOS e altri ancora. UNIX è ancora rilevante al giorno d'oggi (HP-UX, AIX, Solaris, ecc.). @@ -114,7 +113,7 @@ Linux equipaggia poco più del **3% dei personal computer** ma più dell'**82% d -Linux equipaggia il 100% dei 500 supercomputer dal 2018. Un supercomputer è un computer progettato per ottenere le massime prestazioni possibili con le tecniche conosciute al momento della sua progettazione, soprattutto per quanto riguarda la velocità di calcolo. +Linux equipaggia il 100% dei 500 supercomputer dal 2018. Un supercomputer è un computer progettato per ottenere le massime prestazioni possibili con le tecniche conosciute durante la sua progettazione, soprattutto per quanto riguarda la velocità di calcolo. ### Progettazione dell'architettura @@ -136,7 +135,7 @@ Linux equipaggia il 100% dei 500 supercomputer dal 2018. Un supercomputer è un #### Multi-task -Linux appartiene alla famiglia dei sistemi operativi con condivisione del tempo. Divide il tempo di elaborazione tra diversi programmi, passando da uno all'altro in modo trasparente per l'utente. Questo implica: +Linux appartiene alla famiglia dei sistemi operativi a condivisione di tempo. Divide il tempo di elaborazione tra diversi programmi, passando da uno all'altro in modo trasparente per l'utente. Questo implica: * Esecuzione simultanea di più programmi. * Distribuzione del tempo di CPU da parte dello scheduler. @@ -145,7 +144,7 @@ Linux appartiene alla famiglia dei sistemi operativi con condivisione del tempo. #### Multiutente -Lo scopo di MULTICS era quello di consentire a più utenti di lavorare su più terminali (schermo e tastiera) da un unico computer (all'epoca molto costoso). Linux, ispirandosi a questo sistema operativo, ha mantenuto la capacità di lavorare con più utenti contemporaneamente e in modo indipendente, ognuno dei quali dispone di un proprio account utente con spazio di memoria e diritti di accesso a file e software. +Lo scopo di MULTICS era quello di consentire agli utenti di lavorare da diversi terminali (schermo e tastiera) su un unico computer (all'epoca molto costoso). Ispirandosi a questo sistema operativo, Linux ha mantenuto la capacità di lavorare con più utenti contemporaneamente e in modo indipendente, ciascuno con il proprio account utente con spazio di memoria e diritti di accesso a file e software. #### Multiprocessore @@ -153,7 +152,7 @@ Linux è in grado di lavorare con computer multiprocessore o con processori mult #### Multipiattaforma -Linux è scritto in un linguaggio di alto livello che può essere adattato a diversi tipi di piattaforme durante la compilazione. Questo permette di funzionare su: +Linux è scritto in un linguaggio di alto livello che può essere adattato a diverse piattaforme durante la compilazione. Questo permette di funzionare su: * Computer di casa (PC o laptop) * Server (dati, applicazioni,...) @@ -164,7 +163,7 @@ Linux è scritto in un linguaggio di alto livello che può essere adattato a div #### Aperto -Linux si basa su standard riconosciuti come [POSIX](http://en.wikipedia.org/wiki/POSIX), [TCP/IP](https://en.wikipedia.org/wiki/Internet_protocol_suite), [NFS](https://en.wikipedia.org/wiki/Network_File_System) e [Samba](https://en.wikipedia.org/wiki/Samba_(software)), che gli consentono di condividere dati e servizi con altri sistemi operativi. +Linux si basa su standard riconosciuti come [POSIX](http://en.wikipedia.org/wiki/POSIX), [TCP/IP](https://en.wikipedia.org/wiki/Internet_protocol_suite), [NFS](https://en.wikipedia.org/wiki/Network_File_System), e [Samba](https://en.wikipedia.org/wiki/Samba_(software)), che gli consentono di condividere dati e servizi con altri sistemi applicativi. ### La filosofia UNIX/Linux @@ -172,12 +171,12 @@ Linux si basa su standard riconosciuti come [POSIX](http://en.wikipedia.org/wiki * Portabilità del valore. * Fai solo una cosa e falla bene. * KISS: Mantienilo semplice stupido (Keep It Simple Stupid). -* "UNIX è fondamentalmente un sistema operativo semplice, Ma devi essere un genio per capirne la semplicità." (**Dennis Ritchie**) +* "UNIX è un sistema operativo semplice, ma bisogna essere un genio per capirne la semplicità" (**Dennis Ritchie**) * "Unix è facile da usare. Solamente che non è chiaro con quali utenti sia amichevole." (**Steven King**) ## Le distribuzioni GNU/Linux -Una distribuzione Linux è un **insieme coerente di software** assemblato attorno al kernel Linux e pronto per essere installato insieme ai componenti necessari per gestire questo software (installazione, rimozione, configurazione). Ci sono distribuzioni **associative** o **comunitarie** (Debian, Rocky) o **commerciali** (RedHat, Ubuntu). +Una distribuzione Linux è un **insieme coerente di software** assemblato attorno al kernel Linux e pronto per essere installato insieme ai componenti necessari per gestire questo software (installazione, rimozione, configurazione). Ci sono distribuzioni **associative** o **comunitarie** (Debian, Rocky) e **commerciali** (RedHat, Ubuntu). Ogni distribuzione offre uno o più **ambienti desktop**, fornisce un set di software preinstallato e una libreria di software aggiuntivo. Le opzioni di configurazione (ad esempio le opzioni del kernel o dei servizi) sono specifiche per ogni distribuzione. @@ -187,7 +186,7 @@ Questo principio permette alle distribuzioni di essere orientate ai **principian Esistono numerosi ambienti grafici, come **GNOME**, **KDE**, **LXDE**, **XFCE**, etc. Ce n'è per tutti i gusti e la loro **ergonomia** regge il confronto con i sistemi Microsoft o Apple. -Allora perché c'è così poco entusiasmo per Linux, quando questo sistema è praticamente **privo di virus**? Potrebbe essere il motivo per cui cosi tanti editori (Adobe) e produttori (Nvidia) non sono gratuiti, né forniscono una versione del proprio software o dei propri **driver** per GNU/Linux? Forse è la paura del cambiamento, o la difficoltà nel trovare dove acquistare un computer Linux, o ancora i pochi giochi distribuiti sotto Linux. Almeno quest'ultima scusa non dovrebbe essere vera a lungo, con l'avvento del motore di gioco Steam per Linux. +Allora perché c'è così poco entusiasmo per Linux, quando questo sistema è praticamente **privo di virus**? Forse perché molti editori (Adobe) e produttori (Nvidia) non giocano ai giochi gratuiti e non forniscono una versione del loro software o **driver** per GNU/Linux? Forse è la paura del cambiamento, o la difficoltà nel trovare dove acquistare un computer Linux, o ancora i pochi giochi distribuiti sotto Linux. Quest'ultima scusa, almeno, non dovrebbe essere vera a lungo, con l'avvento del motore di gioco Steam per Linux. ![Desktop GNOME](images/01-presentation-gnome.png) @@ -195,13 +194,13 @@ L'ambiente desktop di **GNOME 3** non utilizza più il concetto di desktop ma qu ![Desktop KDE](images/01-presentation-kde.png) -L'ambiente desktop **KDE** si basa sulla libreria di componenti **Qt**. È tradizionalmente consigliato agli utenti che hanno familiarità con l'ambiente Windows. +L'ambiente desktop **KDE** è basato sulla libreria di componenti **Qt**. È tradizionalmente consigliato agli utenti che hanno familiarità con l'ambiente Windows. ![Tux - La mascotte di Linux](images/tux.png) ### Libero / Open source -Un utente di un sistema operativo Microsoft o Mac deve acquistare una licenza per utilizzare il sistema operativo. Questa licenza ha un costo, anche se di solito è trasparente (il prezzo della licenza è incluso nel prezzo del computer). +Gli utenti di sistemi operativi Microsoft o Mac devono acquistare una licenza per utilizzare il sistema. Questa licenza ha un costo, anche se di solito è trasparente (il prezzo della licenza è incluso nel prezzo del computer). Nel mondo **GNU/Linux**, il movimento del Software Libero fornisce principalmente distribuzioni libere. @@ -222,7 +221,7 @@ Questo implica: * La libertà di ridistribuire le copie. * La libertà di migliorare il programma e di pubblicare tali miglioramenti a beneficio dell'intera comunità. -D'altra parte, anche i prodotti concessi sotto licenza GPL possono avere un costo. Non si tratta del prodotto in sé, ma della **garanzia che un team di sviluppatori continuerà a lavorarci per farlo evolvere e per risolvere gli errori, o anche per fornire assistenza agli utenti**. +D'altra parte, anche i prodotti con licenza GPL possono avere un costo. Non si tratta del prodotto in sé, ma della **garanzia che un team di sviluppatori continuerà a lavorarci per farlo evolvere e per risolvere gli errori, o anche per fornire assistenza agli utenti**. ## Aree di utilizzo @@ -239,11 +238,11 @@ Linux è una scelta adatta per ospitare database o siti web, oppure come server ### Generalità -La **shell**, conosciuta anche come _command interface_, consente agli utenti di inviare comandi al sistema operativo. Oggi è meno visibile dopo l'implementazione delle interfacce grafiche, ma rimane un mezzo privilegiato sui sistemi Linux che non dispongono di interfacce grafiche e i cui servizi non sempre hanno un'interfaccia di impostazione. +La **shell**, nota come _interfaccia di comando_, consente agli utenti di inviare comandi al sistema operativo. Oggi è meno visibile dopo l'implementazione delle interfacce grafiche, ma rimane un mezzo privilegiato sui sistemi Linux che non dispongono di interfacce grafiche e i cui servizi non sempre hanno un'interfaccia di impostazione. -Offre un vero e proprio linguaggio di programmazione che include strutture classiche (cicli, alternative) e componenti comuni (variabili, passaggio di parametri e sottoprogrammi). Permette la creazione di script per automatizzare determinate azioni (backups, creazione di utenti, monitoraggio del sistema, etc.). +Offre un vero e proprio linguaggio di programmazione che include strutture classiche (cicli, alternative) e componenti comuni (variabili, passaggio di parametri e sottoprogrammi). Consente la creazione di script per automatizzare determinate azioni (backup, creazione di utenti, monitoraggio del sistema, ecc.). -Sono disponibili diversi tipi di shell, configurabili su una piattaforma o in base alle preferenze dell'utente. Alcuni esempi sono: +Sono disponibili diversi tipi di shell, configurabili su una piattaforma o in base alle preferenze dell'utent. Alcuni esempi includono: * sh, la shell standard POSIX * csh, shell orientata ai comandi in C @@ -263,7 +262,7 @@ Sono disponibili diversi tipi di shell, configurabili su una piattaforma o in ba ## Verificare le proprie Conoscenze -:heavy_check_mark: Un sistema operativo è un insieme di programmi per la gestione delle risorse disponibili di un computer: +:heavy_check_mark: Il sistema operativo è necessario per: * [ ] Vero * [ ] Falso @@ -283,7 +282,7 @@ Sono disponibili diversi tipi di shell, configurabili su una piattaforma o in ba * [ ] Brian Kernighan * [ ] Andrew Stuart Tanenbaum -:heavy_check_mark: La nazionalità originaria di Linus Torvalds, creatore del kernel Linux, è: +:heavy_check_mark: La nazionalità originale di Linus Torvalds, creatore del kernel Linux, è: * [ ] Svedese * [ ] Finlandese @@ -291,7 +290,7 @@ Sono disponibili diversi tipi di shell, configurabili su una piattaforma o in ba * [ ] Fiamminga * [ ] Francese -:heavy_check_mark: Quale delle seguenti distribuzioni è la più antica: +:heavy_check_mark: Quale delle seguenti distribuzioni è la più vecchia: * [ ] Debian * [ ] Slackware diff --git a/docs/books/admin_guide/04-advanced-commands.it.md b/docs/books/admin_guide/04-advanced-commands.it.md index 8a3200c63b..686541e42b 100644 --- a/docs/books/admin_guide/04-advanced-commands.it.md +++ b/docs/books/admin_guide/04-advanced-commands.it.md @@ -10,11 +10,13 @@ I comandi avanzati offrono una maggiore personalizzazione e controlli in situazi **Obiettivi** : In questo capitolo, i futuri amministratori Linux impareranno: -:heavy_check_mark: alcuni comandi utili non trattati nel capitolo precedente. :heavy_check_mark: alcuni comandi avanzati. +:heavy_check_mark: alcuni comandi utili non trattati nel capitolo precedente. +:heavy_check_mark: alcuni comandi avanzati. :checkered_flag: **comandi utente**, **Linux** -**Conoscenza**: :star: **Complessità**: :star: :star: :star: +**Conoscenza**: :star: +**Complessità**: :star: :star: :star: **Tempo di lettura**: 20 minuti diff --git a/docs/books/admin_guide/05-vi.it.md b/docs/books/admin_guide/05-vi.it.md index 561e1583bd..fe325cefa1 100644 --- a/docs/books/admin_guide/05-vi.it.md +++ b/docs/books/admin_guide/05-vi.it.md @@ -22,14 +22,14 @@ In questo capitolo imparerai come lavorare con il VIsual editor. **** -*Visual* (**VI**) è un editor di testo molto popolare sotto Linux, nonostante la sua limitata ergonomia. È infatti un editor interamente in modalità testo: ogni azione viene eseguita con una chiave sulla tastiera o sui comandi dedicati. +*Visual* (**VI**) è un editor di testo popolare in Linux, nonostante la sua limitata ergonomia. È infatti un editor interamente in modalità testo: ogni azione viene eseguita con una chiave sulla tastiera o sui comandi dedicati. Molto potente, è soprattutto molto pratico poiché è nel complesso minimo per le applicazioni di base. È quindi accessibile in caso di guasto del sistema. La sua *universalità* (è presente su tutte le distribuzioni Linux e sotto UNIX) lo rende uno strumento *fondamentale* per l'amministratore. Le sue funzionalità sono: -* Inserire, eliminare, modificare il testo; -* Copiare parole, linee o blocchi di testo; +* Inserire, cancellare e modificare il testo; +* Copiare parole, righe o blocchi di testo; * Cercare e sostituire i caratteri. ## comando `vi` @@ -50,11 +50,11 @@ vi /home/rockstar/file | ------------ | ---------------------------------------------- | | `-c command` | Esegue VI specificando un comando all'apertura | -Se il file esiste nella posizione menzionata dal percorso, viene letta da VI che viene aperto in modalita **comandi**. +Se il file esiste nella posizione indicata dal percorso, VI lo legge e lo mette in modalità **comandi**. -Se il file non esiste, VI apre un file vuoto e una pagina vuota viene visualizzata sullo schermo. Quando il file viene salvato, prenderà il nome specificato con il comando. +Se il file non esiste, VI apre un file vuoto, visualizzando una pagina vuota sullo schermo. Quando il file viene salvato, prenderà il nome specificato con il comando. -Se il comando. `vi` viene eseguito senza specificare un nome di file, VI apre un file vuoto e una pagina vuota viene visualizzata sullo schermo. Quando il file viene salvato, VI chiederà un nome di file. +Se il comando `vi` viene eseguito senza specificare un nome di file, VI apre un file vuoto e visualizza una pagina vuota sullo schermo. Quando il file viene salvato, VI chiederà un nome di file. L'editor `vim` prende l'interfaccia e le funzioni di VI con molti miglioramenti. @@ -62,29 +62,29 @@ L'editor `vim` prende l'interfaccia e le funzioni di VI con molti miglioramenti. vim [-c command] [file] ``` -Tra questi miglioramenti, l'utente ha l'evidenziazione della sintassi, che è molto utile per la modifica di script di shell o file di configurazione. +Tra questi miglioramenti, l'utente ha a disposizione l'evidenziazione della sintassi, utile per modificare gli script di shell o i file di configurazione. -Durante una sessione, VI utilizza un file buffer in cui registra tutte le modifiche apportate dall'utente. +Durante una sessione, VI utilizza un file buffer per registrare tutte le modifiche apportate dall'utente. !!! Note "Nota" - Finché l'utente non ha salvato il suo lavoro, il file originale non viene modificato. + Il file originale non viene modificato finché l'utente non salva il suo lavoro. All'avvio, VI è in modalità *comando*. !!! Tip "Suggerimento" - Una riga di testo è terminata premendo INVIO ma se lo schermo non è abbastanza largo, VI rende le interruzioni di linea automatiche, configurazione _wrap_ per impostazione predefinita. Queste interruzioni di linea potrebbero non essere desiderate, questa è la configurazione _nowrap_. + Una riga di testo viene terminata premendo ++enter++, ma se lo schermo non è sufficientemente ampio, VI effettua interruzioni di riga automatiche, con la configurazione predefinita *wrap*. Queste interruzioni di riga possono non essere gradite, questa è la configurazione *nowrap*. -Per uscire da VI, dalla modalità Comando, premi : quindi digita: +Per uscire dalla modalità Comandi, premere ++colon++, quindi digitare: * `q` per uscire senza salvare (_quit_); * `w` per salvare il tuo lavoro (_write_); * `wq` (_write quit_) o `x` (_eXit_) per salvare e uscire. -Per forzare l'uscita senza conferma, devi aggiungere *!* ai precedenti comandi. +In modalità comandi, fare doppio clic sul tasto ++z++ maiuscolo per salvare e uscire. -Per forzare l'uscita senza conferma, devi aggiungere *!* ai precedenti comandi. +È necessario aggiungere *!* ai comandi precedenti per forzare l'uscita senza conferma. !!! Warning "Attenzione" @@ -104,7 +104,7 @@ La terza modalità, *ex*, è una modalità di comando del piè di pagina modello ### La modalità comando -Questa è la modalità predefinita quando si avvia VI. Per accedervi da una qualsiasi delle altre modalità, basta premere il tasto ESC. +Questa è la modalità predefinita quando si avvia VI. Per accedervi da una qualsiasi delle altre modalità, basta premere il tasto ++escape++. In questo momento, tutta la digitazione della tastiera viene interpretata come comandi e le azioni corrispondenti vengono eseguite. Questi sono essenzialmente comandi per la modifica del testo (copia, incolla, annulla, ...). @@ -120,7 +120,7 @@ Il testo non viene inserito direttamente nel file ma in una zona buffer nella me Questa è la modalità di modifica del file. Per accedervi, è necessario prima passare alla modalità *comando*, quindi inserire il comando *ex* frequentemente preceduto dal carattere `:`. -Il comando è convalidato premendo il tasto ENTER. +Il comando è convalidato premendo il tasto ++enter++. ## Muovere il cursore @@ -136,109 +136,109 @@ Il cursore è posizionato sotto il carattere desiderato. * Sposta uno o `n` caratteri a sinistra: -, n, h o nh +++arrow-left++, ++n++ ++arrow-left++, ++h++ o ++n++ ++h++ * Sposta uno o `n` caratteri a destra: -, n, l o nl +++arrow-right++, ++n++ ++arrow-right++, ++l++ o ++n++ ++l++ * Sposta uno o `n` caratteri su: -, n, k o nk +++arrow-up++, ++n++ ++arrow-up++, ++k++ o ++n++ ++k++ * Sposta uno o `n` caratteri giù: -, n, j o nj +++arrow-down++, ++n++ ++arrow-down++, ++j++ o ++n++ ++j++ * Passare alla fine della linea: -$ o END +++"$"++ o ++end++ * Passare all'inizio della linea: -0 o POS1 +++0++ o ++"POS1"++ ### Dal primo carattere di una parola Le parole sono costituite da lettere o numeri. Caratteri di punteggiatura e apostrofi separarano le parole. -Se il cursore è nel mezzo di una parola w muove alla parola successiva, b si posiziona all'inizio della parola. +Se il cursore si trova a metà di una parola, ++w++ si sposta alla parola successiva, mentre ++b++ si sposta all'inizio della parola. Se la linea è finita, VI va automaticamente alla riga successiva. * Muoversi di una o `n` parole a destra: -w o nw +++w++ o ++n++ ++w++ * Muoversi di una o `n` parole a sinistra: -b o nb +++b++ o ++n++ ++b++ ### Da qualsiasi posizione su una linea * Passa all'ultima riga di testo: -G +++g++ * Passa alla linea `n`: -nG +++n++ ++g++ * Passa alla prima riga dello schermo: -H +++h++ * Passa alla linea centrale dello schermo: -M +++m++ * Passa all'ultima riga dello schermo: -L +++l++ ## Inserimento del testo -In modalità *comando*, ci sono diversi modi per inserire il testo. +Esistono diversi modi per inserire il testo in modalità *comando*. -VI passa alla modalità *inserimento* dopo l'inserimento di una di queste chiavi. +VI passa alla modalità *inserimento* dopo aver inserito uno di questi tasti. !!! Note "Nota" - VI passa alla modalità *inserzione*. Quindi dovrai premere il tasto ESC per tornare alla modalità *comando*. + VI passa alla modalità *inserzione*. Quindi si dovrà premere il tasto ++escape++ per tornare alla modalità *comando*. ### In relazione a un carattere * Inserimento del testo prima di un carattere: -i (*insert*) +++"i"++ (*insert*) * Inserimento del testo dopo di un carattere: -a (*append*) +++"a"++ (*append*) ### In relazione a una linea * Inserimento del testo all'inizio di una linea: -I +++i++ * Inserimento del testo alla fine di una linea: -A +++a++ ### In relazione al testo * Inserimento del testo prima di una linea: -O +++o++ * Inserimento del testo dopo una linea: -o +++"o"++ ## Caratteri, parole e linee -VI consente la modifica del testo mediante la gestione di: +VI permette di modificare il testo gestendo: * caratteri, * parole, @@ -252,47 +252,47 @@ In ogni caso è possibile : * tagliare, * incollare. -Queste operazioni sono fatte in modalità *comando*. +Queste operazioni vengono eseguite in modalità *comando*. ### Caratteri * Elimina uno o `n` caratteri: -x o nx +++"x"++ o ++"n"++ ++"x"++ * Sostituisce un carattere con un altro: -rcharacter +++"r"+"character"++ * Sostituisce più di un carattere con altri: -RcharactersESC +++r+"characters"+escape++ !!! Note "Nota" - Il comando R passa alla modalità *sostituzione*, che è una sorta di modalità *inserzione*. + Il comando ++r++ passa alla modalità *sostituzione*, che è una sorta di modalità *inserimento*. ### Parole * Cancella (taglia) una o `n` parole: -dw o ndw +++"d"+"w"++ o ++"n"+"d"+"w"++ * Copia una o `n` parole: -yw o nyw +++"y"+"w"++ o ++"n"+"y"+"w"++ * Incolla una parola una volta o `n` volte dopo il cursore: -p o np +++p++ o ++"n"+"p"++ * Incolla una parola una volta o `n` volte prima del cursore: -P o nP +++p++ o ++"n"+p++ * Sostituisci una parola: -cw*word*ESC +++c+w+"word"+escape++ !!! Tip "Suggerimento" @@ -303,73 +303,73 @@ Queste operazioni sono fatte in modalità *comando*. * Elimina (taglia) una o `n` linee: -dd o ndd +++"d"+"d"++ o ++"n"+"d"+"d"++ * Copia una o `n` linee: -p o np +++"y"+"y"++ o ++"n"+"y"+"y"++ * Incolla ciò che è stato copiato o cancellato una volta o `n` volte dopo la linea corrente: -P o nP +++"p"++ o ++"n"+"p"++ * Incolla ciò che è stato copiato o cancellato una volta o `n` volte prima della linea corrente: -P o nP +++p++ o ++"n"+p++ * Elimina (taglia) dall'inizio della linea alla posizione del cursore: -d0 +++"d"+0++ * Elimina (taglia) dalla posizione del cursore alla fine della linea: -d$ +++"d"+"$"++ * Copia dall'inizio della linea alla posizione del cursore: -y0 +++"y"+0++ * Copia dalla posizione del cursore alla fine della linea: -y$ +++"y"+"$"++ * Elimina (taglia) il testo dalla linea corrente: -dL o dG +++"d"+l++ o ++"d"+g++ * Copia il testo dalla linea corrente: -yL o yG +++"y"+l++ o ++"y"+g++ ### Annullare un'azione * Annulla l'ultima azione: -u +++"u"++ * Annulla le azioni sulla linea corrente: -U +++u++ ### Annulla la cancellazione * Annulla una cancellazione -Ctrl+r +++control+r++ ## comando EX -La modalità *Ex* ti consente di agire sul file (salvataggio, disposizione, opzioni, ...). È dentro la modalità *Ex* che vengono inseriti i comandi di ricerca e sostituzione. I comandi vengono visualizzati nella parte inferiore della pagina e devono essere convalidati con il tasto ENTER. +La modalità *Ex* consente di agire sul file (salvataggio, layout, opzioni, ...). È inoltre in modalità *Ex*, in cui vengono inseriti i comandi di ricerca e sostituzione. I comandi vengono visualizzati in fondo alla pagina e devono essere convalidati con il tasto ++enter++. -Per passare alla modalità *Ex*, dalla modalità *comando*, digita :. +Per passare alla modalità *Ex*, dalla modalità *comando*, digitate ++colon++. ### Numeri di riga del file * Mostra/nascondi numerazione: -`:set nu` e il più lungo `:set number` +`:set nu` o il più lungo `:set number` -`:set nonu` e il più lungo `:set nonumber` +`:set nonu` o il più lungo `:set nonumber` ### Cerca una stringa @@ -383,21 +383,21 @@ Per passare alla modalità *Ex*, dalla modalità *comando*, digita :. * Vai alla prossima occorrenza trovata: -n +++"n"++ * Vai alla precedente occorrenza trovata: -N +++n++ -Ci sono caratteri jolly per facilitare la ricerca in VI. +Esistono dei caratteri jolly per facilitare la ricerca in VI. * `[]` : Cerca una gamma di caratteri o un singolo carattere i cui valori possibili sono specificati. Esempio: -`/[Ww]ord` : ricerca _word_ o _Word_ +`/[Ww]ord` : search *word* o *Word* -`/[1-9]word` : ricerca _1word_, _2word_ … _`x`word_ dove `x` è un numero +`/[1-9]word` : search *1word*, *2word* … *`x`word* dove `x` è un numero * `^` : Cerca una stringa dall'inizio della linea. @@ -415,7 +415,7 @@ Esempio: Esempio: -`/W.rd` : ricerca _Word_, _Ward_… +`/W.rd` : search *Word*, *Ward* … * `*` : Cerca uno o più caratteri, qualunque cosa siano. @@ -423,37 +423,37 @@ Esempio: `/W*d` -**Nota:** se si desidera ignorare le maiuscole e le minuscole (temporanee) durante la corrispondenza delle stringhe, digitare `:set ic.` +**Nota:** Se si desidera ignorare le maiuscole e le minuscole (temporaneamente) durante la corrispondenza delle stringhe, digitare l'opzione `:set ic`. ### Sostituisci una stringa -Dalla prima all'ultima riga del testo, sostituisci la stringa cercata con la stringa specificata: +Dalla prima all'ultima riga del testo, sostituisce la stringa cercata con la stringa specificata: `:1,$ s/search/replace` -**Nota:** si può anche usare `:0,$s/search/replace` per specificare l'inizio assoluto del file. +**Nota:** Si può anche usare `:0,$s/search/replace` per specificare l'inizio assoluto del file. -Dalla linea `n` alla linea `m`, sostituisci la stringa cercata con la stringa specificata: +Dalla riga `n` alla riga `m`, sostituisce la stringa cercata con la stringa specificata: `:n,m s/search/replace` -Per impostazione predefinita, solo la prima occorrenza trovata di ciascuna linea è sostituita. Per forzare la sostituzione di ogni occorrenza, devi aggiungere `/g` alla fine del comando: +Per impostazione predefinita, viene sostituita solo la prima occorrenza trovata di ogni riga. Per forzare la sostituzione di ogni occorrenza, è necessario aggiungere `/g` alla fine del comando: `:n,m s/search/replace/g` -Sfoglia un intero file per sostituire la stringa cercata con la stringa specificata: +Sfoglia un intero file per sostituire la stringa cercata con quella specificata: -`:w` +`:% s/search/replace` ### Operazioni sui file * Cancellare una riga vuota -`:w file` +`:g/^$/d` * Elimina le righe con numeri di riga da n a m -`:n,m w file` +`:n,md` * Elimina la riga in cui si trova la stringa @@ -461,13 +461,13 @@ Sfoglia un intero file per sostituire la stringa cercata con la stringa specific * Elimina una riga che non contiene una stringa -`:r file` +`:g!/string/d` * Cancella tutte le righe che iniziano con # -`:q` +`:g/^#/d` -Il **g** qui sta per **globale**. +Il carattere **g** sta per **globale**. ### Operazioni sui file @@ -505,13 +505,13 @@ Il **g** qui sta per **globale**. ## Altre funzioni -È possibile eseguire VI specificando le opzioni da caricare per la sessione. Per fare questo, devi usare l'opzione `-c`: +È possibile eseguire VI specificando le opzioni da caricare per la sessione. Per farlo, è necessario utilizzare l'opzione `-c`: ```bash vi -c "set nu" /home/rockstar/file ``` -È anche possibile inserire il comando *Ex* in un file chiamato `.exrc` inserito nella directory di accesso dell'utente. Ad ogni avvio di VI o VIM, i comandi saranno letti e applicati. +È anche possibile inserire i comandi *Ex* in un file chiamato `.exrc` nella directory di login dell'utente. I comandi verranno letti e applicati a ogni avvio di VI o VIM. ### comando `vimtutor` diff --git a/docs/books/admin_guide/08-process.it.md b/docs/books/admin_guide/08-process.it.md index ee41328b49..3a599214e8 100644 --- a/docs/books/admin_guide/08-process.it.md +++ b/docs/books/admin_guide/08-process.it.md @@ -31,29 +31,31 @@ Quando viene eseguito un programma, Il sistema creerà un processo posizionando Ogni processo ha: -* un _PID_ : _**P**rocess **ID**entifier_, un identificatore di processo unico -* un _PPID_ : _**P**arent **P**rocess **ID**entifier_, identificatore univoco del processo genitore +* un *PID*: ***P**rocess **ID**entifier*, un identificatore di processo unico +* un *PPID*: ***P**arent **P**rocess **ID**entifier*, identificatore univoco del processo genitore Da filiazioni successive, il processo `init` è il padre di tutti i processi. * Un processo è sempre creato da un processo genitore * Un processo genitore può avere più processi figlio -C'è una relazione genitore/figlio tra i processi. Un processo figlio è il risultato di un genitore che chiama la primitiva _fork()_ e duplica il suo codice per creare un figlio. Il _PID_ del processo figlio viene restituito al processo genitore in modo che possa comunicare. Ogni processo figlio ha l'identificatore del suo processo genitore, il _PPID_. +C'è una relazione genitore/figlio tra i processi. Un processo figlio è il risultato di un genitore che chiama la primitiva *fork()* e duplica il suo codice per creare un figlio. Il *PID* del processo figlio viene restituito al processo genitore in modo che possa comunicare. Ogni processo figlio ha l'identificatore del suo processo genitore, il *PPID*. -Il numero _PID_ rappresenta il processo al momento dell'esecuzione. Quando il processo finisce, il numero è di nuovo disponibile per un altro processo. Eseguendo lo stesso comando più volte produrrà un diverso _PID_ ogni volta.!!! Note "Nota" +Il numero *PID* rappresenta il processo al momento dell'esecuzione. Al termine del processo, il numero è nuovamente disponibile per un altro processo. Eseguendo più volte lo stesso comando si otterrà ogni volta un *PID* diverso.!!! Note "Nota" I processi non devono essere confusi con i _threads_. Ogni processo ha il suo contesto di memoria (risorse e spazio degli indirizzi), mentre i _thread_ dello stesso processo condividono questo contesto. ## Visualizzazione dei processi Il comando `ps` visualizza lo stato dei processi in esecuzione. -``` + +```bash ps [-e] [-f] [-u login] ``` Esempio: -``` + +```bash # ps -fu root ``` @@ -80,7 +82,7 @@ Senza un'opzione specificata, il comando `ps` visualizza solo i processi in esec Il risultato viene visualizzato nelle seguenti colonne: -``` +```bash # ps -ef UID PID PPID C STIME TTY TIME CMD root 1 0 0 Jan01 ? 00:00/03 /sbin/init @@ -99,7 +101,7 @@ root 1 0 0 Jan01 ? 00:00/03 /sbin/init Il comportamento del controllo può essere completamente personalizzato: -``` +```bash # ps -e --format "%P %p %c %n" --sort ppid --headers PPID PID COMMAND NI 0 1 systemd 0 @@ -119,14 +121,14 @@ Il processo dell'utente: * è iniziato da un terminale associato a un utente * accede alle risorse tramite richieste o daemons -I processi di sistema sono quindi chiamati daemons (_**D**isk **A**nd **E**xecution **MON**itor_) +Il processo di sistema (*daemon*): * è iniziato dal sistema * non è associato a nessun terminale, ed è di proprietà di un utente di sistema (spesso `root`); * è caricato al momento dell'avvio, risiede in memoria, e sta aspettando una chiamata * è solitamente identificato dalla lettera `d` associato al nome del processo -I processi di sistema sono quindi chiamati daemons (_**D**isk **A**nd **E**xecution **MON**itor_). +I processi di sistema sono quindi chiamati daemons (_**D**isk **A**nd **E**xecution **MON**itor_) ## Autorizzazioni e diritti @@ -161,9 +163,11 @@ Quando un genitore termina, i suoi figli diventano orfani. Vengono quindi adotta ### La priorità di un processo -Il processore lavora in time sharing, con ogni processo che occupa una quantità di tempo del processore. +Linux appartiene alla famiglia dei sistemi operativi a condivisione di tempo. I processori lavorano in time-sharing e ogni processo occupa una parte del tempo del processore. I processi vengono classificati per priorità: -I processi sono classificati per priorità, il cui valore varia da **-20** (la priorità più alta) a **+19** (la priorità più bassa). +* Processo in tempo reale: il processo con priorità **0-99** è programmato dall'algoritmo di schedulazione in tempo reale. +* Processi ordinari: i processi con priorità dinamiche da **100-139** sono programmati utilizzando un algoritmo di schedulazione completamente equo. +* Valore di nice: parametro utilizzato per regolare la priorità di un processo ordinario. L'intervallo è **-20-19**. La priorità predefinita di un processo è **0**. @@ -186,23 +190,23 @@ I vincoli della modalità asincrona: Il comando `kill` invia un segnale di arresto a un processo. -``` +```bash kill [-signal] PID ``` Esempio: -``` -$ kill -9 1664 +```bash +kill -9 1664 ``` -| Codice | Segnale | Descrizione | -| ------ | --------- | ------------------------------------ | -| `2` | _SIGINT_ | Arresto immediato del processo | -| `9` | _SIGKILL_ | Interruzione del processo (CTRL + D) | -| `15` | _SIGTERM_ | Arresto pulito del processo | -| `18` | _SIGCONT_ | Riprendere il processo | -| `19` | _SIGSTOP_ | Sospendere il processo | +| Codice | Segnale | Descrizione | +| ------ | --------- | ----------------------------------------- | +| `2` | *SIGINT* | Arresto immediato del processo | +| `9` | *SIGKILL* | Interruzione del processo (++control+d++) | +| `15` | *SIGTERM* | Arresto pulito del processo | +| `18` | *SIGCONT* | Riprendere il processo | +| `19` | *SIGSTOP* | Sospendere il processo | I segnali sono i mezzi di comunicazione tra i processi. Il comando `kill` invia un segnale a un processo. @@ -218,14 +222,14 @@ I segnali sono i mezzi di comunicazione tra i processi. Il comando `kill` invia `nohup` consente il lancio di un processo indipendentemente da una connessione. -``` +```bash comando nohup ``` Esempio: -``` -$ nohup myprogram.sh 0CTRL + Z contemporaneamente, il processo sincrono è temporaneamente sospeso. L'accesso al prompt viene ripristinato dopo aver visualizzato il numero del processo che è stato appena sospeso. +Premendo la combinazione ++control+z++ contemporaneamente, il processo sincrono è temporaneamente sospeso. L'accesso al prompt viene ripristinato dopo aver visualizzato il numero del processo che è stato appena sospeso. ### istruzione `&` -La dichiarazione `&` esegue il comando in modo asincrono (il comando viene quindi chiamato _job_) e visualizza il numero di _job_. L'accesso al prompt viene quindi restituito. +La dichiarazione `&` esegue il comando in modo asincrono (il comando viene quindi chiamato *job*) e visualizza il numero di *job*. L'accesso al prompt viene quindi restituito. Esempio: -``` +```bash $ time ls -lR / > list.ls 2> /dev/null & [1] 15430 $ ``` -Il numero _job_ è ottenuto durante l'elaborazione in background e viene visualizzato in parentesi quadre, seguito dal numero di `PID`. +Il numero di *job* si ottiene durante l'elaborazione in background e viene visualizzato tra parentesi quadre, seguito dal numero `PID`. ### comandi `fg` e `bg` Il comando `fg` mette il processo in primo piano: -``` +```bash $ time ls -lR / > list.ls 2>/dev/null & $ fg 1 time ls -lR / > list.ls 2/dev/null @@ -264,7 +268,7 @@ time ls -lR / > list.ls 2/dev/null mentre il comando `bg` lo colloca in background: -``` +```bash [CTRL]+[Z] ^Z [1]+ Stopped @@ -273,7 +277,7 @@ $ bg 1 $ ``` -Se è stato messo in background quando è stato creato con l'argomento `&` o più tardi con la combinazione CTRL +Z, un processo può essere riportato in primo piano con il comando `fg` e il suo numero di lavoro. +Sia che sia stato messo in secondo piano quando è stato creato con l'argomento `&` o successivamente con i tasti ++control+z++, un processo può essere riportato in primo piano con il comando `fg` e il suo numero di job. ### comando `jobs` @@ -281,7 +285,7 @@ Il comando `jobs` visualizza l'elenco dei processi in esecuzione in background e Esempio: -``` +```bash $ jobs [1]- Running sleep 1000 [2]+ Running find / > arbo.txt @@ -290,24 +294,26 @@ $ jobs Le colonne rappresentano: 1. numero di lavoro -2. l'ordine in cui i processi sono in esecuzione -- un `+` : Il processo selezionato per impostazione predefinita per i comandi `fg` e `bg` quando non viene specificato un numero di processo -- a `-` : Questo processo è il processo successivo che prende il `+` -3. _Running_ (processo in esecuzione) o _Stopped_ (processo sospeso). +2. l'ordine di esecuzione dei processi: + + * un `+` : Il processo selezionato per impostazione predefinita per i comandi `fg` e `bg` quando non viene specificato un numero di processo + * a `-` : Questo processo è il processo successivo che prende il `+` + +3. *Running* (processo in esecuzione) o *Stopped* (processo sospeso) 4. il comando ### comandi `nice` e `renice` Il comando `nice` consente l'esecuzione di un comando specificando la sua priorità. -``` +```bash comando nice priority ``` Esempio: -``` -$ nice -n+15 find / -name "file" +```bash +nice -n+15 find / -name "file" ``` A differenza di `root`, un utente standard può solo ridurre la priorità di un processo. Saranno accettati solo valori tra +0 e +19. @@ -318,15 +324,16 @@ A differenza di `root`, un utente standard può solo ridurre la priorità di un Il comando `renice` ti consente di modificare la priorità di un processo di esecuzione. -``` +```bash renice priority [-g GID] [-p PID] [-u UID] ``` Esempio: +```bash +renice +15 -p 1664 ``` -$ renice +15 -p 1664 -``` + | Opzione | Descrizione | | ------- | ------------------------------------------- | | `-g` | `GID` del gruppo proprietario del processo. | @@ -347,7 +354,7 @@ Il comando `renice` agisce sui processi già in esecuzione. È quindi possibile Il comando `top` visualizza i processi e il loro consumo di risorse. -``` +```bash $ top PID USER PR NI ... %CPU %MEM TIME+ COMMAND 2514 root 20 0 15 5.5 0:01.14 top @@ -368,11 +375,11 @@ Il comando `top` permette di controllare i processi in tempo reale e in modalit ### comandi `pgrep` e `pkill` -Il comando `pgrep` cerca i processi in esecuzione per un nome di processo e visualizza il _PID_ che soddisfa i criteri di selezione sull'output standard. +Il comando `pgrep` cerca i processi in esecuzione per un nome di processo e visualizza il *PID* che soddisfa i criteri di selezione sull'output standard. -Il comando `pkill` invia a ogni processo il segnale specificato (per impostazione predefinita _SIGTERM_). +Il comando `pkill` invia a ogni processo il segnale specificato (per impostazione predefinita *SIGTERM*). -``` +```bash pgrep process pkill [option] [-signal] process ``` @@ -381,40 +388,40 @@ Esempi: * Ottenere il numero del processo da `sshd`: - ``` - $ pgrep -u root sshd + ```bash + pgrep -u root sshd ``` * Terminare tutti i processi di `tomcat`: - ``` - $ pkill tomcat + ```bash + pkill tomcat ``` !!! note "Nota" - Prima di terminare un processo, è meglio conoscere esattamente lo scopo del processo, altrimenti si possono verificare arresti del sistema o altri problemi imprevedibili. + Prima di terminare un processo, è meglio sapere esattamente a cosa serve; in caso contrario, si possono verificare crash del sistema o altri problemi imprevedibili. Oltre a inviare segnali ai processi interessati, il comando `pkill` può anche terminare la sessione di connessione dell'utente in base al numero di terminale, come ad esempio: -``` -$ pkill -t pts/1 +```bash +pkill -t pts/1 ``` ### comando `killall` -La funzione di questo comando è pressoché identica a quella del comando `pkill`. L'utilizzo è - `killall [option] [ -s SIGNAL | -SIGNAL ] NAME`. Il segnale predefinito è _SIGTERM_. +La funzione di questo comando è più o meno la stessa del comando `pkill`. L'utilizzo è —`killall [option] [ -s SIGNAL | -SIGNAL ] NAME`. Il segnale predefinito è *SIGTERM*. | Opzioni | Descrizione | |:------- |:-------------------------------------------------------------------------------- | -| `-l` | elencare tutti i nomi dei segnali conosciuti | -| `-i` | chiedere conferma prima di terminare | +| `-l` | elenca tutti i nomi dei segnali conosciuti | +| `-i` | chiede conferma prima di terminarlo | | `-I` | corrispondenza del nome del processo senza distinzione tra maiuscole e minuscole | Esempio: -``` -$ killall tomcat +```bash +killall tomcat ``` ### comando `pstree` @@ -461,13 +468,13 @@ systemd(1)─┬─systemd-journal(595) Pericolo: -* Occupa le risorse del sistema e causa una riduzione delle prestazioni della macchina. +* Occupano le risorse del sistema e causano una riduzione delle prestazioni della macchina. * Impossibile generare nuovi processi figli. -Come verificare se ci sono processi zombie nel sistema in uso? +Come si può verificare la presenza di processi zombie nel sistema attuale? -``` -$ ps -lef | awk '{print $2}' | grep Z +```bash +ps -lef | awk '{print $2}' | grep Z ``` Questi caratteri possono comparire in questa colonna: diff --git a/docs/books/admin_guide/09-backups.it.md b/docs/books/admin_guide/09-backups.it.md index f72aaaa6e9..af11c0fba3 100644 --- a/docs/books/admin_guide/09-backups.it.md +++ b/docs/books/admin_guide/09-backups.it.md @@ -104,13 +104,16 @@ Ci sono molte utilità per fare il backup. I comandi che useremo qui sono `tar` e `cpio`. * `tar`: - * facile da usare ; - * consente di aggiungere file a un backup esistente. + + 1. facile da usare; + 2. consente di aggiungere file a un backup esistente. + * `cpio`: - * conserva i proprietari; - * conserva gruppi, date e permessi; - * salta i file danneggiati; - * file system completo. + + 1. conserva i proprietari; + 2. conserva gruppi, date e permessi; + 3. salta i file danneggiati; + 4. file system completo. !!! Note "Nota" @@ -185,9 +188,9 @@ L'utilità predefinita per la creazione di backup su sistemi UNIX è il comando #### Stimare le dimensioni di un backup -Il comando seguente stima la dimensione in kilobyte di un possibile file _tar_: +Il comando seguente stima la dimensione in kilobyte di un possibile file *tar*: -``` +```bash $ tar cf - /directory/to/backup/ | wc -c 20480 $ tar czf - /directory/to/backup/ | wc -c @@ -208,10 +211,10 @@ Ecco un esempio di convenzione di denominazione per un backup `tar`, sapendo che | ------- | ------- | ---------------- | ------------------------------------------------- | | `cvf` | `home` | `home.tar` | `/home` in modalità relativa, forma non compressa | | `cvfP` | `/etc` | `etc.A.tar` | `/etc` in modalità assoluta, nessuna compressione | -| `cvfz` | `usr` | `usr.tar.gz` | `/usr` in modalità relativa, compressione _gzip_ | -| `cvfj` | `usr` | `usr.tar.bz2` | `/usr` in modalità relativa, compressione _bzip2_ | -| `cvfPz` | `/home` | `home.A.tar.gz` | `home` in modalità assoluta, compressione _gzip_ | -| `cvfPj` | `/home` | `home.A.tar.bz2` | `home` in modalità assoluta, compressione _bzip2_ | +| `cvfz` | `usr` | `usr.tar.gz` | `/usr` in modalità relativa, compressione *gzip* | +| `cvfj` | `usr` | `usr.tar.bz2` | `/usr` in modalità relativa, compressione *bzip2* | +| `cvfPz` | `/home` | `home.A.tar.gz` | `home` in modalità assoluta, compressione *gzip* | +| `cvfPj` | `/home` | `home.A.tar.bz2` | `home` in modalità assoluta, compressione *bzip2* | | … | | | | #### Creare un backup @@ -220,17 +223,16 @@ Ecco un esempio di convenzione di denominazione per un backup `tar`, sapendo che La creazione di un backup non compresso in modalità relativa viene eseguita con le opzioni `cvf`: -``` +```bash tar c[vf] [device] [file(s)] ``` Esempio: -``` +```bash [root]# tar cvf /backups/home.133.tar /home/ ``` - | Opzione | Descrizione | | ------- | ------------------------------------------------------ | | `c` | Crea un backup. | @@ -245,13 +247,13 @@ Esempio: La creazione di un backup non compresso in modo esplicito in modalità assoluta viene eseguita con le opzioni `cvfP`: -``` -$ tar c[vf]P [device] [file(s)] +```bash +tar c[vf]P [device] [file(s)] ``` Esempio: -``` +```bash [root]# tar cvfP /backups/home.133.P.tar /home/ ``` @@ -259,7 +261,6 @@ Esempio: | ------- | ------------------------------------ | | `P` | Crea un backup in modalità assoluta. | - !!! Warning "Attenzione" Con la chiave `P`, il percorso dei file su cui eseguire il backup deve essere inserito come **assoluto**. Se le due condizioni (chiave `P` e percorso **assoluto**) non sono indicate, il backup è in modalità relativa. @@ -268,14 +269,13 @@ Esempio: La creazione di un backup compresso con 'gzip' viene eseguita con le opzioni `cvfz`: -``` -$ tar cvzf backup.tar.gz dirname/ +```bash +tar cvzf backup.tar.gz dirname/ ``` | Opzione | Descrizione | | ------- | ------------------------------ | -| `z` | Comprime il backup con _gzip_. | - +| `z` | Comprime il backup con *gzip*. | !!! Note "Nota" @@ -289,13 +289,13 @@ $ tar cvzf backup.tar.gz dirname/ La creazione di un backup compresso con `bzip` viene eseguita con le opzioni `cvfj`: -``` -$ tar cvfj backup.tar.bz2 dirname/ +```bash +tar cvfj backup.tar.bz2 dirname/ ``` -| Opzione | Descrizione | -| ------- | -------------------------------- | -| `j` | Comprime il backup con_bzip2_. | +| Opzione | Descrizione | +| ------- | ------------------------------- | +| `j` | Comprime il backup con *bzip2*. | !!! Note "Nota" @@ -307,30 +307,30 @@ La compressione, e di conseguenza la decompressione, avrà un impatto sul consum Ecco una classifica della compressione di un insieme di file di testo, dal meno al più efficiente: -- compress (`.tar.Z`) -- gzip (`.tar.gz`) -- bzip2 (`.tar.bz2`) -- lzip (`.tar.lz`) -- xz (`.tar.xz`) +* compress (`.tar.Z`) +* gzip (`.tar.gz`) +* bzip2 (`.tar.bz2`) +* lzip (`.tar.lz`) +* xz (`.tar.xz`) #### Aggiungere un file o una directory a un backup esistente È possibile aggiungere uno o più elementi a un backup esistente. -``` +```bash tar {r|A}[key(s)] [device] [file(s)] ``` Per aggiungere `/etc/passwd` al backup `/backups/home.133.tar`: -``` +```bash [root]# tar rvf /backups/home.133.tar /etc/passwd ``` L'aggiunta di una directory è simile. Qui aggiungi `dirtoadd` a `backup_name.tar`: -``` -$ tar rvf backup_name.tar dirtoadd +```bash +tar rvf backup_name.tar dirtoadd ``` | Opzione | Descrizione | @@ -358,7 +358,7 @@ $ tar rvf backup_name.tar dirtoadd È possibile visualizzare il contenuto di un backup senza estrarlo. -``` +```bash tar t[key(s)] [device] ``` @@ -368,16 +368,16 @@ tar t[key(s)] [device] Esempi: -``` -$ tar tvf backup.tar -$ tar tvfz backup.tar.gz -$ tar tvfj backup.tar.bz2 +```bash +tar tvf backup.tar +tar tvfz backup.tar.gz +tar tvfj backup.tar.bz2 ``` -Quando il numero di file in un backup diventa grande, è possibile inviare in _pipe_ il risultato del comando `tar` ad un _impaginatore_ (`more`, `less`, `most`, ecc.): +Quando il numero di file in un backup diventa grande, è possibile inviare in *pipe* il risultato del comando `tar` ad un *impaginatore* (`more`, `less`, `most`, ecc.): -``` -$ tar tvf backup.tar | less +```bash +tar tvf backup.tar | less ``` !!! Tip "Suggerimento" @@ -392,14 +392,14 @@ $ tar tvf backup.tar | less L'integrità di un backup può essere testata con la chiave `W` al momento della sua creazione: -``` -$ tar cvfW file_name.tar dir/ +```bash +tar cvfW file_name.tar dir/ ``` L'integrità di un backup può essere testata con la chiave `d` dopo la sua creazione: -``` -$ tar vfd file_name.tar dir/ +```bash +tar vfd file_name.tar dir/ ``` !!! Tip "Suggerimento" @@ -419,7 +419,7 @@ $ tar vfd file_name.tar dir/ L'opzione `W` viene utilizzata anche per confrontare il contenuto di un archivio con il filesystem: -``` +```bash $ tar tvfW file_name.tar Verify 1/file1 1/file1: Mod time differs @@ -428,33 +428,33 @@ Verify 1/file2 Verify 1/file3 ``` -La verifica con l'opzione `W` non può essere eseguita con un archivio compresso. Deve essere utilizzata l'opzione `d` : +La verifica con l'opzione `W` non può essere eseguita con un archivio compresso. Deve essere utilizzata l'opzione ++d++: -``` -$ tar dfz file_name.tgz -$ tar dfj file_name.tar.bz2 +```bash +tar dfz file_name.tgz +tar dfj file_name.tar.bz2 ``` -#### Estrarre (_untar_) un backup +#### Estrarre (*untar*) un backup -L'estrazione di un backup (_untar_) `*.tar` viene eseguito con le opzioni `xvf`: +L'estrazione di un backup (*untar*) `*.tar` viene eseguito con le opzioni `xvf`: Estrarre il file `etc/exports` dal backup `/savings/etc.133.tar` nella cartella `etc` della directory corrente: -``` -$ tar xvf /backups/etc.133.tar etc/exports +```bash +tar xvf /backups/etc.133.tar etc/exports ``` Estrarre tutti i file dal backup compresso `/backups/home.133.tar.bz2` nella directory corrente: -``` +```bash [root]# tar xvfj /backups/home.133.tar.bz2 ``` Estrarre tutti i file dal backup `/backups/etc.133.P.tar` nella loro directory originale: -``` -$ tar xvfP /backups/etc.133.P.tar +```bash +tar xvfP /backups/etc.133.P.tar ``` !!! Warning "Attenzione" @@ -467,17 +467,16 @@ $ tar xvfP /backups/etc.133.P.tar | ------- | --------------------------------------------- | | `x` | Estrarre i file dal backup, compressi o meno. | +L'estrazione di un backup *tar-gzipped* (`*.tar.gz`) viene eseguita con le opzioni `xvfz`: -L'estrazione di un backup _tar-gzipped_ (`*.tar.gz`) viene eseguita con le opzioni `xvfz`: - -``` -$ tar xvfz backup.tar.gz +```bash +tar xvfz backup.tar.gz ``` -L'estrazione di un _tar-bzipped_ (`*.tar.bz2`) viene eseguita con le opzioni `xvfj`: +L'estrazione di un *tar-bzipped* (`*.tar.bz2`) viene eseguita con le opzioni `xvfj`: -``` -$ tar xvfj backup.tar.bz2 +```bash +tar xvfj backup.tar.bz2 ``` !!! Tip "Suggerimento" @@ -488,52 +487,52 @@ $ tar xvfj backup.tar.bz2 Per ripristinare i file nella loro cartella originale (chiave `P` di un `tar xvf`), devi aver generato il backup con il percorso assoluto. Cioè, con la chiave `P` di un `tar cvf`. -##### Estrarre solo un file da un backup _tar_ +##### Estrarre solo un file da un backup *tar* -Per estrarre un file specifico da un backup _tar_, specificare il nome di tale file alla fine del comando `tar xvf`. +Per estrarre un file specifico da un backup *tar*, specificare il nome di tale file alla fine del comando `tar xvf`. -``` -$ tar xvf backup.tar /path/to/file +```bash +tar xvf backup.tar /path/to/file ``` Il comando precedente estrae solo il file `/path/to/file` dal backup `backup.tar`. Questo file verrà ripristinato nella directory `/path/to/` creata, o già presente, nella directory corrente. -``` -$ tar xvfz backup.tar.gz /path/to/file -$ tar xvfj backup.tar.bz2 /path/to/file +```bash +tar xvfz backup.tar.gz /path/to/file +tar xvfj backup.tar.bz2 /path/to/file ``` -##### Estrarre una cartella da un backup _tar_ +##### Estrarre una cartella da un backup *tar* Per estrarre una sola directory (incluse le sottodirectory e i file) da un backup, specificare il nome della directory alla fine del comando `tar xvf`. -``` -$ tar xvf backup.tar /path/to/dir/ +```bash +tar xvf backup.tar /path/to/dir/ ``` Per estrarre più directory, specificare ciascuno dei nomi uno dopo l'altro: -``` -$ tar xvf backup.tar /path/to/dir1/ /path/to/dir2/ -$ tar xvfz backup.tar.gz /path/to/dir1/ /path/to/dir2/ -$ tar xvfj backup.tar.bz2 /path/to/dir1/ /path/to/dir2/ +```bash +tar xvf backup.tar /path/to/dir1/ /path/to/dir2/ +tar xvfz backup.tar.gz /path/to/dir1/ /path/to/dir2/ +tar xvfj backup.tar.bz2 /path/to/dir1/ /path/to/dir2/ ``` -##### Estrarre un gruppo di file da un backup _tar_ utilizzando espressioni regolari (_regex_) +##### Estrarre un gruppo di file da un backup *tar* utilizzando espressioni regolari (_regex_) -Specificate un (_regex_) per estrarre i file corrispondenti al modello di selezione specificato. +Specificate un (*regex*) per estrarre i file corrispondenti al modello di selezione specificato. Ad esempio, per estrarre tutti i file con l'estensione `.conf` : -``` -$ tar xvf backup.tar --wildcards '*.conf' +```bash +tar xvf backup.tar --wildcards '*.conf' ``` chiavi : - * `--wildcards *.conf` corrisponde ai file con estensione `.conf`. +* `--wildcards *.conf` corrisponde ai file con estensione `.conf`. -## _CoPy Input Output_ - `cpio` +## *CoPy Input Output* - `cpio` Il comando `cpio` consente di salvare su più supporti successivi senza specificare alcuna opzione. @@ -559,7 +558,7 @@ Questo elenco è fornito con i comandi `find`, `ls` o `cat`. Sintassi del comando `cpio`: -``` +```bash [files command |] cpio {-o| --create} [-options] [device] ``` @@ -567,17 +566,17 @@ Esempio: Con un reindirizzamento dell'output di `cpio`: -``` -$ find /etc | cpio -ov > /backups/etc.cpio +```bash +find /etc | cpio -ov > /backups/etc.cpio ``` Utilizzo del nome di un supporto di backup: -``` -$ find /etc | cpio -ovF /backups/etc.cpio +```bash +find /etc | cpio -ovF /backups/etc.cpio ``` -Il risultato del comando `find` viene inviato come input al comando `cpio` tramite una _pipe_ (carattere `|`, AltGr + 6). +Il risultato del comando `find` viene inviato come input al comando `cpio` tramite una *pipe* (carattere `|`, ++alt-graph+6++). Qui, il comando `find /etc` restituisce un elenco di file corrispondenti al contenuto della directory `/etc` (ricorsivamente) al comando `cpio`, che esegue il backup. @@ -585,14 +584,14 @@ Non dimenticare il segno `>` durante il salvataggio o l'opzione `F save_name_cpi | Opzioni | Descrizione | | ------- | ---------------------------------------- | -| `-o` | Crea un backup (_output_). | +| `-o` | Crea un backup (*output*). | | `-v` | Visualizza il nome dei file elaborati. | | `-F` | Indica il backup da modificare (medium). | Backup su un supporto: -``` -$ find /etc | cpio -ov > /dev/rmt0 +```bash +find /etc | cpio -ov > /dev/rmt0 ``` Il supporto può essere di vari tipi: @@ -604,15 +603,15 @@ Il supporto può essere di vari tipi: #### Backup con percorso relativo -``` -$ cd / -$ find etc | cpio -o > /backups/etc.cpio +```bash +cd / +find etc | cpio -o > /backups/etc.cpio ``` #### Backup con percorso assoluto -``` -$ find /etc | cpio -o > /backups/etc.A.cpio +```bash +find /etc | cpio -o > /backups/etc.A.cpio ``` !!! Warning "Attenzione" @@ -623,14 +622,14 @@ $ find /etc | cpio -o > /backups/etc.A.cpio ### Aggiungere a un backup -``` +```bash [files command |] cpio {-o| --create} -A [-options] [device} ``` Esempio: -``` -$ find /etc/shadow | cpio -o -AF SystemFiles.A.cpio +```bash +find /etc/shadow | cpio -o -AF SystemFiles.A.cpio ``` L'aggiunta di file è possibile solo su supporti ad accesso diretto. @@ -644,7 +643,7 @@ L'aggiunta di file è possibile solo su supporti ad accesso diretto. * Salva **poi** comprimi -``` +```bash $ find /etc | cpio –o > etc.A.cpio $ gzip /backups/etc.A.cpio $ ls /backups/etc.A.cpio* @@ -653,8 +652,8 @@ $ ls /backups/etc.A.cpio* * Salva **e** comprimi -``` -$ find /etc | cpio –o | gzip > /backups/etc.A.cpio.gz +```bash +find /etc | cpio –o | gzip > /backups/etc.A.cpio.gz ``` Non c'è alcuna opzione, a differenza del comando `tar`, per salvare e comprimere allo stesso tempo. Quindi è fatto in due passaggi: salvataggio e compressione. @@ -665,16 +664,16 @@ Per il primo metodo, il file di backup viene automaticamente rinominato dall'uti ### Leggere il contenuto di un backup -Sintassi del comando `cpio` per leggere il contenuto di un backup _cpio_: +Sintassi del comando `cpio` per leggere il contenuto di un backup *cpio*: -``` +```bash cpio -t [-options] [ tmp cpio –iuE tmp -F etc.A.cpio rm -f tmp @@ -775,13 +774,13 @@ Il comando `gzip` comprime i dati. Sintassi del comando `gzip`: -``` +```bash gzip [options] [file ...] ``` Esempio: -``` +```bash $ gzip usr.tar $ ls usr.tar.gz @@ -797,13 +796,13 @@ Anche il comando `bunzip2` comprime i dati. Sintassi del comando `bzip2`: -``` +```bash bzip2 [options] [file ...] ``` Esempio: -``` +```bash $ bzip2 usr.cpio $ ls usr.cpio.bz2 @@ -819,13 +818,13 @@ Il comando `gunzip` decomprime i dati compressi. Sintassi del comando `gunzip`: -``` +```bash gunzip [options] [file ...] ``` Esempio: -``` +```bash $ gunzip usr.tar.gz $ ls usr.tar @@ -845,13 +844,13 @@ Il comando `bunzip2` decomprime i dati compressi. Sintassi del comando `bzip2`: -``` +```bash bzip2 [options] [file ...] ``` Esempio: -``` +```bash $ bunzip2 usr.cpio.bz2 $ ls usr.cpio diff --git a/docs/books/admin_guide/11-tasks.it.md b/docs/books/admin_guide/11-tasks.it.md index 60fb3df5c2..b5994bdb62 100644 --- a/docs/books/admin_guide/11-tasks.it.md +++ b/docs/books/admin_guide/11-tasks.it.md @@ -48,7 +48,7 @@ Il servizio di `cron` è gestito da un demone `crond` presente in memoria. Per verificare il suo stato: -``` +```bash [root] # systemctl status crond ``` @@ -58,13 +58,13 @@ Per verificare il suo stato: Inizializzazione manuale del demone `crond`: -``` +```bash [root]# systemctl {status|start|restart|stop} crond ``` Initializzazione del demone `crond` all'avvio del sistema: -``` +```bash [root]# systemctl enable crond ``` @@ -105,15 +105,16 @@ Per impostazione predefinita, `/etc/cron.deny` esiste ed è vuoto e `/etc/cron.a Solo **user1** sarà in grado di utilizzare`cron`. -``` +```bash [root]# vi /etc/cron.allow user1 ``` ### Proibire ad un utente + Solo **user2** non sarà in grado di usare `cron`. -``` +```bash [root]# vi /etc/cron.deny user2 ``` @@ -132,13 +133,13 @@ Questo file contiene tutte le informazioni che il `crond` deve sapere riguardo a Il comando `crontab` viene utilizzato per gestire il file di pianificazione. -``` +```bash crontab [-u user] [-e | -l | -r] ``` Esempio: -``` +```bash [root]# crontab -u user1 -e ``` @@ -184,7 +185,7 @@ Il file `crontab` è strutturato in base alle seguenti regole. * Ogni linea termina con un ritorno a capo; * Un `#` all'inizio della linea la commenta. -``` +```bash [root]# crontab –e 10 4 1 * * /root/scripts/backup.sh 1 2 3 4 5 6 @@ -216,25 +217,25 @@ Esempi: Script eseguito il 15 Aprile alle 10:25am: -``` +```bash 25 10 15 04 * /root/scripts/script > /log/… ``` Esegui alle 11am e quindi alle 4pm di ogni giorno: -``` +```bash 00 11,16 * * * /root/scripts/script > /log/… ``` Esegui ogni ora dalle 11am alle 4pm di ogni giorno: -``` +```bash 00 11-16 * * * /root/scripts/script > /log/… ``` Esegui ogni 10 minuti durante l'orario di lavoro: -``` +```bash */10 8-17 * * 1-5 /root/scripts/script > /log/… ``` @@ -253,12 +254,12 @@ Per l'utente root, `crontab` ha anche alcune impostazioni speciali del tempo: Un utente, rockstar, vuole modificare il suo file `crontab`: -1) `crond` controlla se è permesso (`/etc/cron.allow` e `/etc/cron.deny`). +1. `crond` controlla se è autorizzato (`/etc/cron.allow` e `/etc/cron.deny`). -2) Se lo è, accede al file `crontab` (`/var/spool/cron/rockstar`). +2. Se lo è, accede al suo file `crontab` (`/var/spool/cron/rockstar`). -Ogni minuto `cron` legge il file di pianificazione. + Ogni minuto `crond` legge i file di pianificazione. -3) Esegue le attività pianificate. +3. Esegue le attività programmate. -4) Riporta sistematicamente in un file di registro (`/var/log/cron`). +4. I rapporti sono riportati sistematicamente in un file di log (`/var/log/cron`). diff --git a/docs/books/learning_ansible/01-basic.de.md b/docs/books/learning_ansible/01-basic.de.md index e2ec25564c..8d84ab875f 100644 --- a/docs/books/learning_ansible/01-basic.de.md +++ b/docs/books/learning_ansible/01-basic.de.md @@ -13,13 +13,13 @@ In diesem Kapitel werden Sie lernen, wie Sie mit Ansible arbeiten. **Ziele**: In diesem Kapitel wird Folgendes behandelt: -:heavy_check_mark: Ansible-Implementierung; -:heavy_check_mark: Konfigurationsänderungen auf einem Server anwenden; +:heavy_check_mark: Ansible-Implementierung; +:heavy_check_mark: Konfigurationsänderungen auf einem Server anwenden; :heavy_check_mark: erste Ansible-Playbooks entwerfen; -:checkered_flag: **ansible**, **module**, **playbook** +:checkered_flag: **ansible**, **module**, **playbook** . -**Vorkenntnisse**: :star: :star: :star: +**Vorkenntnisse**: :star: :star: :star: **Schwierigkeitsgrad**: :star: :star: **Lesezeit**: 31 Minuten @@ -96,21 +96,21 @@ Das _EPEL_ ist für beide Versionen erforderlich, Sie können es also jetzt inst * EPEL-Installation: -``` -$ sudo dnf install epel-release +```bash +sudo dnf install epel-release ``` ### Installation über EPEL Um Ansible über _EPEL_ zu installieren, können wir Folgendes tun: -``` -$ sudo dnf install ansible +```bash +sudo dnf install ansible ``` Und dann sollten wir die Installation überprüfen: -``` +```bash $ ansible --version ansible [core 2.14.2] config file = /etc/ansible/ansible.cfg @@ -138,8 +138,8 @@ Da wir eine neuere Version von Ansible verwenden möchten, installieren wir dies In dieser Phase können wir Ansible mit der gewünschten Python-Version installieren. -``` -$ sudo dnf install python38 python38-pip python38-wheel python3-argcomplete rust cargo curl +```bash +sudo dnf install python38 python38-pip python38-wheel python3-argcomplete rust cargo curl ``` !!! note "Anmerkung" @@ -149,14 +149,14 @@ $ sudo dnf install python38 python38-pip python38-wheel python3-argcomplete rust Wir können jetzt Ansible installieren: -``` -$ pip3.8 install --user ansible -$ activate-global-python-argcomplete --user +```bash +pip3.8 install --user ansible +activate-global-python-argcomplete --user ``` Überprüfen Sie Ihre Ansible-Version: -``` +```bash $ ansible --version ansible [core 2.13.11] config file = None @@ -184,7 +184,7 @@ Es gibt zwei grundlegende Konfigurationsdateien: Die Konfigurationsdatei wird automatisch erstellt, wenn Ansible mit seinem RPM-Paket installiert wurde. Bei einer `pip`-Installation existiert diese Datei nicht. Wir müssen es manuell mit dem Befehl `ansible-config` erstellen: -``` +```bash $ ansible-config -h usage: ansible-config [-h] [--version] [-v] {list,dump,view,init} ... @@ -200,7 +200,7 @@ positional arguments: Beispiel: -``` +```bash ansible-config init --disabled > /etc/ansible/ansible.cfg ``` @@ -224,7 +224,7 @@ Manchmal müssen Sie sorgfältig darüber nachdenken, wie Sie diese Datei gestal Wechseln Sie zur Default-Inventardatei, die sich unter `/etc/ansible/hosts` befindet. Einige Beispiele werden bereitgestellt und kommentiert: -``` +```text # This is the default ansible 'hosts' file. # # It should live in /etc/ansible/hosts @@ -278,7 +278,7 @@ Das Inventar kann automatisch in der Produktion generiert werden, insbesondere w Wie Sie vielleicht bemerkt haben, werden Gruppen in eckigen Klammern angegeben. Dann kommen die Elemente, die zu den Gruppen gehören. Sie können beispielsweise eine `rocky8`-Gruppe erstellen, indem Sie den folgenden Block in die Datei einfügen: -``` +```bash [rocky8] 172.16.1.10 172.16.1.11 @@ -286,7 +286,7 @@ Wie Sie vielleicht bemerkt haben, werden Gruppen in eckigen Klammern angegeben. Gruppen können innerhalb anderer Gruppen verwendet werden. In diesem Fall müssen Sie mit dem Attribut `:children` angeben, dass die übergeordnete Gruppe aus Untergruppen besteht, wie in diesem Fall: -``` +```bash [linux:children] rocky8 debian9 @@ -310,7 +310,7 @@ Nachdem unser Verwaltungsserver nun installiert und unser Inventory bereit ist, Der Befehl `ansible` startet eine Aufgabe auf einem oder mehreren Zielhosts. -``` +```bash ansible [-m module_name] [-a args] [options] ``` @@ -322,37 +322,37 @@ Beispiele: * Listen Sie die Hosts auf, die zur Gruppe „rocky8“ gehören: -``` +```bash ansible rocky8 --list-hosts ``` * Testen Sie eine Gruppe von Hosts mit dem Modul `ping`: -``` +```bash ansible rocky8 -m ping ``` * Fakten über eine Hostgruppe mit dem `setup`-Modul anzeigen: -``` +```bash ansible rocky8 -m setup ``` * Führen Sie den Befehl auf der Hostgruppe aus, indem Sie das `command`-Modul mit den folgenden Argumenten aufrufen: -``` +```bash ansible rocky8 -m command -a 'uptime' ``` * Einen Befehl mit Administratorrechten ausführen: -``` +```bash ansible ansible_clients --become -m command -a 'reboot' ``` * Run a command using a custom inventory file: -``` +```bash ansible rocky8 -i ./local-inventory -m command -a 'date' ``` @@ -380,26 +380,26 @@ Dieser Benutzer wird verwendet: Erstellen Sie auf beiden Maschinen einen `ansible`-Benutzer, der Ansible gewidmet ist: -``` -$ sudo useradd ansible -$ sudo usermod -aG wheel ansible +```bash +sudo useradd ansible +sudo usermod -aG wheel ansible ``` Passwort für diesen Benutzer setzen: -``` -$ sudo passwd ansible +```bash +sudo passwd ansible ``` Ändern Sie die sudoers-Konfiguration, um Mitgliedern der `wheel`-Gruppe die Ausführung von sudo ohne Passwort zu ermöglichen: -``` -$ sudo visudo +```bash +sudo visudo ``` Unser Ziel ist es, die vorbelegung auszukommentieren und die NOPASSWD-Option zu ändern, sodass diese Zeilen wie folgt aussehen: -``` +```bash ## Allows people in group wheel to run all commands # %wheel ALL=(ALL) ALL @@ -414,8 +414,8 @@ Unser Ziel ist es, die vorbelegung auszukommentieren und die NOPASSWD-Option zu Wenn Sie ab diesem Zeitpunkt die Verwaltung nutzen, beginnen Sie mit diesem neuen Benutzer zu arbeiten: -``` -$ sudo su - ansible +```bash +sudo su - ansible ``` ### Test mit ping Modul @@ -424,13 +424,13 @@ Standardmäßig ist die Passwortanmeldung bei Ansible nicht zulässig. Kommentieren Sie die folgende Zeile aus dem Abschnitt `[defaults]` der Konfigurationsdatei `/etc/ansible/ansible.cfg` aus und setzen Sie sie auf True: -``` +```bash ask_pass = True ``` Führen Sie einen `ping` auf jeden Server der rocky8-Gruppe aus: -``` +```bash # ansible rocky8 -m ping SSH password: 172.16.1.10 | SUCCESS => { @@ -469,7 +469,7 @@ Die Passwortauthentifizierung wird durch eine wesentlich sicherere Authentifizie Der Dual-Key wird mit dem Befehl `ssh-keygen` auf der Managementstation vom `ansible`-Benutzer generiert: -``` +```bash [ansible]$ ssh-keygen Generating public/private rsa key pair. Enter file in which to save the key (/home/ansible/.ssh/id_rsa): @@ -496,14 +496,14 @@ The key's randomart image is: Der öffentliche Schlüssel kann auf die Server kopiert werden: -``` +```bash # ssh-copy-id ansible@172.16.1.10 # ssh-copy-id ansible@172.16.1.11 ``` Kommentieren Sie die folgende Zeile aus dem Abschnitt `[defaults]` in der Konfigurationsdatei `/etc/ansible/ansible.cfg` erneut aus, um die Kennwortauthentifizierung zu verhindern: -``` +```bash #ask_pass = True ``` @@ -511,7 +511,7 @@ Kommentieren Sie die folgende Zeile aus dem Abschnitt `[defaults]` in der Konfig Für den nächsten Test wird das `shell`-Modul verwendet, das die Ausführung von Remote-Befehlen ermöglicht: -``` +```bash # ansible rocky8 -m shell -a "uptime" 172.16.1.10 | SUCCESS | rc=0 >> 12:36:18 up 57 min, 1 user, load average: 0.00, 0.00, 0.00 @@ -540,7 +540,7 @@ Collections sind ein Verteilungsformat für Ansible-Inhalte, das Playbooks, Roll Ein Modul wird mit der Option `-m` des Befehls `ansible` aufgerufen: -``` +```bash ansible [-m module_name] [-a args] [options] ``` @@ -564,7 +564,7 @@ Jede Bedarfskategorie hat ihr eigenes Modul. Hier ist eine unvollständige Liste Mit dem `dnf`-Modul können Sie die Software auf Ziel-Clients installieren: -``` +```bash # ansible rocky8 --become -m dnf -a name="httpd" 172.16.1.10 | SUCCESS => { "changed": true, @@ -588,7 +588,7 @@ Mit dem `dnf`-Modul können Sie die Software auf Ziel-Clients installieren: Da es sich bei der installierten Software um einen Dienst handelt, ist es notwendig, diesen mit dem Modul `systemd` zu starten: -``` +```bash # ansible rocky8 --become -m systemd -a "name=httpd state=started" 172.16.1.10 | SUCCESS => { "changed": true, @@ -632,7 +632,7 @@ Werfen Sie einen Blick auf die verschiedenen facts Ihrer Clients, um eine Vorste Wir werden später sehen, wie wir Fakten in unseren Playbooks nutzen und wie wir eigene Fakten - facts - erstellen können. -``` +```bash # ansible ansible_clients -m setup | less 192.168.1.11 | SUCCESS => { "ansible_facts": { @@ -667,7 +667,7 @@ Ansible's playbooks describe a policy to be applied to remote systems, to force Weitere Informationen zu yaml finden Sie [hier](https://docs.ansible.com/ansible/latest/reference_appendixes/YAMLSyntax.html) -``` +```bash ansible-playbook ... [options] ``` @@ -696,7 +696,7 @@ Mit dem folgenden Playbook können wir Apache und MariaDB auf unseren Zielserver Erstellen Sie eine `test.yml`-Datei mit folgendem Inhalt: -``` +```bash --- - hosts: rocky8 <1> become: true <2> @@ -723,7 +723,7 @@ Erstellen Sie eine `test.yml`-Datei mit folgendem Inhalt: Die Ausführung des Playbooks erfolgt mit dem Befehl `ansible-playbook`: -``` +```bash $ ansible-playbook test.yml PLAY [rocky8] **************************************************************** @@ -755,7 +755,7 @@ PLAY RECAP ********************************************************************* Für eine bessere Lesbarkeit wird empfohlen, Playbooks im vollständigen yaml-Format zu schreiben. Im vorherigen Beispiel werden die Argumente in derselben Zeile des Formulars angegeben, wobei der Argumentwert auf seinen Namen getrennt durch ein Gleichheitzeichen `=` folgt. Schauen Sie sich das gleiche Playbook im vollständigen Yaml-Format an: -``` +```bash --- - hosts: rocky8 become: true @@ -791,14 +791,15 @@ Für eine bessere Lesbarkeit wird empfohlen, Playbooks im vollständigen yaml-Fo Hinweis zu collections: Ansible stellt Module jetzt in Form von Sammlungen bereit. Einige Module werden standardmäßig in der `ansible.builtin`-collection bereitgestellt, andere müssen manuell installiert werden über: -``` +```bash ansible-galaxy collection install [collectionname] ``` + dabei ist [collectionname] der Name der Kollektion (die eckigen Klammern hier werden verwendet, um hervorzuheben, dass dieser durch einen tatsächlichen Kollektiosnamen ersetzt werden muss, und sind NICHT Teil des Befehls). Das vorherige Beispiel sollte wie folgt geschrieben werden: -``` +```bash --- - hosts: rocky8 become: true @@ -830,7 +831,7 @@ Das vorherige Beispiel sollte wie folgt geschrieben werden: Ein Playbook ist nicht auf ein Ziel beschränkt: -``` +```bash --- - hosts: webservers become: true @@ -866,19 +867,19 @@ Ein Playbook ist nicht auf ein Ziel beschränkt: Sie können die Syntax des Playbooks wie folgt prüfen: -``` -$ ansible-playbook --syntax-check play.yml +```bash +ansible-playbook --syntax-check play.yml ``` Sie können auch ein "linter" für yaml verwenden: -``` -$ dnf install -y yamllint +```bash +dnf install -y yamllint ``` und dann die yaml-Syntax der Playbooks überprüfen: -``` +```bash $ yamllint test.yml test.yml 8:1 error syntax error: could not find expected ':' (syntax) @@ -896,7 +897,7 @@ test.yml * Client-Distribution aktualisieren * Client neustarten -``` +```bash ansible ansible_clients --become -m group -a "name=Paris" ansible ansible_clients --become -m group -a "name=Tokio" ansible ansible_clients --become -m group -a "name=NewYork" diff --git a/docs/books/learning_ansible/01-basic.it.md b/docs/books/learning_ansible/01-basic.it.md index 152353ac97..bdf8ea1b16 100644 --- a/docs/books/learning_ansible/01-basic.it.md +++ b/docs/books/learning_ansible/01-basic.it.md @@ -13,13 +13,13 @@ In questo capitolo imparerai come lavorare con Ansible. **Obiettivi**: In questo capitolo imparerai come: -:heavy_check_mark: Implementare Ansible; -:heavy_check_mark: Applicare modifiche alla configurazione su un server; +:heavy_check_mark: Implementare Ansible; +:heavy_check_mark: Applicare modifiche alla configurazione su un server; :heavy_check_mark: Creare i primi playbook Ansible; :checkered_flag: **ansible**, **moduli**, **playbook** -**Conoscenza**: :star: :star: :star: +**Conoscenza**: :star: :star: :star: **Complessità**: :star: :star: **Tempo di lettura**: 30 minuti @@ -96,21 +96,21 @@ L'_EPEL_ è necessario per entrambe le versioni, quindi potete procedere all'ins * Installazione di EPEL: -``` -$ sudo dnf install epel-release +```bash +sudo dnf install epel-release ``` ### Installazione da EPEL Se installiamo Ansible da _EPEL_, possiamo fare quanto segue: -``` -$ sudo dnf install ansible +```bash +sudo dnf install ansible ``` Successivamente, verificare l'installazione: -``` +```bash $ ansible --version ansible [core 2.14.2] config file = /etc/ansible/ansible.cfg @@ -138,8 +138,8 @@ Poiché vogliamo usare una versione più recente di Ansible, la installeremo da In questa fase, possiamo scegliere di installare ansible con la versione di python che desideriamo. -``` -$ sudo dnf install python38 python38-pip python38-wheel python3-argcomplete rust cargo curl +```bash +sudo dnf install python38 python38-pip python38-wheel python3-argcomplete rust cargo curl ``` !!! Note "Nota" @@ -149,14 +149,14 @@ $ sudo dnf install python38 python38-pip python38-wheel python3-argcomplete rust Ora possiamo installare Ansible: -``` -$ pip3.8 install --user ansible -$ activate-global-python-argcomplete --user +```bash +pip3.8 install --user ansible +activate-global-python-argcomplete --user ``` Controllare la versione di Ansible: -``` +```bash $ ansible --version ansible [core 2.13.11] config file = None @@ -184,7 +184,7 @@ I file di configurazione principali sono due: Il file di configurazione viene creato automaticamente se Ansible è stato installato con il suo pacchetto RPM. Con un'installazione `pip`, questo file non esiste. Dovremo crearlo a mano con il comando `ansible-config`: -``` +```bash $ ansible-config -h usage: ansible-config [-h] [--version] [-v] {list,dump,view,init} ... @@ -200,7 +200,7 @@ argomenti di posizione: Esempio: -``` +```bash ansible-config init --disabled > /etc/ansible/ansible.cfg ``` @@ -224,7 +224,7 @@ A volte è necessario riflettere attentamente su come costruire questo file. Andare al file di inventario predefinito, che si trova in `/etc/ansible/hosts`. Vengono forniti alcuni esempi commentati: -``` +```text # This is the default ansible 'hosts' file. # # It should live in /etc/ansible/hosts @@ -278,7 +278,7 @@ L'inventario può essere generato automaticamente in produzione, soprattutto se Come avrete notato, i gruppi sono dichiarati tra parentesi quadre. Poi vengono gli elementi che appartengono ai gruppi. Si può creare, ad esempio, un gruppo `rocky8` inserendo il seguente blocco nel file: -``` +```bash [rocky8] 172.16.1.10 172.16.1.11 @@ -286,7 +286,7 @@ Come avrete notato, i gruppi sono dichiarati tra parentesi quadre. Poi vengono g I gruppi possono essere utilizzati all'interno di altri gruppi. In questo caso, occorre specificare che il gruppo padre è composto da sottogruppi con l'attributo `:children`, come in questo caso: -``` +```bash [linux:children] rocky8 debian9 @@ -310,7 +310,7 @@ Ora che il nostro server di gestione è installato e il nostro inventario è pro Il comando `ansible` lancia un task su uno o più host di destinazione. -``` +```bash ansible [-m module_name] [-a args] [options] ``` @@ -322,37 +322,37 @@ Esempi: * Elenca gli host appartenenti al gruppo rocky8: -``` +```bash ansible rocky8 --list-hosts ``` * Eseguire il ping di un gruppo di host con il modulo `ping`: -``` +```bash ansible rocky8 -m ping ``` * Visualizzare i fatti di un gruppo di host con il modulo `setup`: -``` +```bash ansible rocky8 -m setup ``` * Eseguire un comando su un gruppo di host invocando il modulo `command` con degli argomenti: -``` +```bash ansible rocky8 -m command -a 'uptime' ``` * Eseguire un comando con privilegi di amministratore: -``` +```bash ansible ansible_clients --become -m command -a 'reboot' ``` * Eseguire un comando utilizzando un file di inventario personalizzato: -``` +```bash ansible rocky8 -i ./local-inventory -m command -a 'date' ``` @@ -380,26 +380,26 @@ Questo utente servirà: Su entrambe le macchine, creare un utente `ansible`, dedicato ad ansible: -``` -$ sudo useradd ansible -$ sudo usermod -aG wheel ansible +```bash +sudo useradd ansible +sudo usermod -aG wheel ansible ``` Impostare una password per questo utente: -``` -$ sudo passwd ansible +```bash +sudo passwd ansible ``` Modificare la configurazione di sudoers per consentire ai membri del gruppo `wheel` di eseguire sudo senza password: -``` -$ sudo visudo +```bash +sudo visudo ``` Il nostro obiettivo è commentare l'opzione predefinita e decommentare l'opzione NOPASSWD, in modo che queste righe abbiano l'aspetto seguente: -``` +```bash ## Allows people in group wheel to run all commands # %wheel ALL=(ALL) ALL @@ -414,8 +414,8 @@ Il nostro obiettivo è commentare l'opzione predefinita e decommentare l'opzione Quando si utilizza la gestione da questo momento in poi, si inizia a lavorare con questo nuovo utente: -``` -$ sudo su - ansible +```bash +sudo su - ansible ``` ### Verifica con il modulo ping @@ -424,13 +424,13 @@ Per impostazione predefinita, il login con password non è consentito da Ansible Togliere il commento alla seguente riga dalla sezione `[defaults]` del file di configurazione `/etc/ansible/ansible.cfg` e impostarla su True: -``` +```bash ask_pass = True ``` Eseguire un `ping` su ogni server del gruppo rocky8: -``` +```bash # ansible rocky8 -m ping SSH password: 172.16.1.10 | SUCCESS => { @@ -467,7 +467,7 @@ L'autenticazione tramite password sarà sostituita da un'autenticazione a chiave La doppia chiave sarà generata con il comando `ssh-keygen` sulla stazione di gestione dall'utente `ansible`: -``` +```bash [ansible]$ ssh-keygen Generating public/private rsa key pair. Enter file in which to save the key (/home/ansible/.ssh/id_rsa): @@ -494,14 +494,14 @@ The key's randomart image is: La chiave pubblica può essere copiata sui server: -``` +```bash # ssh-copy-id ansible@172.16.1.10 # ssh-copy-id ansible@172.16.1.11 ``` Ricommentare la seguente riga dalla sezione `[defaults]` del file di configurazione `/etc/ansible/ansible.cfg` per impedire l'autenticazione tramite password: -``` +```bash #ask_pass = True ``` @@ -509,7 +509,7 @@ Ricommentare la seguente riga dalla sezione `[defaults]` del file di configurazi Per il prossimo test, viene utilizzato il modulo `shell`, che consente l'esecuzione di comandi remoti: -``` +```bash # ansible rocky8 -m shell -a "uptime" 172.16.1.10 | SUCCESS | rc=0 >> 12:36:18 up 57 min, 1 user, load average: 0.00, 0.00, 0.00 @@ -538,7 +538,7 @@ Le collezioni sono un formato di distribuzione per i contenuti di Ansible che po Un modulo viene invocato con l'opzione `-m` del comando `ansible`: -``` +```bash ansible [-m module_name] [-a args] [options] ``` @@ -562,7 +562,7 @@ Ogni categoria di esigenze ha un proprio modulo. Ecco un elenco non esaustivo: Il modulo `dnf` consente di installare il software sui client di destinazione: -``` +```bash # ansible rocky8 --become -m dnf -a name="httpd" 172.16.1.10 | SUCCESS => { "changed": true, @@ -586,7 +586,7 @@ Il modulo `dnf` consente di installare il software sui client di destinazione: Essendo il software installato un servizio, è necessario avviarlo con il modulo `systemd`: -``` +```bash # ansible rocky8 --become -m systemd -a "name=httpd state=started" 172.16.1.10 | SUCCESS => { "changed": true, @@ -630,7 +630,7 @@ Date un'occhiata ai diversi fatti dei vostri client per avere un'idea della quan Vedremo più tardi come utilizzare i fatti nei nostri playbook e come creare i nostri fatti. -``` +```bash # ansible ansible_clients -m setup | less 192.168.1.11 | SUCCESS => { "ansible_facts": { @@ -665,7 +665,7 @@ I playbook di Ansible descrivono una politica da applicare ai sistemi remoti, pe Ulteriori informazioni su [yaml qui](https://docs.ansible.com/ansible/latest/reference_appendices/YAMLSyntax.html) -``` +```bash ansible-playbook ... [options] ``` @@ -694,7 +694,7 @@ Il seguente playbook ci permetterà di installare Apache e MariaDB sui nostri se Crea un file `test.yml` con il seguente contenuto: -``` +```bash --- - hosts: rocky8 <1> become: true <2> @@ -721,7 +721,7 @@ Crea un file `test.yml` con il seguente contenuto: L'esecuzione del playbook avviene con il comando `ansible-playbook`: -``` +```bash $ ansible-playbook test.yml PLAY [rocky8] **************************************************************** @@ -753,7 +753,7 @@ PLAY RECAP ********************************************************************* Per una maggiore leggibilità, è consigliabile scrivere i playbook in formato yaml completo. Nell'esempio precedente, gli argomenti sono indicati sulla stessa riga del modulo, con il valore dell'argomento che segue il suo nome separato da un `=`. Guardate lo stesso playbook in yaml completo: -``` +```bash --- - hosts: rocky8 become: true @@ -789,14 +789,15 @@ Per una maggiore leggibilità, è consigliabile scrivere i playbook in formato y Nota sulle collezioni: Ansible ora fornisce moduli sotto forma di collezioni. Alcuni moduli sono forniti di default nella collezione `ansible.builtin`, altri devono essere installati manualmente tramite il: -``` +```bash ansible-galaxy collection install [collectionname] ``` + dove [collectionname] è il nome dell'insieme (le parentesi quadre servono a evidenziare la necessità di sostituirlo con il nome effettivo dell'insieme e NON fanno parte del comando). L'esempio precedente dovrebbe essere scritto come segue: -``` +```bash --- - hosts: rocky8 become: true @@ -828,7 +829,7 @@ L'esempio precedente dovrebbe essere scritto come segue: Un playbook non è limitato a un obiettivo: -``` +```bash --- - hosts: webservers become: true @@ -864,19 +865,19 @@ Un playbook non è limitato a un obiettivo: Puoi controllare la sintassi del tuo playbook: -``` -$ ansible-playbook --syntax-check play.yml +```bash +ansible-playbook --syntax-check play.yml ``` È anche possibile utilizzare un "linter" per yaml: -``` -$ dnf install -y yamllint +```bash +dnf install -y yamllint ``` quindi controllare la sintassi yaml dei tuoi playbook: -``` +```bash $ yamllint test.yml test.yml 8:1 error syntax error: could not find expected ':' (syntax) @@ -894,7 +895,7 @@ test.yml * Aggiornare la distribuzione del client * Riavviare il tuo client -``` +```bash ansible ansible_clients --become -m group -a "name=Paris" ansible ansible_clients --become -m group -a "name=Tokio" ansible ansible_clients --become -m group -a "name=NewYork" diff --git a/docs/books/learning_ansible/04-ansible-galaxy.it.md b/docs/books/learning_ansible/04-ansible-galaxy.it.md index f950e3ef1a..d0c7c9fbb7 100644 --- a/docs/books/learning_ansible/04-ansible-galaxy.it.md +++ b/docs/books/learning_ansible/04-ansible-galaxy.it.md @@ -10,12 +10,12 @@ In questo capitolo imparerai come usare, installare e gestire ruoli e collezioni **Obiettivi**: In questo capitolo imparerai come: -:heavy_check_mark: installare e gestire collezioni; -:heavy_check_mark: installare e gestire i ruoli;. +:heavy_check_mark: installare e gestire collezioni; +:heavy_check_mark: installare e gestire i ruoli. :checkered_flag: **ansible**, **ansible-galaxy**, **ruoli**, **collezioni** -**Conoscenza**: :star: :star: +**Conoscenza**: :star: :star: **Complessità**: :star: :star: :star: **Tempo di lettura**: 40 minuti @@ -32,7 +32,7 @@ Il comando `ansible-galaxy` gestisce ruoli e collezioni utilizzando [galaxy.ansi * Per gestire i ruoli: -``` +```bash ansible-galaxy role [import|init|install|login|remove|...] ``` @@ -47,7 +47,7 @@ ansible-galaxy role [import|init|install|login|remove|...] * Per gestire le collezioni: -``` +```bash ansible-galaxy collection [import|init|install|login|remove|...] ``` @@ -73,13 +73,13 @@ Puoi controllare il codice nel repo github del ruolo [qui](https://github.com/al * Installare il ruolo. Questo richiede un solo comando: -``` +```bash ansible-galaxy role install alemorvan.patchmanagement ``` * Creare un playbook per includere il ruolo: -``` +```bash - name: Start a Patch Management hosts: ansible_clients vars: @@ -98,13 +98,13 @@ Creiamo delle attività che saranno eseguite prima e dopo il processo di aggiorn * Crea la cartella `custom_tasks`: -``` +```bash mkdir custom_tasks ``` * Crea `custom_tasks/pm_before_update_tasks_file.yml` (puoi liberamente cambiare il nome e il contenuto di questo file) -``` +```bash --- - name: sample task before the update process debug: @@ -113,7 +113,7 @@ mkdir custom_tasks * Crea `custom_tasks/pm_after_update_tasks_file.yml` (puoi liberamente cambiare il nome e il contenuto di questo file) -``` +```bash --- - name: sample task after the update process debug: @@ -122,7 +122,7 @@ mkdir custom_tasks E lancia il tuo primo Gestione Patch: -``` +```bash ansible-playbook patchmanagement.yml PLAY [Start a Patch Management] ************************************************************************* @@ -210,14 +210,14 @@ Puoi anche creare i tuoi ruoli per le tue esigenze e pubblicarli su Internet se Uno scheletro di ruolo, che serve come punto di partenza per lo sviluppo di ruolo personalizzato, può essere generato dal comando `ansible-galaxy`: -``` +```bash $ ansible-galaxy role init rocky8 - Role rocky8 was created successfully ``` Il comando genererà la seguente struttura ad albero per contenere il ruolo `rocky8`: -``` +```bash tree rocky8/ rocky8/ ├── defaults @@ -260,7 +260,7 @@ Implementiamo questo con un ruolo "go anywhere" che creerà un utente predefinit Creeremo un utente `rockstar` su tutti i nostri server. Poiché non vogliamo che questo utente sia sovrascritto, definiamolo nel `vars/main.yml`: -``` +```bash --- rocky8_default_group: name: rockstar @@ -273,7 +273,7 @@ rocky8_default_user: Ora possiamo usare queste variabili all'interno dei nostri `tasks/main.yml` senza alcuna inclusione. -``` +```bash --- - name: Create default group group: @@ -289,7 +289,7 @@ Ora possiamo usare queste variabili all'interno dei nostri `tasks/main.yml` senz Per testare il tuo nuovo ruolo, creiamo un playbook `test-role.yml` nella stessa directory del tuo ruolo: -``` +```bash --- - name: Test my role hosts: localhost @@ -303,7 +303,7 @@ Per testare il tuo nuovo ruolo, creiamo un playbook `test-role.yml` nella stessa e lancialo: -``` +```bash ansible-playbook test-role.yml PLAY [Test my role] ************************************************************************************ @@ -327,7 +327,7 @@ Vediamo l'uso delle variabili predefinite. Crea un elenco di pacchetti da installare per impostazione predefinita sui server e un elenco vuoto di pacchetti da disinstallare. Modifica i file `defaults/main.yml` e aggiungi questi due elenchi: -``` +```bash rocky8_default_packages: - tree - vim @@ -336,7 +336,7 @@ rocky8_remove_packages: [] e usali nei tuoi `tasks/main.yml`: -``` +```bash - name: Install default packages (can be overridden) package: name: "{{ rocky8_default_packages }}" @@ -350,7 +350,7 @@ e usali nei tuoi `tasks/main.yml`: Verifica il tuo ruolo con l'aiuto del playbook precedentemente creato: -``` +```bash ansible-playbook test-role.yml PLAY [Test my role] ************************************************************************************ @@ -376,7 +376,7 @@ localhost : ok=5 changed=0 unreachable=0 failed=0 s Ora puoi sovrascrivere i `rocky8_remove_packages` nel tuo playbook e disinstallare ad esempio `cockpit`: -``` +```bash --- - name: Test my role hosts: localhost @@ -391,7 +391,7 @@ Ora puoi sovrascrivere i `rocky8_remove_packages` nel tuo playbook e disinstalla become_user: root ``` -``` +```bash ansible-playbook test-role.yml PLAY [Test my role] ************************************************************************************ @@ -417,7 +417,7 @@ localhost : ok=5 changed=1 unreachable=0 failed=0 s Ovviamente, non c'è limite a quanto si può migliorare il proprio ruolo. Immaginate che per uno dei vostri server, avete bisogno di un pacchetto che è nell'elenco di quelli da disinstallare. Si potrebbe quindi, ad esempio, creare una nuova lista che può essere sovrascritta e quindi rimuovere dall'elenco dei pacchetti da disinstallare quelli nell'elenco dei pacchetti specifici da installare utilizzando il filtro jinja `difference()`. -``` +```bash - name: "Uninstall default packages (can be overridden) {{ rocky8_remove_packages }}" package: name: "{{ rocky8_remove_packages | difference(rocky8_specifics_packages) }}" @@ -434,13 +434,13 @@ Le collezioni sono un formato di distribuzione per i contenuti Ansible che posso Per installare o aggiornare una collezione: -``` +```bash ansible-galaxy collection install namespace.collection [--upgrade] ``` È quindi possibile utilizzare la collezione appena installata usando lo spazio dei nomi e il nome del modulo prima del nome o del ruolo: -``` +```bash - import_role: name: namespace.collection.rolename @@ -452,7 +452,7 @@ Puoi trovare un indice di raccolta [qui](https://docs.ansible.com/ansible/latest Installiamo la collezione `community.general`: -``` +```bash ansible-galaxy collection install community.general Starting galaxy collection install process Process install dependency map @@ -464,7 +464,7 @@ community.general:3.3.2 was installed successfully Ora possiamo utilizzare il nuovo modulo disponibile `yum_versionlock`: -``` +```bash - name: Start a Patch Management hosts: ansible_clients become: true @@ -487,7 +487,7 @@ Ora possiamo utilizzare il nuovo modulo disponibile `yum_versionlock`: var: locks.meta.packages ``` -``` +```bash ansible-playbook versionlock.yml PLAY [Start a Patch Management] ************************************************************************* @@ -517,12 +517,12 @@ PLAY RECAP ********************************************************************* Come per i ruoli, puoi creare la tua collezione con l'aiuto del comando `ansible-galaxy`: -``` +```bash ansible-galaxy collection init rocky8.rockstarcollection - Collection rocky8.rockstarcollection was created successfully ``` -``` +```bash tree rocky8/rockstarcollection/ rocky8/rockstarcollection/ ├── docs diff --git a/docs/books/learning_ansible/07-working-with-filters.it.md b/docs/books/learning_ansible/07-working-with-filters.it.md index c399f2384a..7a4245db54 100644 --- a/docs/books/learning_ansible/07-working-with-filters.it.md +++ b/docs/books/learning_ansible/07-working-with-filters.it.md @@ -17,7 +17,7 @@ In questo capitolo imparerai come trasformare i dati con i filtri jinja. :checkered_flag: **ansible**, **jinja**, **filtri** -**Conoscenza**: :star: :star: :star: +**Conoscenza**: :star: :star: :star: **Complessità**: :star: :star: :star: :star: **Tempo di lettura**: 20 minuti @@ -34,7 +34,7 @@ Questi filtri, scritti in python, ci permettono di manipolare e trasformare le n In tutto questo capitolo, useremo il seguente playbook per testare i diversi filtri presentati: -``` +```bash - name: Manipulating the data hosts: localhost gather_facts: false @@ -78,7 +78,7 @@ In tutto questo capitolo, useremo il seguente playbook per testare i diversi fil Il playbook sarà riprodotto come segue: -``` +```bash ansible-playbook play-filter.yml ``` @@ -90,7 +90,7 @@ Per conoscere il tipo di dati (il tipo nel linguaggio python), è necessario uti Esempio: -``` +```bash - name: Display the type of a variable debug: var: true_boolean|type_debug @@ -98,7 +98,7 @@ Esempio: che ci fornisce: -``` +```bash TASK [Display the type of a variable] ****************************************************************** ok: [localhost] => { "true_boolean|type_debug": "bool" @@ -107,13 +107,13 @@ ok: [localhost] => { È possibile trasformare un intero in una stringa: -``` +```bash - name: Transforming a variable type debug: var: zero|string ``` -``` +```bash TASK [Transforming a variable type] *************************************************************** ok: [localhost] => { "zero|string": "0" @@ -122,7 +122,7 @@ ok: [localhost] => { Trasforma una stringa in un intero: -``` +```bash - name: Transforming a variable type debug: var: zero_string|int @@ -130,7 +130,7 @@ Trasforma una stringa in un intero: oppure una variabile in un booleano: -``` +```bash - name: Display an integer as a boolean debug: var: non_zero | bool @@ -151,7 +151,7 @@ oppure una variabile in un booleano: Una stringa di caratteri può essere trasformata in maiuscolo o minuscolo: -``` +```bash - name: Lowercase a string of characters debug: var: whatever | lower @@ -163,7 +163,7 @@ Una stringa di caratteri può essere trasformata in maiuscolo o minuscolo: che ci fornisce: -``` +```bash TASK [Lowercase a string of characters] ***************************************************** ok: [localhost] => { "whatever | lower": "it's false!" @@ -179,7 +179,7 @@ Il filtro `replace` consente di sostituire i caratteri con altri. Qui rimuoviamo gli spazi o addirittura sostituiamo una parola: -``` +```bash - name: Replace a character in a string debug: var: whatever | replace(" ", "") @@ -191,7 +191,7 @@ Qui rimuoviamo gli spazi o addirittura sostituiamo una parola: che ci fornisce: -``` +```bash TASK [Replace a character in a string] ***************************************************** ok: [localhost] => { "whatever | replace(\" \", \"\")": "It'sfalse!" @@ -205,14 +205,13 @@ ok: [localhost] => { Il filtro `split` divide una stringa in una lista in base a un carattere: -``` +```bash - name: Cutting a string of characters debug: var: whatever | split(" ", "") ``` - -``` +```bash TASK [Cutting a string of characters] ***************************************************** ok: [localhost] => { "whatever | split(\" \")": [ @@ -226,7 +225,7 @@ ok: [localhost] => { È frequente dover unire i diversi elementi in una singola stringa. Possiamo quindi specificare un carattere o una stringa da inserire tra ogni elemento. -``` +```bash - name: Joining elements of a list debug: var: my_simple_list|join(",") @@ -238,7 +237,7 @@ ok: [localhost] => { che ci fornisce: -``` +```bash TASK [Joining elements of a list] ***************************************************************** ok: [localhost] => { "my_simple_list|join(\",\")": "value_list_1,value_list_2,value_list_3" @@ -257,7 +256,7 @@ I filtri `dict2items` and `itemstodict`, un po 'più complessi da implementare, Si noti che è possibile specificare il nome della chiave e del valore da usare nella trasformazione. -``` +```bash - name: Display a dictionary debug: var: my_dictionary @@ -275,7 +274,7 @@ Si noti che è possibile specificare il nome della chiave e del valore da usare var: my_list | items2dict(key_name='element', value_name='value') ``` -``` +```bash TASK [Display a dictionary] ************************************************************************* ok: [localhost] => { "my_dictionary": { @@ -325,13 +324,13 @@ ok: [localhost] => { È possibile unire o filtrare i dati da una o più liste: -``` +```bash - name: Merger of two lists debug: var: my_simple_list | union(my_simple_list_2) ``` -``` +```bash ok: [localhost] => { "my_simple_list | union(my_simple_list_2)": [ "value_list_1", @@ -345,13 +344,13 @@ ok: [localhost] => { Per mantenere solo l'intersezione dei 2 elenchi (i valori presenti nelle 2 liste): -``` +```bash - name: Merger of two lists debug: var: my_simple_list | intersect(my_simple_list_2) ``` -``` +```bash TASK [Merger of two lists] ******************************************************************************* ok: [localhost] => { "my_simple_list | intersect(my_simple_list_2)": [ @@ -362,13 +361,13 @@ ok: [localhost] => { O al contrario mantenere solo la differenza (i valori che non esistono nella seconda lista): -``` +```bash - name: Merger of two lists debug: var: my_simple_list | difference(my_simple_list_2) ``` -``` +```bash TASK [Merger of two lists] ******************************************************************************* ok: [localhost] => { "my_simple_list | difference(my_simple_list_2)": [ @@ -380,7 +379,7 @@ ok: [localhost] => { Se la tua lista contiene valori non univoci, è anche possibile filtrarli con il filtro `unique`. -``` +```bash - name: Unique value in a list debug: var: my_simple_list | unique @@ -390,7 +389,7 @@ Se la tua lista contiene valori non univoci, è anche possibile filtrarli con il Potrebbe essere necessario importare i dati json (da un'API per esempio) o esportare i dati in yaml o json. -``` +```bash - name: Display a variable in yaml debug: var: my_list | to_nice_yaml(indent=4) @@ -400,7 +399,7 @@ Potrebbe essere necessario importare i dati json (da un'API per esempio) o espor var: my_list | to_nice_json(indent=4) ``` -``` +```bash TASK [Display a variable in yaml] ******************************************************************** ok: [localhost] => { "my_list | to_nice_yaml(indent=4)": "- element: element1\n value: value1\n- element: element2\n value: value2\n" @@ -418,13 +417,13 @@ Se non fornisci valori predefiniti per le tue variabili, ti troverai rapidamente Il valore di una variabile può essere sostituito con un'altra se non esiste con il filtro `default`: -``` +```bash - name: Default value debug: var: variablethatdoesnotexists | default(whatever) ``` -``` +```bash TASK [Default value] ******************************************************************************** ok: [localhost] => { "variablethatdoesnotexists | default(whatever)": "It's false!" @@ -433,13 +432,13 @@ ok: [localhost] => { Nota la presenza dell'apostrofo `'` che dovrebbe essere protetto, per esempio, se usi il modulo `shell`: -``` +```bash - name: Default value debug: var: variablethatdoesnotexists | default(whatever| quote) ``` -``` +```bash TASK [Default value] ******************************************************************************** ok: [localhost] => { "variablethatdoesnotexists | default(whatever|quote)": "'It'\"'\"'s false!'" @@ -448,7 +447,7 @@ ok: [localhost] => { Infine una variabile facoltativa in un modulo può essere ignorata se non esiste con la parola chiave `omit` nel filtro `default`, che ti salverà da un errore al runtime. -``` +```bash - name: Add a new user ansible.builtin.user: name: "{{ user_name }}" @@ -461,13 +460,13 @@ A volte è necessario utilizzare una condizione per assegnare un valore a una va Questo può essere evitato utilizzando il filtro `ternary`: -``` +```bash - name: Default value debug: var: (user_name == 'antoine') | ternary('admin', 'normal_user') ``` -``` +```bash TASK [Default value] ******************************************************************************** ok: [localhost] => { "(user_name == 'antoine') | ternary('admin', 'normal_user')": "admin" @@ -476,8 +475,8 @@ ok: [localhost] => { ## Altri filtri - * `{{ 10000 | random }}`: come indica il suo nome, dà un valore casuale. - * `{{ my_simple_list | first }}`: estrae il primo elemento della lista. - * `{{ my_simple_list | length }}`: dà la lunghezza (di una lista o di una stringa). - * `{{ ip_list | ansible.netcommon.ipv4 }}`: visualizza solo gli IP v4. Senza soffermarsi su questo, se necessario, ci sono molti filtri dedicati alla rete. - * `{{ user_password | password_hash('sha512') }}`: genera una password hash in sha512. +* `{{ 10000 | random }}`: come indica il suo nome, dà un valore casuale. +* `{{ my_simple_list | first }}`: estrae il primo elemento della lista. +* `{{ my_simple_list | length }}`: dà la lunghezza (di una lista o di una stringa). +* `{{ ip_list | ansible.netcommon.ipv4 }}`: visualizza solo gli IP v4. Senza soffermarsi su questo, se necessario, ci sono molti filtri dedicati alla rete. +* `{{ user_password | password_hash('sha512') }}`: genera una password hash in sha512. diff --git a/docs/index.it.md b/docs/index.it.md index 60f1a1c8b6..ab454931b6 100644 --- a/docs/index.it.md +++ b/docs/index.it.md @@ -4,7 +4,7 @@ title: Home # Documentazione Rocky Linux -## Benvenuto! +## Benvenuto Benvenuti nell'hub di documentazione di Rocky Linux; siamo lieti che siate qui. Abbiamo diversi collaboratori che aggiungono contenuti e questi contenuti crescono continuamente. Qui troverete documenti su come costruire Rocky Linux stesso, oltre a documenti su vari argomenti importanti per la comunità Rocky Linux. Chi compone questa comunità, vi chiederete? @@ -18,7 +18,7 @@ Questa pagina iniziale vi fornirà un'introduzione al sito web della documentazi Ora siete nella pagina iniziale della documentazione. Se si dà un'occhiata al menu in alto (sempre disponibile, anche sui dispositivi mobili) si può vedere la struttura principale che mostra le sezioni di primo livello del sito di documentazione. Se si fa clic su ciascuna voce del menu superiore (ad esempio, " Guides "), sul lato sinistro viene visualizzato l'elenco delle *sottosezioni* per ciascuna sezione principale. Le guide comprendono molti argomenti di interesse. -Quando si apre un documento, sul lato destro viene visualizzato una "Tabella dei Contenuti" con collegamenti di navigazione cliccabili per quel documento (per i dispositivi mobili provare l'orientamento orizzontale). Per i documenti lunghi, come le [Note di rilascio](release_notes/8_8.md), l'indice permette di muoversi agevolmente all'interno del documento. Se state leggendo un documento lungo e volete tornare all'inizio, premete il tasto pg su e vedrete apparire un pulsante `Back to top` nella parte superiore dello schermo. +Quando si apre un documento, sul lato destro viene visualizzato una "Tabella dei Contenuti" con collegamenti di navigazione cliccabili per quel documento (per i dispositivi mobili provare l'orientamento orizzontale). Per i documenti lunghi, come le [Note di rilascio](release_notes/8_8.md), l'indice permette di muoversi agevolmente all'interno del documento. Se state leggendo un documento lungo e volete tornare all'inizio, premete ++page-up++ e vedrete apparire un pulsante `Back to top` nella parte superiore dello schermo. Le sezioni principali del sito di documentazione sono: diff --git a/docs/release_notes/9_4.fr.md b/docs/release_notes/9_4.fr.md index ab132e5482..5c8468c6aa 100644 --- a/docs/release_notes/9_4.fr.md +++ b/docs/release_notes/9_4.fr.md @@ -10,7 +10,7 @@ tags: Vous pouvez trouver une liste complète de la plupart des changements dans les [notes de version sources qui se trouvent ici](https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/9/html/9.4_release_notes/index). -## Mise à jour +## Mise à Jour Vous pouvez mettre à jour de Rocky Linux 9.x vers Rocky Linux 9.4 en lançant la commande de mise à jour `sudo dnf -y upgrade`. @@ -105,10 +105,10 @@ Voici les autres changements notables : - L'API RESTful de Podman v4.9 affiche maintenant les données de progression lorsque vous tirez ou poussez une image vers le registre - SQLite est maintenant entièrement supporté comme base de données par défaut pour podman - `Containerfile` supporte désormais les instructions HereDoc multilignes -- `pasta` comme nom de réseau est maintenant déprécié -- La base de données BoltDB est désormais dépréciée -- Le module `container-tools:4.0` est maintenant déprécié -- La pile réseau Container Network Interface (CNI) est dépréciée et sera supprimée dans une prochaine version +- `pasta` comme nom de réseau est maintenant obsolète +- La base de données BoltDB est désormais obsolète +- Le module `container-tools:4.0` est maintenant obsolète +- La pile réseau Container Network Interface (CNI) est obsolète et sera supprimée dans une prochaine version ### Compilateurs et outils de développement diff --git a/docs/release_notes/9_4.it.md b/docs/release_notes/9_4.it.md new file mode 100644 index 0000000000..c0c7b99ea4 --- /dev/null +++ b/docs/release_notes/9_4.it.md @@ -0,0 +1,161 @@ +--- +title: Versione attuale 9.4 +tags: + - 9.4 + - 9.4 release + - Rocky 9.4 +--- + +# Note di rilascio per Rocky Linux 9.4 + +È possibile trovare un elenco completo della maggior parte dei cambiamenti nelle [note di rilascio upstream che si trovano qui](https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/9/html/9.4_release_notes/index). + +## Aggiornamento + +È possibile aggiornare Rocky Linux 9.x a Rocky Linux 9.4 eseguendo `sudo dnf -y upgrade`. + +!!! Note "Nota" + +``` +Rocky Linux non offre un percorso di aggiornamento da qualsiasi versione di Rocky Linux 8. Si consiglia di eseguire un'installazione ex novo del sistema operativo per passare a Rocky Linux 9.4. +``` + +## Immagini + +Oltre alle normali immagini di installazione, sono disponibili diverse immagini, comprese le piattaforme cloud e container. + +Per saperne di più sugli artefatti prodotti dal Cloud Special Interest Group e per informazioni su come partecipare [SIG/Cloud Wiki page](https://sig-cloud.rocky.page/). + +## Installazione + +Prima dell'installazione, [assicurarsi della compatibilità della CPU con questa procedura!](https://docs.rockylinux.org/gemstones/test_cpu_compat/) + +Per installare Rocky Linux 9.4, visitate la [pagina di download](https://rockylinux.org/download/) e scaricate la versione necessaria per la vostra architettura. + +## Il comunicato del team Rocky evidenzia + +### Aggiornamenti cloud e immagini live + +#### Nuovo flusso di lavoro e processo di creazione delle immagini + +La maggior parte delle immagini per il rilascio 9.4 è stata creata utilizzando un nuovo costruttore di immagini: [KIWI](https://github.com/OSInside/kiwi/), di OpenSUSE. Le immagini mirano a completare le caratteristiche delle vecchie immagini e non sono previste gravi regressioni. Se trovate un bug, segnalatelo e faremo del nostro meglio per risolvere o spiegare eventuali differenze. + +Le immagini ancora costruite con imagefactory sono: Vagrant-VBox, Vagrant-VMware e OCP-Base (Oracle Cloud Platform). Le restanti immagini Cloud, Container e Vagrant sono state realizzate con KIWI. Il nuovo flusso di compilazione consentirà a Rocky Linux di fornire aggiornamenti più frequenti alle nostre immagini su tutti i cloud provider. + +Siete invitati a controllare la [configurazione di KIWI](https://git.resf.org/sig_core/rocky-kiwi-descriptions/src/branch/r9) utilizzata e il nostro [toolkit](https://git.resf.org/sig_core/toolkit) usato per richiamare KIWI. + +#### Azure - Community Galleries e Publisher Change + +L'account publisher Rocky Linux per Microsoft Azure è cambiato e le immagini precedenti sono ora deprecate. Per ulteriori informazioni, compresi i dettagli su come migrare al nuovo account, visitate il [post del forum](https://forums.rockylinux.org/t/rocky-linux-images-on-azure-important-update/13721). + +Oltre all'Azure Marketplace, Rocky Linux è disponibile gratuitamente sull'Azure Community Gallery, fornendo un accesso incredibilmente semplice all'esecuzione di Rocky su Microsoft Azure. Le istruzioni su come utilizzare le immagini della Community Gallery sono disponibili in questo [post](https://rockylinux.org/news/rocky-on-azure-community-gallery/). + +### Nuove e importanti + +## Modifiche importanti + +Per un elenco completo delle principali modifiche, vedere [elenco upstream qui].(https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/9/html/9.4_release_notes/overview#overview-major-changes). + +I punti salienti e le nuove funzionalità di questa versione sono illustrati di seguito. + +### Image builder + +- Da Rocky Linux 9.4 in poi, è possibile specificare punti di montaggio personalizzati arbitrari, ad eccezione di percorsi specifici che sono riservati al sistema operativo +- È ora disponibile la creazione di diverse modalità di partizionamento, tra cui `auto-lvm`, `lvm` e `raw` +- È possibile personalizzare le opzioni di personalizzazione di un profilo e aggiungerlo alle personalizzazioni del blueprint utilizzando le opzioni selezionate e non selezionate per aggiungere e rimuovere regole + +### Sicurezza + +Di seguito sono elencati i punti salienti relativi alla sicurezza dell'ultima release Rocky Linux 9.4. Per un elenco completo delle modifiche relative alla sicurezza, consultare il [link upstream qui].(https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/9/html/9.4_release_notes/new-features#new-features-security). + +- La release 3.6 dello spazio utente di **SELinux** introduce le regole di negazione per un'ulteriore personalizzazione delle politiche +- I componenti del server **Keylime**, il verificatore e la registrazione, sono disponibili come contenitori +- Il sistema di elaborazione **Rsyslog** introduce impostazioni di crittografia TLS/SSL personalizzabili e opzioni aggiuntive che riguardano il drop di funzionalità +- Il toolkit TLS **OpenSSL** aggiunge una directory per i file di configurazione specifici del provider +- **libkcapi** 1.4.0 introduce nuovi strumenti e opzioni. In particolare, con la nuova opzione `-T`, è possibile specificare i nomi dei file di destinazione nei calcoli di hash-sum +- **stunnel 5.7.1** Il servizio di tunneling TLS/SSL modifica il comportamento di OpenSSL 1.1 e versioni successive in modalità FIPS. Oltre a questa modifica, questa versione fornisce molte nuove funzionalità, come il supporto per i moderni client PostgreSQL + +### Linguaggi di programmazione dinamica, server web e database + +Per un elenco dettagliato delle modifiche in questa categoria, consultare il [link a monte qui].(https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/9/html/9.4_release_notes/new-features#new-features-dynamic-programming-languages-web-and-database-servers). + +Sono ora disponibili le versioni successive dei seguenti flussi di applicazioni: + +- **Python 3.12** +- **Ruby 3.3** disponibile come modulo di flusso +- **PHP 8.2** disponibile come modulo di flusso +- **nginx 1.24** disponibile come modulo di flusso +- **MariaDB 10.11** disponibile come modulo di flusso +- **PostgreSQL 16** disponibile come modulo di flusso + +Le seguenti applicazioni sono state aggiornate: + +- **Git** aggiornato alla versione 2.43.0 +- **Git LFS** aggiornato alla versione 3.4.1 + +### Containers + +Per un elenco dettagliato delle modifiche in questa categoria, consultare il [link a monte qui].(https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/9/html/9.4_release_notes/new-features#new-features-containers). + +Le modifiche più importanti includono: + +- Il comando `podman build farm` per la creazione di immagini di container multi-architettura è disponibile come Anteprima di Tecnologia +- Podman ora supporta i moduli `containers.conf` per caricare un insieme predeterminato di configurazioni +- Il pacchetto Container Tools è stato aggiornato +- L'API RESTful di Podman v4.9 ora visualizza i dati di avanzamento quando si estrae o si spinge un'immagine nel registro +- SQLite è ora pienamente supportato come database predefinito per podman +- `Containerfile` supporta ora le istruzioni HereDoc multilinea +- `pasta` come nome di rete è ora deprecato +- Il backend del database BoltDB è ora deprecato +- Il modulo `container-tools:4.0` è ora deprecato +- Lo stack di rete Container Network Interface (CNI) è deprecato e sarà rimosso in una release futura + +### Compilatori e strumenti di sviluppo + +Per i dettagli sui cambiamenti in questa categoria [vedere il link a monte qui](https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/9/html/9.4_release_notes/new-features#new-features-compilers-and-development-tools) + +- Il set di strumenti LLVM è stato aggiornato alla versione 17.0 +- Rust Toolset aggiornato alla versione 1.75.0 +- Go Toolset è stato aggiornato alla versione 1.21.0 +- La directory delle risorse di Clang è stata spostata (da `usr/lib64/clang/17` a `usr/lib/clang/17`) +- `elfutils` aggiornato alla versione 0.190 +- `systemtap` aggiornato alla versione 5.0 +- Aggiornamento del set di strumenti GCC 13 +- `pcp` aggiornato alla versione 6.2.0 +- Nuovo pacchetto \`grafana-selinux +- Nuove microarchitetture di processori supportate in `papi` +- Nuovo pacchetto \`maven-openjdk21 +- Nuovo pacchetto `libzip-tools` +- `cmake` aggiornato alla versione 3.26 + +## Problemi noti + +Nella versione 9.4 sono presenti molti problemi noti, tra cui quelli relativi a: + +- Installazione e creazione di immagini +- Sicurezza +- Gestione del software +- Shell e strumenti a riga di comando +- Servizi Infrastrutturali +- Rete +- Kernel +- File system e archiviazione +- Linguaggi di programmazione dinamica, server web e database +- Gestione dell'identità +- Desktop +- Infrastrutture Grafiche +- Virtualizzazione +- Supportabilità +- Containers + +Per i dettagli completi su questi problemi, consultare il [upstream listing](https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/9/html/9.4_release_notes/known-issues). + +!!! info "Software Deprecato" + +``` +Alcuni flussi di applicazioni, che fanno parte dei repository Rocky Linux 9.4, non riceveranno ulteriori aggiornamenti. Attualmente si tratta di Node.js 16 (ritiro ad aprile 2024) e .NET 7 (ritiro a maggio 2024). Inoltre OpenJDK 11 raggiungerà il suo EoL per Rocky Linux 9 nell'ottobre 2024. Assicuratevi di utilizzare le versioni supportate (moduli Node.js 18 o 20, pacchetti .NET 6 o 8, pacchetti OpenJDK 1.8.0, 17 o 21) se desiderate ulteriori patch. +``` + +## Segnalazione di bug + +Si prega di segnalare qualsiasi bug riscontrato al [Rocky Linux Bug Tracker](https://bugs.rockylinux.org/). Vi invitiamo inoltre a unirvi alla nostra comunità in qualsiasi modo desideriate, che sia sui nostri [Forums](https://forums.rockylinux.org), [Mattermost](https://chat.rockylinux.org), [IRC on Libera.Chat](irc://irc.liberachat/rockylinux), [Reddit](https://reddit.com/r/rockylinux), [Mailing Lists](https://lists.resf.org), o in qualsiasi altro modo vogliate partecipare!