Linux Administrator
Introduzione all'arte sistemistica
|
|
Sistemista Linux Oggi
Lavori in Linux
Dove esiste un sistema Linux serve un sistemista Linux.
Qualcuno in grado di gestire situazioni, configurazioni ed eventuali problemi.
I ruoli possono essere vari:
- Sistemisti in CED di ogni dimensione
- Installatori di sistemi con Linux
- Operatori di Help Desk
- Sviluppatori
- Tecnici tuttofare
Le aziende possono essere di qualsiasi tipo e dimensione.
Prospettive
Il numero dei sistemi Linux è in crescita e cresce l'esigenza di esperti qualificati.
Il numero di appassionati di Linux con alte competenze tecniche è relativamente elevato.
La passione rende piacevole il lavoro.
Non si può smettere di imparare.
Le conoscenze devono essere sia eterogenee (visione d'insieme) che specializzate.
Non esiste solo Linux: è bene conoscere reti, sicurezza e altri OS
Professionalità e autodidattica
- Linux piace ad autodidatti e smanettoni
- A volte si impara più dalla propria tastiera che a scuola o in un corso
- Essere completi autodidatti, però, può lasciar spazio a lacune e misconcezioni
- Nel mondo del lavoro si cercano criteri affidabili di valutazione degli skill (titoli di studio, certificazioni ma anche esperienze maturate sul campo)
- Quando le conoscenze sono diffuse la differenza viene fatta da professionalità e competenze: essere veloci ed efficaci diventa una necessità.
- Non si può sapere tutto, è utile avere qualcuno che possa fornire i riferimenti che fanno risparmiare tempo
Certificazioni Linux e OpenSource
- Red Hat (RHCT - RHCE - RHCA)
- Novell Certified Linux Engineer (CLE)
- LPI - Linux Professional Institute
- CompTIA Linux+ Certification
- Sair Linux/GNU
- MySQL Core e MySQL Professional
- Zend PHP Certified Engineer |
|
Problematiche di gestione e installazione di un server Linux
Installazione di Linux da CD/DVD
- Attività semplice, rapida, consolidata ormai d'uso comune fra tecnici IT
- Diverse distribuzioni, logica comune: Boot dal CD, scelta configurazione (lingua, tastiera, utenti, parametri di rete, software da installare, logiche di partizionamento...), installazione pacchetti su hard disk montato in locale.
Installazione automatizzata
- PXE: Boot kernel direttamente via rete (su NIC che lo supportano). Totalmente automatizzato.
- Kickstart e simili: Caricamento parametri di installazione via rete. Richiede CD/floppy di boot.
- Selezione installation source: Configurazione manuale, scaricamento dei pacchetti via rete. Richiede CD/floppy di boot e inserimento parametri.
- Strumenti per il provisioning centralizzato: Cobbler.
Aggiornamento
Imprescindibile, necessario, semplice.
- Automatico: Lasciar fare al proprio Linux in totale autonomia
- Semi Automatico: Scaricare i pacchetti e non installarli
- Manuale: Installare i pacchetti a mano.
- Manuale con compilazione: Fuori dalla logica dei pacchetti predefiniti. Si ricompila il proprio software secondo le proprie necessità
Hardening post installazione
- Aggiornamento software e decisione su policy di autoaggiornamento
- Rimozione dalla fase di avvio dei servizi non necessari
- Configurazione/tuning filtri iptables
- Configurazione servizi di produzione
- Verifica porte aperte, credenziali e logiche di accesso
- Implementazione di strumenti di monitoraggio e controllo custom
- Implementazione sistemi di intrusion detection
- Implementazione e test di Mandatory Access Control List
Gestione e configurazione centralizzata
- Su infrastrutture medio/grandi è ormai un requirement
- Gestire e configurare un parco server da un unico punto
- Configuration management con Puppet / CFEngine
- Gestione centralizzata con Puppet / Func / SSH
Monitoraggio e documentazione
- Un server non dovrebbe essere considerato in produzione fino a quando non viene correttamente monitorato
- Strumenti di Monitoraggio: Nagios (e progetti derivati), Cacti
- La documentazione è importante: deve essere rivolta a tecnici, contestuale e facile da gestire/aggiornare
- SCM come git, cvs, subversion e altri possono essere usati sulle configurazioni di un sistema (oltre che su codice software). |
|
Distribuzioni Linux: analogie e differenze
Le Distribuzioni Linux
- Una babele apparentemente inestricabile: + di 300 distro
- Le principali da cui derivano tutte le altre: Debian (129), Fedora (63), Knoppix (50), Slackware (28), Mandriva (14), RedHat Enterprise (13), Gentoo (12), Suse (5) .
- Hanno molto in comune e varie differenze: conoscerne i principi rende agevole l'orientamento
Elementi comuni nelle distribuzioni Linux
- Kernel Linux (versioni o patch diverse)
- Utility GNU: tutti i comandi Unix di base e altro
- I principali software utilizzati sono comuni
- File System Hierarchy comune (ma non sempre coerente)
- Linux Standard Base comune
- Unix is Unix's Kiss
Orientarsi fra le differenze
- Analizzare la fase di boot da init in poi: gli script, i file di configurazione
- Orientarsi con i pacchetti (deb, rpm, tgz...): conoscere comandi e sintassi per installare, gestire e interrogare un pacchetto
- Usare i tool di sistema (whereis, locate, find, apropos...) e la documentazione (man, info, docs locali, Internet)
- Sapere dove trovare i log del sistema (syslog) e i comandi per verificare cosa accade (ps, top...)
|
|
Troubleshooting: l'arte di risolvere problemi
Esperienza - La seconda volta che si trova un problema su cui si sono perse ore, lo si risolve in 1 minuto - La familiarità con il sistema (comandi, posizione dei file, log... ) rende veloce ogni attività - Più problemi si sono affrontati, più problemi si sanno affrontare - Si può imparare di più dalla propria tastiera, che da un testo scritto da altri (ma il giusto consiglio ci può far risparmiare ore)
Conoscenza - Molto si può scoprire, tutto si può studiare - La teoria è fondamentale: conoscere il sistema aiuta ad individuare la natura di un problema.
Metodo - Escludere in modo sistematico, dopo averle verificate, le diverse possibili cause del problema, senza dimenticare quelle più banali
- Predisporre adeguati strumenti di controllo (tail -f su log, sniffing di pacchetti, monitoraggio dei parametri coinvolti...) - Approfondire gli aspetti non noti, senza perdere il focus sulla soluzione
- Se si deve risolvere un problema di altri, farsi spiegare chiaramente cosa non funziona, come funzionava prima, quando ha smesso di funzionare, se questo è coinciso con qualche attività o evento conosciuto.
Fantasia - Fantasia e pensiero laterale aiutano a trovare la luce in fondo al tunnel - Lasciarsi guidare dall'istinto guidato da logica, consapevolezza e proprie conoscenze
- Lo spirito di osservazione (un nome, un indizio) agevola le deduzioni
Ricerca - Per risolvere bisogna sapere, per sapere si deve cercare - Il sistema parla (log, tool di analisi) e spiega (man, info, docs) - Su Internet probabilmente qualcuno ha descritto lo stesso problema - Cercare termini precisi: la stringa di un messaggio di errore (esclusi parametri propri del sistema locale), il nome di uno specifico argomento, attinente, di cui non si sa molto. - Chiedere con precisione, dare le informazioni che servono a chi deve rispondere: contesto, output di errori, generalità del sistema su cui si opera.
|
|
Microsoft e Linux: integrazione possibile?
Migrazione di server
Protocolli comuni permettono integrazione o migrazione trasparente lato server
- Prestare attenzione alla migrazione dei dati, degli account e dei privilegi di accesso
- Pianificare una migrazione con minor impatto possibile sui client
- Proxy, firewall, email e applicazioni web, in particolare, risultano fra le funzioni migrabili senza molti problemi di interoperabilità
Migrazione dei client
Più complessa, richiede educazione e collaborazione da parte degli utenti.
- Prevedere un pilot su un gruppo ristretto
- Valutare migrazione progressiva (Windows+MSOffice -> Windows+OpenOffice -> Linux+OpenOffice)
- Applicativi e gestionali basati su web rendono il passaggio più facile
- Centralizzare gestione, aggiornamento e monitoraggio dei client
- Usare distribuzioni e versioni uguali per tutti!
- Customizzare e semplificare il desktop
- Non lasciare privilegi di root agli utenti
Integrazione file e domini
- Samba: integrazione nei domini NT e active directory
Samba è un progetto maturo e ormai supporta pienamente domini NT.
Samba 3 non ha un supporto completo di Active Directory (può essere domain member ma non controller).
Samba 4 dovrebbe migliorare il supporto ADS.
Desktop e applicazioni remote
Diversi strumenti, che permettono uso di applicativi su macchine remote e sistemi diversi:
- Remote Desktop (esiste il client per Linux)
- VNC: universale ma non sempre performante. Non permette sessioni utente indipendenti
- XWindow (client e server su sistemi eterogenei).
- NX/FreeNX. Ottima e semplice alternativa a XWindow. Client universale, Server Unix/Linux.
- Tarantella. Soluzione commerciale consolidata e versatile.
- Citrix (Metaframe). Altra valida soluzione commerciale. |
|
Sysadmin 2.0 - Sistemisti oggi e domani
Nuovi Scenari in Server Farm
- Il mondo IT cambia velocemente. Molto è già cambiato
- Soluzioni di virtualizzazione sono pronte per la produzione
- I dati e il traffico da gestire aumentano costantemente
- Le soluzioni software si fanno più sofisticate e facilmente gestibili
- Il numero di host da installare/configurare/gestire crescono
Virtualizzazione
- Le tecnologie sono mature: Vmware, Xen, Virtual Box, KVM...
- Interi sistemi virtuali possono essere creati, rimossi, spostati velocemente
- E' più facile ricreare ambienti di test, pilot, simulazioni
- Nuovi scenari in termini di sicurezza, capacity planning, disaster recovery
Storage Area Networks
- Soluzioni SAN e NAS sono sempre più accessibili
- ISCSI permette l'uso di una convenzionale infrastruttura di rete ethernet
- DRBD permette di sincronizzare i dati su host comuni
- Storage condiviso a basso costo facilita la diffusione di cluster ad alta affidabilità
Provisioning e gestione centralizzata
- Necessità di installare sistemi (virtuali e fisici) rapidamente
- Necessità di gestire un parco macchine in espansione in modo coerente e centralizzato
- Necessità di poter riprodurre velocemente il setup di un sistema
- Soluzioni a basso costo (tempo e risorse) per gestire infrastrutture complesse:
-- Provisioning con Cobbler
-- Configuration Management con Puppet
Conclusioni:
Oggi, molto più di ieri, è possibile implementare infrastrutture Linux scalabili e ridondate a costi prima inimmaginabili.
E' possibile sfruttare gli scenari di virtualizzazione messi a disposizione dalle principali tecnologie sul mercato.
E' possibile installare, configurare, moninotrare e gestire una infrastruttura ampia e complessa con potenti strumenti centralizzati.
(Abbiamo ancora bisogno di mettere su a mano un server con il CD di installazione?) |
Attività da sistemista
Tipo Infobox: DESCRIPTION - Skill Level: 1- NOVICE - Autore: Alessandro 'al' Franceschi - Ultimo Aggiornamento: 2006-03-23 11:55:26
Spiegare cosa fa un sistemista non è sempre ovvio.
Definire quali sono i suoi compiti è quantomeno pretenzioso.
Inquadrare gli skill di cui ha bisogno è limitativo, visto che di fatto, in molte realtà, un sistemista deve poter gestire e configurare hardware e software eterogenei che richiedono conoscenze ed esperienza disparate.
Le attività sistemistiche su un server con qualsiasi sistema operativo variano a seconda delle funzioni della macchina e del contesto lavorativo.
Generalmente il sistemista si dovrebbe preoccupare di:
1- Partecipare a riunioni e fornire la propria opinione sulla definizione dell'infrastruttura informatica e la scelta e il dimensionamento dell'hardware da utilizzare;
2- Installare le macchine;
3- Eseguire le procedure di post-installazione standard (aggiornamento software, rimozione servizi inutili, hardening del sistema, installazione di script e procedure custom);
4- Installare, configurare e testare i servizi richiesti per la macchina;
5- Monitorare performance, sicurezza e funzionalità del sistema;
6- Assistere e assecondare le richieste dirette o indirette degli utenti del sistema (sviluppatori e utenti dei servizi);
7- Eseguire backup e ripristino dei dati;
8- Automatizzare varie procedure nel sistema;
8- Documentare approfonditamente il lavoro svolto.
Troppo spesso il sistemista:
1- Non viene interpellato per una consulenza sulle tecniche più adeguate per le esigenze richieste;
2- Racka, cabla, se necessario smonta e rimonta, e installa le macchine;
3- Non ha una procedura standard di post installazione a cui attenersi;
4- Installa e configura i servizi necessari per la macchina, non sempre li testa a dovere;
5- Non controlla quasi mai i log di sistema, non implementa procedure di controllo;
6- Asseconda gli utenti ma li odia;
7- A volte prevede il backup dei dati, raramente esegue test di recupero;
8- Ripete spesso i soliti comandi;
9- La migliore documentazione la mantiene in testa, il resto in qualche file sul proprio computer.
Generalmente il tutto si spiega e si tende a giustificare con la cronica mancanza di tempo, spesso basterebbe un po' di lucidità progettuale e lungimiranza per riuscire ad ottenere tutti i risultati e alla lunga risparmiare tempo.
- La documentazione è fondamentale: permette di mantenere memoria storica del funzionamento dei sistemi e mette in grado il sistemista di delegare a colleghi meno esperti o appena arrivati di svolgere correttamente il lavoro che dovrebbe svolgere da solo.
- La partecipazione alle decisioni tecniche va richiesta con la giusta insistenza. E se ci ritrova a dover eseguire lavori, imposti dall'altro e tecnicamente discutibili, è doveroso quantomeno esprimere il proprio dissenso e suggerire le alternative più adeguate.
- Nonostante il knowledge generalmente vasto e variegato che spesso un sistemista deve avere, il suo compito di fatto è oscuro ai molti e a volte considerato di importanza trascurabile. Di solito ci si accorge del contrario quando un sistema in produzione va down e qualcuno deve farlo tornare a a funzionare.
- L'utente che usa i servizi della macchina o lo sviluppatore che riempe i contenuti di un sito web, per quanto generalmente poco sensibili alle esigenze e condizioni del sistemista, NON può e NON deve essere considerato un nemico. Di fatto è il motivo per cui il sistemista lavora e, in ogni caso, non ce se ne può disfare. L'unico modo per conviverci al meglio è educarlo all'uso del sistema e capire cosa gli serve per ridurre problemi e tempi di implementazione.
- Per quanto possibile è sempre consigliabile mantenere hardware e software omogenei: hardware dello stesso fornitore e non eterogeneo riduce complicazioni e velcoizza la sostituzione di pezzi di ricambio. Sistemi allineati (stesso OS, stessa distribuzione, stessa versione) rendono più facile, comoda e rapida l'attività sistemistica: gli aggiornamenti di software e kernel possono essere più rapidi e viene ottimizzato il tempo per seguire le problematiche di sicurezza di un sistema operativo.
SOURCE: Linux Corso Base - Coresis - http://www.coresis.com/linux/corsobase/
SOURCE: La Vera Storia di Linux Torwalds - Articolo su Apogeo OpenPress - http://www.apogeonline.com/openpress/articoli/art_9.html
Guida minima alla scelta della distribuzione Linux
Tipo Infobox: TIPS - Skill Level: 1- NOVICE - Autore: Alessandro 'al' Franceschi - Ultimo Aggiornamento: 2006-03-24 12:43:11
Scegliere la distribuzione giusta fra le centinaia disponibili è impresa ardua, come lo è ottenere una risposta precisa da un "esperto di Linux".
Inevitabilmente, da bravo informatico, risponderebbe "dipende".
In genere, la migliore distribuzione da usare è quella che meglio si conosce e se si devono gestire diverse macchine è opportuno averle tutte con la stessa distribuzione e possibilmente versione, per facilità e rapidità di aggiornamente e manutenzione.
Qualunque sia la distro adottata è spesso consigliabile installarne l'ultima versione disponibile (contiene pacchetti e kernel più recenti) lasciando possibilmente passare almeno un mese dalla sua release per permettere il fixing dei bug e dei buchi di sicurezza più evidenti.
Fondamentale è comunque seguirne sul relativo sito le segnalazioni di aggiornamenti ("errata" o "patch"), possibilmente attivando sistemi di autoaggiornamento dei pacchetti.
Considerare che dopo l'installazione di una qualsiasi distribuzione, se si sta lavorando su un server che deve andare in produzione, sono auspicabili, consigliati e necessari una serie di interventi di post installazione:
- Aggiornamento di tutti i pacchetti per i quali esistono degli errata (nuove versioni che aggiornano bug o buchi di quelle rilasciata con il CDROM originale);
- Rimozione di tutti i servizi Internet non utilizzati;
- Eventuale aggiornamento del kernel;
- Configurazione dei servizi di produzione che si intende utilizzare;
- Implemementazione di script o configurazioni custom.
Nella scelta della distribuzione vanno valutati i seguenti aspetti e date risposte alle seguenti domande:
- In che contesto viene utilizzata?
Su un server, su un laptop, un dekstop... A seconda delle funzionalità richieste può essere adeguata una distribuzione piuttosto che un'altra.
Ci sono distribuzioni come Ubuntu, Mepis, Linspire, Xandros che sono particolarmente orientate al desktop e si differenziano per facilità di utilizzo o presenza di programmi per Internet e il multimedia in grado di soddisfare le tipiche esigenze di un poweruser.
Per un firewall esistono distribuzioni dedicate che possono risultare particolarmente comode e semplici da configurare.
Per un server è opportuno cercare distribuzioni con tempi di vita lunghi e in grado di riconoscere e supportare il proprio hardware.
- Che tempo di vita mi aspetto da questa installazione?
Un computer desktop può essere reinstallato in tempi relativamente brevi, quantomeno per rincorrere le nuove versioni di vari programmi comuni, un server può richiedere tempi di vita molto maggiori e questo influenza la scelta.
Un vizio comune a molte distribuzione sono i tempi di release estremamente rapidi, tali da rendere apparentemente obsoleta una versione dopo pochi mesi dal suo rilascio.
Questo vale in modo evidente con Fedora (una release indicativamente ogni 6 mesi, fine del supporto ufficiale di RedHat dopo 2 release) ma anche, in misura minore, per le versioni Personal/Professional di Mandriva, Suse e altre fra le distribuzioni principali.
Questa costante rincorsa è dovuta al tumultuoso e rapido sviluppo di software opensource e al fatto che difficilmente all'interno della stessa versione di una distribuzione viene fatto un "major upgrade" dei programmi forniti (per garantire la piena compatibilità e il funzionamento delle procedure di aggiornamento automatico del software (per bug e vulnerabilità di sicurezza)).
Fra le distribuzioni liberamente accessibili, Debian e in misura minore Slackware si distinguono per tempi di vita decisamente superiori. Debian, in particolare, ha un ramo "stable" particolarmente conservativo che ha tempi di vita molto lunghi a scapito di una certa obsolescenza del software fornito.
Se la necessità è di avere un sistema Linux per poche ore o alcuni giorni (per dimostrazioni, corsi, prove, test, ecc) le Live CD come Knoppix sono particolarmente indicate, in quanto non richiedono nemmeno l'installazione su hard disk.
- Quanto sono disposto a spendere per la licenza del mio Linux?
Le versioni commerciali delle distribuzioni Linux hanno tempi di vita e supporto generalmente maggiori e sono adatte ad ambienti in cui è prioritario avere garanzia di supporto duraturo rispetto ai costi di licenza.
RedHat, Suse/Novell, Mandriva forniscono tutte versioni "enterprise" a pagamento delle proprie distribuzione con tempi di supporto di vari anni e durata di vita del software molto superiori alle versioni liberamente distribuite dagli stessi produttori.
Nella analisi dei costi, ovviamente, vanno anche considerati il training del personale, la consulenza di esterni, i tempi di disservizio eventualmente dovuti a guasti o problemi, ecc.
- La distribuzione che voglio usare supporta l'hardware che ho a disposizione?
Per quanto il supporto hardware su Linux sia piuttosto avanzato esistono casi in cui va opportunamente verificato. In particolare non tutte le distribuzioni sono in grado di riconoscere immediatamente i device di un laptop (winmodem, scheda wireless connettori infrarossi ecc.) e, per sistemi di fascia medio/alta con controller scsi è schede di retei in gigabit è opportuno verificarne il supporto nella hardware compatibility list del produttore della distribuzione.