Il valore della certificazione per Linux OpenStack

RedHat Enterprise OpenStack Platform

RedHat Enterprise OpenStack Platform

Openstack è sempre più un punto di riferimento per chi intraprende un percorso di trasformazione del data center verso il mondo cloud. Mentre si parla di cloud oramai da anni, sono oltre la metà, sul totale delle aziende di media grandezza e con infrastruttura complessa, a non avere implementato il cloud computing se non in modo parziale o solo ricorrendo a risorse di cloud pubblico all’occorrenza. Nel tempo sta emergendo con chiarezza il bisogno di interoperabilità e di supporto aperto, a un livello superiore rispetto all’etereogeneità delle infrastrutture dei diversi vendor, tanto che l’84 percento delle aziende con progetti cloud decida di fare il deploying di OpenStack.

A fronte di questo grande interesse RedHat collabora in modo intenso con molti fornitori di soluzioni di gestione come BMC e HP i quali, come membri del Red Hat OpenStack Cloud Infrastructure Partner Network, hanno fornito informazioni, feedback e supporto per la creazione delle nuove certificazioni sulla piattaforma OpenStack.

RedHat introduce la certificazione Cloud Management per RedHat Enterprise Linux OpenStack come parte del Red Hat OpenStack Cloud Infrastructure Partner Network. Il progetto OpenStack, nato come sistema Iaas e piattaforma per il cloud computing open abilita l’interoperabilità tra le piattaforme cloud. RedHat propone un percorso formativo per consentire alle soluzioni di cloud management dei partner di interoperare e di gestire la piattaforma Red Hat Enterprise Linux OpenStack. I clienti certificati sulla piattaforma RedHat Enterprise Linux OpenStack sono in grado cosi’ di implementare soluzioni di management testate con la certezza che siano supportate congiuntamente da Red Hat e dalle aziende partecipanti.

I corsi prevedono diversi livelli d’interazione, potendo cosi trovare quello che piu’ si adatta ad ogni esigenza di tempo, soldi ed impegno da profondere, questo in quanto esistono in pratica queste categorie :

  • CL210 RedHat OpenStack Administrator (Corso in Aula)
  • CL210VT RedHat OpenStack Administrator (Virtual Training)
  • CL210R RedHat OpenStack Administrator-ROLE (e-learning) 

Per ogni altra informazione inerente ai corsi ed ai relativi esami vi rimando alla pagina ufficiale:
redhat.com_training_dates

 

Canonical ed il Cloud in scatola

The Ubuntu OrangeBox

The Ubuntu OrangeBox

Ubuntu mette il cloud in una scatola

Canonical avra’ anche fatto dietro front sulle infrastrutture “Cloud Remote”, cio’ non toglie che l’azienda continui ad essere impegnata nel pensare e programmare nuove tecnologie in tale campo. Canonical non rinuncia a tentare la strada del computing nelle nuvole. L’ultima creazione è un cluster chiavi-in-mano utile per creare e testare un cloud migrante. Tutto in salsa Ubuntu.

L’ultima novità in tal senso si chiama The Orange Box, un cluster x86portatile” che Canonical descrive come un modo facile e “a basso rischio” per installare un infrastruttura Cloud OpenStack in un contesto aziendale: magari per testare il gran balzo verso il cloud eterodiretto vero e proprio.
Il cluster The Orange Box contiene 10 nodi, ciascuno dei quali comprendenti una CPU quad-core Intel i5-3427U CPU (e GPU Intel HD4000 integrata), 16 gigabyte di RAM, 120GB di storage, NIC Gigabit Intel. La dotazione software include Ubuntu 14.04 LTS a 64-bit, MAAS (Metal As A Service) e JuJu. Il prezzo del nuovo gingillo cloud (13.000 dollari)garantisce ovviamente l’accesso al supporto avanzato Ubuntu per un anno, così come sono inclusi un case utile a trasportare il cluster in aereo (peso totale di 32 chilogrammi con accessori), monitor, mouse, tastiera e antenna WiFi.

Introduzione a CouchDB

couchDBCouchDB e’ un database documentale NoSQL disponibile con l’ampia licenza Apache.
Apache CouchDB e’ un moderno documentale richiamabile semplicemente con l’HTTP e che al tempo stesso offre le piu’ avanzate funzionalita’ di replicazione dati e di ricerca in parallelo (Map/Reduce).

CouchDB (acronimo di Cluster Of Unreliable Commodity Hardware) e’ uno dei piu’ diffusi DB documentali Web grazie alla sua velocita’, alla flessibilita, alla semplicita’ di utilizzo ed al… prezzo!

Installazione

Installare CouchDB e cURL (che serve per accedere) e’ facile su Linux (eg. RedHat, Fedora, CentOS, Scientific Linux, …):

yum install couchdb curl -y
oppure
sudo aptitude install couchdb curl
Ora bisogna far partire il server CouchDB con il comando couchdb. Per verificare se funziona tutto basta un comando:
# curl http://127.0.0.1:5984
{“couchdb”:”Welcome”,”uuid”:”fd91d8b7b77c7f6d75d5937326a95ad2″,”version”:”1.5.0″,”vendor”:{“version”:”14.04″,”name”:”Ubuntu”}}

CouchDB e’ disponibile per tutti i sistemi UNIX-based ed anche sulle piattaforme MS-Windows e Mac OS X. Installare le versioni precedenti di CouchDB non era cosi’ semplice: bisognava partire dall’installazione del linguaggio di programmazione Erlang e ricompilare…

Utilizzo

CouchDB e’ accessibile esclusivamente attraverso un HTTP-based RESTful API, cio’ significa che, anziche’ collegarsi al DB server utilizzando un’applicazione client per interagire con il sistema, basta utilizzare un software in grado di interagire con un HTTP server web per fare richieste. CouchDB che a sua volta eseguira’ le azioni nel database, restituendo una risposta appropriata quando finito.
Quindi e’ possibile gestire il database semplicemente visitando gli URL nel browser web oppure utilizzando gli strumenti da riga di comando come curl o, cosa piu’ importante, attraverso qualsiasi linguaggio di programmazione che supporta richieste HTTP.
L’implementazione dell’interfaccia REST (Representational Transfer State) su CouchDB e’ molto completa poiche’ non si limita al CRUD (CREATE, READ, UPDATE, DELETE) ma ogni operazione svolta su CouchDB e’ richiamabile con l’HTTP.

Futon

CouchDB possiede una sua interfaccia web molto user friendly, Futon, dalla quale e’ possibile eseguire qualsiasi operazione per la gestione di un database, come l’inserimento, la visualizzazione, la modifica e la cancellazione dei dati. Inoltre Futon contiene anche le principali funzionalita’ di amministrazione di un database, come le impostazioni di configurazione, la replicazione dei dati, definizione dei ruoli e privilegi e uno strumento di testing.
Per accedere all’interfaccia web basta collegarsi da browser a localhost:5984/_utils

cURL

Per i piu’ affezionati alla linea di comando (come me per esempio), si puo’ usare curl, un ottimo tool utile per trasferire dati da/a un server utilizzando vari protocolli, tra cui HTTP, HTTPS, FTP. Il modo per farlo e’ digitando:

curl <opzioni> <ip_host>:5984/<database>/<record>.

Da notare che nel URL viene specificata la porta 5984, e’ quella usata dal processo di couchdb.
Tra le opzioni piu’ importanti: -X per specificare il tipo di richiesta http: GET per richiedere dati, PUT e POST per modificare dati o DELETE per cancellare. Inoltre -d permette di specificare i dati da includere nella richiesta, ad esempio per modificare documenti nel database.
Esempi:

# Crea il database "libri"
curl -X PUT http://127.0.0.1:5984/libri

# Visualizza il contenuto di "libri" (all'inizio e' vuoto)
curl -X GET http://127.0.0.1:5984/libri

# Crea il documento con _id "lafineeilmioinizio" dentro il database "libri"
curl -X PUT http://127.0.0.1:5984/libri/lafineeilmioinizio \
 -d '{"titolo":"La fine e il mio inizio", "autore":"Tiziano Terzani", 
      "casa_editrice":"Longanesi", "prezzo":"18.60"}'

# NB: Tutte le volte che un documento viene modificato riceve un revision number
# Modifica un documento aggiungendo come allegato un'immagine
curl -X PUT http://127.0.0.1:5984/libri/lafineeilmioinizio/cover.jpg?rev=1-XXX \
 --data-binary @images/budda.jpg -H "Content-Type: image/jpg"

# Crea un documento hungergames copiando il contenuto da un altro documento
curl -X COPY http://127.0.0.1:5984/libri/lafineeilmioinizio -H "Destination: hungergames"

# Cancella il documento con _id "hungergames"
curl -X DELETE http://127.0.0.1:5984/libri/hungergames?rev=1-YYY 

# Effettua un caricamento massivo di documenti da file
curl -X POST http://127.0.0.1:5984/libri/_bulk_docs -H "Content-type: application/json" -d @biblio.json

# Visualizza tutto il contenuto del database "libri" e il dettaglio dei documenti presenti
curl -X GET http://127.0.0.1:5984/libri/_all_docs?include_docs=true

Architettura

CouchDB e’ un database document-oriented. Cio’ significa che a differenza dei piu’ tradizionali DBMS (Database Management System) relazionali come Oracle e PostgreSQL, i dati non vengono memorizzati in tabelle (o se volete, relazioni), ma in “documenti”.

Su un database relazionale le tabelle hanno una struttura rigida, sono composte da campi definiti prima della effettiva memorizzazione dei dati. Le tabelle vanno dichiarate con gli opportuni statement DDL, prima di essere utilizzate. Ogni tabella e’ composta da tuple (ovvero le righe della tabella o i record) che contengono i dati. La gestione dei dati si effettua con statement DML. I comandi DDL e DML della stragrande maggioranza dei DB relazionali sono in SQL. Ora dimentichiamoci tutto questo…

In CouchDB il concetto di relazione o di tabella non esiste, l’elemento fondamentale e’ il documento che contiene al suo interno tutti i dati relativi, organizzati in modo eterogeneo. Si possono aggiungere e modificare i campi anche dopo l’effettivo inserimento dei dati. In questo modo record appartenenti alla stessa categoria di informazioni possono avere campi diversi tra di loro. La chiave primaria dei database relazionali viene tradotta nel campo univoco _id di CouchDB, creato automaticamente dall’engine del DBMS (ma che e’ anche possibile indicare in modo esplicito.

Dal punto di vista del sistema operativo CouchDB si presenta come un unico processo beam.smp in ascolto sulla porta TCP 5984 (6984 se e’ abilitato l’HTTPS). In realta’ all’interno del processo operano diversi thread con compiti specifici.
I file utilizzati da CouchDB su Linux si trovano in /etc/couchdb, i file di database su /var/lib/couchdb, i log su /var/log/couchdb.

Consistenza dei dati e replicazione

CouchDB non utilizza alcun meccanismo di locking ma sfrutta l’MVCC (Multiversion Concurrency Control), ogni modifica di un oggetto ne crea una nuova versione. Le versioni precedenti non vengono cancellate. Se due modifiche vanno in conflitto poiche’ accedono allo stesso documento, la seconda riceve un errore in save. L’applicazione deve riprendere l’ultima versione del documento e rieseguire l’UPDATE.
L’isolamento e’ mantenuto solo a livello di un singolo documento, questa e’ una notevole semplificazione, rispetto alla complessa logica transazionale di altri database, ma consente l’ottimizzazione, la parallelizzazione e la distribuzione dei dati in modo semplice. A livello di accesso al file di dati ogni singola modifica ad un documento rispetta le proprieta ACID (Atomic Consistent Isolated Durable) con la serializzazione delle modifiche sui documenti e la scrittura sincrona sul disco.

Piu’ database CouchDB possono essere collegati tra loro in modo molto semplice. I database vengono aggiornati tra loro con una replicazione peer-to-peer incrementale implementata nativamente nell’engine. CouchDB permette una replicazione bidirezionale asincrona, utilizza un meccanismo automatico di risoluzione dei conflitti e fornisce una eventual consistency tra i database. Se i database sono ospitati su nodi differenti si ottiene con questo la distribuzione dei dati.
La replicazione di CouchDB puo’ essere utilizzata sia per sincronizzare database locali che per complesse configurazioni con sharding dei dati.

 

Wireshark Network Analyzer

wiresharkCos’e’ Wireshark 

E’ un network analyzer, tra i piu’ potenti, ossia e’ un software che permette l’analisi dei pacchetti che transitano in rete, con lo scopo di analizzarli e capire cosa sta succedendo sul nostro PC . E’ fornito di una serie di tool che rendono piu’ “dinamiche” l’analisi per poter cosi’ capire cosa c’e’ che non va nella nostra rete.

Wireshark ci permette di capire approfonditamente quali e quanti pacchetti ci sono in transito nella rete e tramite i molti tool a disposizione si potranno individuare i fenomeni che disturbano la nostra navigazione, permettendoci cosi’ anche di capire cosa fanno i computer vicino a noi.

Passato e futuro [ Ethereal & Wireshark] 

Ethereal e’ il nome originale di questo progetto ma la separazione tra gli sviluppatori originali ha contribuito alla nascita nel 2006 di Wireshark decretando poco dopo la fine del progetto Ethereal che attualmente non viene piu’ sviluppato.

Sniffer vs Network Analyzer 

Uno sniffer e’ un software che intercetta pacchetti transitanti in rete e li correla con il preciso intento di ricavarne dettagliate informazioni quali (password, dati , ed ogni sorta di credenziali…) [ dsniff, ettercap ].

Un network analyzer e’ un software che intercetta pacchetti in rete e li presenta all’operatore in una forma che possa facilitarne l’analisi (human-readable form) [ wireshark, tcpdump ].

Normal vs promiscuous 
Nel normal mode l’interfaccia di rete processa solo i pacchetti diretti a lei (modo di funzionamento standard).
In promiscuous mode l’interfaccia processa anche gli altri pacchetti (sniffa) e li passa al kernel,in pratica sniffer e network analyzer lavorano tutti in promiscuous mode.

Non e’ compito di questo articolo spiegare come adoperare Wireshark il quale, come spiegato, e’ un prodotto molto avanzato e ricco di tools; per fortuna internet e’ zeppa di documentazioni ufficiali e non che dettagliano al meglio le mille funzioni. Quello che spero e di aver destato in voi la voglia di essere piu’ curiosi possibile su cio’ che passa dal vostro PC, i mezzi per saperlo ci sono quindi siate curiosi e ricordatevi sempre che :
” il sapere e’ potere “.

DNS sempre funzionante

Premessa : Ogni volta che visitiamo un sito, il browser risolve il nome a dominio, ad esempio “miodominio.it” ,
in un IP come 1.2.3.4  . Tramite IP il browser potrà fare richiesta al server che ospita il dominio e
quindi scambiare contenuti. In genere queste richieste DNS vengono fatte al server del proprio ISP
o a server pubblici come Google DNS, OpenDNS… che fino ad ora non hanno ancora censurato
nessun dominio, forse eccetto per quelli dannosi che portano a malware.

C’era una volta BIND, probabilmente il piu’ noto software di gestione DNS al mondo, purtroppo segnato da un lungo elenco d’innumerevoli bug e con la gestione dei parametri del server DNS tramite file di testo, che può risultare scomodo e lento, quindi fortunatamente hanno messo al mondo “PowerDNS”.

PowerDNS è un server DNS scritto in C++ sotto licenza GPL. È un prodotto della società olandese PowerDNS.COM BV, con numerosi contributi da parte della comunità Open Source.

I principali punti di forza di PowerDNS sono:

  • Backend per svariati database quali ad esempio MySQL e PostgreSQL
  • Facilità di configurazione
  • Sicurezza
  • Versatilità

Prima di procedere con l’installazione è doveroso illustrare le parti che compongono questo software:

  1. pdns-server: il server DNS vero e proprio
  2. pdns-backend-*: il backend dove sono memorizzati i dati ad esempiopdns-backend-mysql utilizzerà MySQL per memorizzare i record DNS
  3. pdns-recursor: un server necessario se si devono risolvere altri domini Internet oltre a quelli gestiti dal server

Installiamo!

Come sempre facile e veloce:

sudo apt-get install pdns-server pdns-backend-mysql pdns-recursor mysql-server mysql-clients

** Durante l’installazione vi verra’ chiesto se avete gia creato il DB di riferimento oppure se volete crearlo seduta stante, a voi gestire la cosa come meglio credete ed in base al vostro livello di conoscenza in ambito database. Per coloro che fossero a digiuno sull’argomento ecco quello che andrebbe fatto :

Entriamo in MySQL Shell tramite root
# mysql -u root -p
– Creiamo il database:
>>  mysql> create database powerdns;
>>  mysql> exit;
– Creiamo un utente associato al database creato, per sicurezza, mai usare l’accesso root per
collegare software al database.
>>  mysql> GRANT ALL ON powerdns.* TO ‘powerdns’@’localhost’ IDENTIFIED BY ‘la-password’;
mysql> FLUSH PRIVILEGES;
mysql> exit;
– Importiamo le tabelle che vengono fornite da PowerDNS sul database creato:
>>  # mysql -h localhost -u nome-utente -p powerdns < /usr/share/doc/pdns-backend-mysql/mysql.sql
Adesso configuriamo alcune impostazioni del database di pdns:
# nano /etc/powerdns/pdns.d/pdns.local
gmysql-host=localhost
gmysql-port=3306
gmysql-dbname=powerdns
gmysql-user=powerdns
gmysql-password=mypassword
#gmysql-socket=

Riavviamo il server di PowerDNS
# /etc/init.d/pdns restart

PowerDNS puo avviarsi anche in Monitor Mode:
# /etc/init.d/pdns monitor

Ora vediamo se un dominio a caso (d6f5v4.it) si risolve nel nostro server locale:
# host http://www.d6f5v4.it 127.0.0.1
In teoria non dovrebbe risultare alcun record A poichè non è presente nel server locale. Non
abbiamo aggiungo nessun record nel database.. Facciamolo!
# mysql -h localhost -u username -p powerdns
mysql> INSERT INTO domains (name, type) values (‘d6f5v4.it’,’NATIVE’);