Gestire infrastrutture in cloud con la semplicità di scrivere file di configurazione. Tutto ciò grazie a Terraform, soluzione Open Source per gestire infrastrutture cloud indipendentemente dal Cloud.
2. • Management
• Team Leader
• Quality Manager
• Web Architect
• Healthcare IT Consultant
• UX Expert
General O.S.
• PHP
• Javascript
• ASP
• MySQL HTML, CSS3
• Ruby, Rails
• Python
Developer
• Ubuntu, CentOS
• Mac OSX
• Windows
• IOS - Android
• Embedded OS
• Raspai, Pidora
2
Classe 1971- Cresciuto tra coin up, Super Santos e libri, nell’estate del
1986 mi regalano un COMMODORE 64 che cambia la mia vita.
Un Nerd prestato all’imprenditoria
4. Obiettivo di oggi (cosa useremo)
Security
Application
Storage
Procedures
Template
Cloud Infrastructure
Script
Network
HCL (HashiCorp Configuration Language)
5. Cosa si intende per "Infrastructure as Code"
Introduzione a Terraform
Collaborazione e sicurezza
Best Praties in IaC
Argomenti trattati
I Servizi Cloud
AWS
6. 01.
VELOCITA’
il processo di implementazione avviene in
maniera più rapida rispetto al modo tradizionale
02.
RIUSO: tramite il codicesi possono realizzare moduli
ri-utilizzabili in prodotti, indipendentemente
dall'ambiente.
03.
SELF SERVICE: può essere automatizzato l'intero
processo di distribuzione delle applicazioni.
04.
SICUREZZA: essendo un processo automatizzato non è
soggetto a errori manuali.
05.
FACILE: accesso ai dati dell'infrastruttura: lo stato
dell'infrastruttura è rappresentato in file sorgente che
chiunque può leggere.
06.
CONTROLLO DELLA VERSIONE: i file sorgente IaC archiviati
in un CVS (Control Version System) semplificano il debug de
problemi perché la cronologia è sempre disponibile.
07.
VSLIDAZIONE: ogni modifica sui file sorgente IaC può
essere revisionata dal codice tramite test automatizzati
Perche utilizzare IaC
7. Il FERRO
In un primo momento i server erano presenti e manutenuti all'interno
di CED aziendali. L’ HW veniva cambiato dopo tanto tempo ed era
difficile chiedere modifiche a livello di SO o di librerie e spesso
risultava installato vecchio software non più utilizzato.
LA VIRTUALIZZAZION
E
L'utilizzo di Server Virtuali, ha spostato in maniera significativa la
gestione dei server da chi gestiva HW a figure più vicine allo
sviluppo con la nascita anche di una nuova figura denominata
devops. Nell’ultimo periodo l’avvento dei container ha dato una
ulteriore spinta.
Da dove veniamo
8. Amazon Web Service (AWS)
Lanciato nel 2008
Lanciato nel 2002
Lanciato nel 2008
Avvento del cloud
Amazon Web Services (AWS) è la
piattaforma cloud più completa e
utilizzata del mondo, offre più di 175
servizi completi da data center a livello
globale. Milioni di clienti, incluse le start-
up in più rapida crescita, le più grandi
aziende e le agenzie governative leader
di settore, utilizzano AWS per diminuire i
costi, diventare più agili e innovarsi in
modo più rapido
9. Nel 2003, Benjamin Black entrò in Amazon come professionista
per la creazione di una applicazione Web che coordinasse il
team degli ingegneri, Chris Pinkham, chiese a Black di
individuare come l’infrastruttura di Amazon potesse scalare con
maggiore flessibilità. Black e Pinkham iniziarono a esplorare le
opportunità offerte dalle tecnologie di virtualizzazione di
disaccoppiamento delle infrastrutture hardware dal software.
Resosi conto del valore dell’idea crearono un report per Bezos,
che permise la sperimentazione, Pinkham costituì un team di
professionisti con lo specifico intento di contribuire alla nascita
di EC2 (Elastic Compute Cloud), che sarebbe stato da lì a poco il
primo servizio della gamma AWS rilasciato nel 2006.
Come nasce AWS
10. I servizi di AWS
Per utilizzare AWS basta registrasi sul sito collegando una carta di credito valida ed effettuare il login per operare
sulla propria console.
12. GEOGRAFICAMENTE
Ogni regione copre un‘area
geograficamente distinta
SISTEMATICAMENTE
A livello di sistema ogni
regione e a se stante
LEGALMENTE
Norme dell’area geografica
Una “regione” è una parte dell'infrastruttura globale di
AWS. Ogni regione è isolata ma collegata a una rete AWS
privata globale ad alta velocità e larghezza di banda
elevata grazie al quale è possibile l'esecuzione di sevizi
su più regioni. La maggior parte dei servizi AWS viene
gestita su una regione infatti quando si crea una risorsa in
una regione questa non esiste nelle altre regioni, tranne
in alcuni casi dove i servizi AWS sono "globali" come IAM
(gestione identità ed accessi), S3 (Storage di AWS)
CloudFront (CDN di AWS).
Caratteristica di una regione AWS
13. Cosa c’è in una Availability Zone (AZ)
Uno o più data
center
Collegamento
di rete ad alta
velocità e
essa latenza
Proprio
sistema di
alimentazione
Suite servizi
AWS
Una zona di disponibilità AWS (AZ) è una sezione di una regione AWS. Ogni regione ha
diverse zone di disponibilità ( a seconda della regione); un AZ è un edificio fisicamente
indipendente con una propria alimentazione e connettività di rete. Le zone di disponibilità
all'interno di una regione sono generalmente separate da diversi chilometri e collegate tra
loro con connessioni di rete a larghezza di banda estremamente elevata.
Availability Zone
14. Diversi servizi AWS se configurati opportunamente possono utilizzare più AZ, servizi che vengono considerati
a disponibilità elevata; infatti anche se un AZ (datacenter completo) non funzionasse, il servizio
continuerebbe a funzionare con interruzioni minime.
Per utilizzare servizi in multiAZ ci sono tre possibile modi:
•Non fare nulla (alcuni servizi sono “multiAZ” out of the box
•Semplicemente mettere un check (“Check the box”)
•Creare un minimo di configurazione UNA REGIONE CON DUE AZ
Multi AZ (Availability Zone)
15. Edge Location (Point of Presence AWS)
Per permettere la distribuzione di contenuti agli utenti finali con una bassa latenza, Amazon CloudFront
impiega una rete globale di oltre 220 punti di presenza (oltre 210 edge location e 12 cache edge
regionali) in 45 paesi e 88 città. Le edge location di Amazon CloudFront si trovano nelle seguenti località:
16. Cosa è una VPC
Virtuale: tutti i servizi sono virtuali
Privata: appartiene a chi la crea
Cloud: esiste sono nel cloud amazon
Una VPC è una tua rete virtuale, pubblica e privata in
una regione di AWS.
Virtual Private Cloud
17. Cosa si intende per IaC
IaC è il processo di gestione e provisioning dei data center tramite file di definizione leggibili dalla
macchina, piuttosto che configurazione hardware fisica o strumenti di configurazione interattivi.
In parole semplici, l'utilizzo di IaC permette di sostituire lo sforzo richiesto per gestire ed effettuare
operazioni di provisioning delle risorse IT (VM, Rete, Storage etc) con semplici righe di codice. In pochi
minuti è possibile definire, costruire e distribuire ambienti. I file IaC sono facilmente leggibili, portabili e
permettono algli amministraioni di ottenere facilmente documentazione.
18. Vantaggi IaC
Velocità: il processo di implementazione avviene in maniera più rapida rispetto al modo
tradizionale
Riuso: tramite il codice si possono realizzare moduli ri-utilizzabili in progetti divesi, indipe
dall'ambiente.
Self-service: può essere automatizzato l'intero processo di distribuzione delle applicazio
Sicurezza: essendo un processo automatizzato non è soggetto a errori manuali.
Facile accesso ai dati dell'infrastruttura: lo stato dell'infrastruttura è rappresentato in fi
facilmente leggibile
Controllo della versione: i file sorgente archiviati in un CVS semplificano il debug dei
problemi perché la cronologia è sempre disponibile.
Validazione: ogni modifica sui file sorgente può essere revisionata tramite test
automatizzati e strumenti di analisi statica.
19. Comparazione di strumenti per IaC
ANSIBLE TERRAFORM CHEF PUPPET SALTSTACK
Cod
e
Open Source Open Source Open Source Open Source Open Source
Clou
d
All All All All All
Type
Config Mgnt Orchestration Config Mgnt Config Mgnt Config Mgnt
Infrastrutture
Mutable Immutable Mutable Mutable Mutable
Language
Procedural Declarative Procedural Declarative Declarative
Architecture
Client Only Client Only Client/Server Client/Server Client/Server
20. Open Source
Terraform è uno strumento open
source per scrivere codice e
generare un'infrastruttura.
Cloud Neutral
Terraform è "cloud neutral", il che
significa che le API che fornisce
non vincolano l'utente a un
particolare provider cloud.
Linguaggio HCL
Linguaggio di configurazione
strutturato leggibile dall'uomo e
dalla macchina tramite linea di
comando.
Multipiattaforma
Presente per diversi Sistemi
Operativi
Terraform
21. Iniziare con
Terraform
Iniziare con Terraform
E’ possibile il download dell’installar per diversi
sistemi operativi nella pagina Download di Terraform.
Per autenticare Terraform sull’ account AWS, bisogna
impostare le credenziali AWS per l'utente IAM.
Terraform Cloud è attualmente gratuito per un
massimo di 5 utenti e viene fatturato mensilmente
per i team superiori a 5
Installazione di Terraform
22. Terraform ha un proprio linguaggio di configurazione,
Hashicorp Configuration Language (HCL), che serve
principalmente per dichiarare le risorse.
HCL è dichiarativo, nel senso che si usa per descrivere
l'infrastruttura desiderata e Terraform creerà ciò che stato
richiesto nel codice
L'insieme di file utilizzati per descrivere l'infrastruttura in
Terraform è indicato come configurazione Terraform
I file di configurazione di Terraform sono denominati con
l'estensione del file .tf. Una variante basata su JSON utilizza
l'estensione .tf.json
Una configurazione Terraform può essere semplice come
un singolo modulo radice (cartella) contenente un file .tf.
Il linguaggio Terraform
23. La nostra prima istanza EC2
Codice Terraform che useremo in main.tf.
24. Utilizzo di Terraform per creare un'istanza EC2
1. Visualizzare l’infrastruttura AWS
2. Individuare la directory contenente i tuoi file terraform
3. Inizializzare la directory con terraform init
4. Visualizza il piano esecutivo Terraform con terraform plan
5. Applica il piano di esecuzione Terraform con terraform apply
6. Controllo dell'infrastruttura con la nuova istanza EC2
7. Eliminiamo l’istanza con il comando terraform destroy
Sequenza comandi
25.
26. File variable.tf
Le variabili Terraform sono comunemente
memorizzate in un file variable.tf o .tfvars
in una configurazione Terraform
Variabili di input
Le variabili di input sono utilizzate per
rendere codice configurabile.
Variabili di output
Le variabili di output emettono o
stampano un'espressione da Terraform.
Variabili in Terraform
27. Il file di stato Terraform, terraform.tfstate, è il modo in cui Terraform tiene traccia degli elementi della
infrastruttura di cui è responsabile. Il file di stato consente a Terraform di trovare le risorse che ha creato o
aggiornato in precedenza e di procedere all'esecuzione dell'istruzione corrente.
terraform.tfstate è un file JSON che mappa le istruzioni nei file di configurazione alla risorsa effettiva nel
mondo reale e mantiene tutti i metadati sulla risorsa in modo che possa tenere traccia del suo stato.
Invece di usare il controllo della versione per il file terraform.tfstate, la best practice di terraform è usare
un backend remoto per archiviare il file come S3
Utilizzo di AWS S3
Usando AWS, la soluzione migliore è utilizzare AWS S3 come backend remoto.
AWS S3 è praticamente impossibile perdere i file grazie alle sue
AWS S3 supporta la crittografia (anche in transito) e supporta il versioning,
Memorizzare un file terraform.tfstate in S3 costapochissimo.
File di stato in Terraform
28. I moduli sono pacchetti autonomi di
configurazioni Terraform gestiti come gruppo
e assicurano che le configurazioni negli
ambienti del ciclo di vita siano le stesse.
I moduli Terraform astraggono le descrizioni
della infrastruttura descrivendola come
architettura e non come oggetti reali.
I moduli Terraform sono un insieme di file di
configurazione all’interno di una cartella
Terravision.
Moduli in Terraform
https://registry.terraform.io/
I moduli Terraform possono essere
creati e condivisi tra gli utenti Terraform
su Terraform Registry o in registri privati.
L'utilizzo di moduli predefiniti è un buon
modo per iniziare.
29. LICENSE contiene le informazioni della licenza d'uso con cui il
modulo sarà distribuito,. Non è usato da Terraform.
README.md contiene la documentazione in formato markdown
per descrivere come utilizzare il modulo, Non è usato da
Terraform.
main.tf contiene il set di informazioni principali di configurazzione.
variables.tf contiene la definizioni delle variabili per il modulo.
Quando il modulo sarà utilizzato da altri utenti le variabili saranno
configurate come argomenti nel blocco del modulo.
outputs.tf contiene la definizione dei valori di output del modulo.
Cosa c’è in un modulo
30. Le migliori pratiche sono soggettive e ciò che funziona meglio per un'azienda non funzionerà per un'altra.
Queste pratiche generalmente ti terranno consapevole della potenza di Terraform e dei rischi e dei benefici
dell'esecuzione dell'infrastruttura come codice
Best Practices in terraform
Terraform non è la risposta per ogni
azienda. Il rischio di usarlo in modo
improprio è troppo grande. Quindi
bisogna usarlo coscientemente
L'implementazione di Terraform
dovrebbe essere eseguita in
modo incrementale con tutti i
membri del team
Terraform ha le migliori possibilità
di successo a quando è usato per
affrontare un punto debole
specifico
E’ possibile utilizzare i file di
Terraform come documentazione
“live” nei progetti. In questa maniera
si ha un punto di incontro tra
documentazione ed esecuzione