Successfully reported this slideshow.
Your SlideShare is downloading. ×

Bash-Only Deployment

Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Upcoming SlideShare
Build Automation Tips
Build Automation Tips
Loading in …3
×

Check these out next

1 of 49 Ad

More Related Content

Similar to Bash-Only Deployment (20)

Advertisement

More from Andrea Francia (20)

Recently uploaded (20)

Advertisement

Bash-Only Deployment

  1. 1. Bash-Only Deployment Andrea Francia
  2. 2. Introduzione
  3. 3. A cosa ci serve avere il deploy automatico? chiedere al pubblico
  4. 4. Scrivere un sistema di orchestration
  5. 5. Perché non usare la Bash? chiedere al pubblico
  6. 6. Perché usare la Bash?
  7. 7. è onnipresente (e anche preinstallata su tutti(*) i sistemi operativi)
  8. 8. non ha dipendenze (*) (continua a funzionare anche dopo che hai incasinato tutte le gemme di ruby)
  9. 9. fa una cosa sola (la maggior parte delle persone la usa senza aver mai aperto il manuale)
  10. 10. è stabile (è già fuori moda) https://twitter.com/Dreamoid/status/436974284666179584
  11. 11. Cosa vediamo oggi? • Poor Mans Testing (in Bash) • Idempotenza (in Bash) • Deployment (over SSH)
  12. 12. Poor Mans Testing
  13. 13. Cos'è il testing automatico?
  14. 14. Perché può essere utile in Bash?
  15. 15. Come si fa? (DEMO)
  16. 16. Idempotenza
  17. 17. Qual è il problema con il deploy non idempotenti? chiedere al pubblico
  18. 18. Cosa vuol dire idempotenza? chiedere al pubblico
  19. 19. Uno script di deploy è idempotente è come lavarsi le mani, la prima volta che le lavi diventano pulite, la seconda restano pulite
  20. 20. mkdir cartella
  21. 21. Come risolvere il problema?
  22. 22. I quattro metodi per ottenere l’idempotenza
  23. 23. Metodo 1: la ruspa
  24. 24. Metodo 2: la sonda
  25. 25. Metodo 3: la sovrascrittura
  26. 26. Metodo 4: l’opzione segreta (aka: Usare comandi già idempotenti)
  27. 27. “Metodo” 5(*): la finta • (*) C’è un motivo perché questo è il 5^ metodo di quattro. Non a caso si chiama “la finta”!.
  28. 28. Esempi con apt-get
  29. 29. Altri esempi con apt-get • unzip -h > /dev/null || sudo apt-get install unzip -y • git --help > /dev/null || sudo apt-get install git -y • nginx -v || sudo apt-get install nginx -y
  30. 30. Esempi con i symlinks
  31. 31. Una soluzione
  32. 32. Altra soluzione
  33. 33. Qual è la soluzione migliore?
  34. 34. Alcuni comandi sono già idempotenti di natura • chown -R qmaill:root /var/log/qmail • chmod -R 750 /var/log/qmail
  35. 35. Approfondimenti • Aggiungere una riga al file hosts in modo idempotente (vedi file idempotenza-file-hosts.txt) • Creare un repository Git in modo idempotente (vedi file idempotenza-git-repo.txt) • Creare utenti in modo idempotenti.
  36. 36. Deployment con Bash+SSH
  37. 37. Deployment o Provisioning? chiedere al pubblico
  38. 38. Cosa intendo io con Deployment
  39. 39. Quali sono i problemi da risolvere?
  40. 40. Come lo faccio io? (DEMO)
  41. 41. Recap
  42. 42. Cosa abbiamo visto? • Testing in Bash • Idempotenza in Bash • Deployment con solo SSH+Bash
  43. 43. Prossime puntate? • Roundtrip code deploy using git over SSH • Fully automated package installation • Test Driven Development in Bash • … altro? http://andreafrancia.it/devops.html
  44. 44. Conclusioni • La Bash è stupida (… o è semplice?) • La Bash è vecchia (… è matura?) • La Bash è brutta (… o tiene lontano i cacciatori di medaglie?)
  45. 45. Q/A @andreafrancia devops@andreafrancia.it +39 3209437233

×