Gestisci uno o centinaia di server?
Hai intenzione di mettere in produzione il tuo primo progetto con Django?
Diventi matto ogni volta che devi fare una modifica ad un server in produzione?
Ti è stato appena assegnato il progetto di un programmatore che ha appena lasciato l'azienda, e hai appena scoperto che quello che c'è sul server di produzione è diverso da quello che c'è scritto nella wiki aziendale?
Allora... questo talk fa per te.
Il deployment è un passo fondamentale di qualsiasi progetto. Purtroppo può diventare un'operazione ripetitiva, complicata e rischiosa.
Questo talk sarà un'introduzione su come ottenere installazioni ripetibili e automatizzate di Django utilizzando Salt, un software Open Source scritto in Python
3. DELOYMENT RIPETIBILIDELOYMENT RIPETIBILI
E AUTOMATIZZATIE AUTOMATIZZATI
Il deployment dovrebbe
essere un'operazione:
● Ripetibile
● Semplice
● Trasparente
● Sicura
(disaster recovery)
● Veloce
● Di routine
4. PERCHE SALT?PERCHE SALT?
● SEMPLICITÀ
● ESECUZIONE PARALLELA
● SICUREZZA
Autenticazione a chiave pubblica + crittografia AES (più veloce);
Sono parte integrante di Salt.
● È PYTHON
● VELOCE, FLESSIBILE, SCALABILE
● APERTO
Licenza Apache 2.0
● DOCUMENTAZIONE
metrica: transifex: 19.2K strings
● COMUNITÀ
● SUPPORTO COMMERCIALE
5. SALT IN BREVE 1/2SALT IN BREVE 1/2
un sistema distribuito per eseguire comandi
e per ottenere informazioni su nodi remoti,
singolarmente o in base a criteri di selezione arbitrari.
sudo salt '*' pkg.install openssl refresh=True;
sudo salt '*' service.restart nginx;
● http://www.saltstack.com/salt-blog/2014/4/11/some-salt-for-that-heartbleed
● http://docs.saltstack.com/en/latest/ref/modules/all/salt.modules.service.html
● http://docs.saltstack.com/en/latest/ref/modules/all/salt.modules.aptpkg.html
8. SALT IN BREVE 2/2SALT IN BREVE 2/2
un sistema di gestione della configurazione, in grado di
mantenere nodi remoti in stati definiti
(ad esempio facendo in modo che specifici packages
siano installati e servizi specifici siano in esecuzione)
sudo salt 'django_project' state.highstate
9. MasterMaster
Un demone centrale dal quale possono essere
lanciati i comandi ai vari minion in ascolto.
MinionMinion
Un server su cui gira un demone che ascolta i
comandi del Master ed esegue i compiti richiesti.
10. STATESTATE
Uno struttura di dati definita da un ID univoco.Uno struttura di dati definita da un ID univoco.
Descrive uno o più stati del sistema.Descrive uno o più stati del sistema.
Per esempio: assicurare che un utente o una directory sianoPer esempio: assicurare che un utente o una directory siano
presenti, che una libreria sia installata, che un servizio sia attivo.presenti, che una libreria sia installata, che un servizio sia attivo.
Il cuore del sistema di Stati di Salt è l'SLS (SaLt State file)Il cuore del sistema di Stati di Salt è l'SLS (SaLt State file)
L'SLS è una rappresentazione di uno stato desiderato del sistema.L'SLS è una rappresentazione di uno stato desiderato del sistema.
Contiene dati in un semplice formato (YAML).Contiene dati in un semplice formato (YAML).
In realtà I file SLS sono semplicemente dizionari, liste, stringhe,In realtà I file SLS sono semplicemente dizionari, liste, stringhe,
numeri.numeri.
11. ALBERO DEGLI STATIALBERO DEGLI STATI
in cui sono memorizzati i file SLS che compongono i possibili stati
dei minion.
base:
'django_project':
requirements.essentials
django_project.django_project
'pippo*':
users
requirements.essentials
nginx
'pippouno':
projects.pippo_uno
'pippodue':
projects.pippo_due
13. PILLARPILLAR
Una coppia key-value da utilizzare per dati definiti
dall'utente da rendere accessibili al minion.
Sono spesso usati per salvare e distribuire dati
sensibili ai minion.
I pillar sono strutture ad albero di dati definiti sul
Salt master e passati al minion. Essi consentono
di passare dati confidenziali e/o specifici solo al
minion rilevante..