Bash-Only Deployment

Post on 07-Jan-2017

4.016 views 0 download

Transcript of Bash-Only Deployment

Bash-Only Deployment

Andrea Francia

Introduzione

A cosa ci serve avere il deploy automatico?

chiedere al pubblico

Scrivere un sistema di orchestration

Perché non usare la Bash?

chiedere al pubblico

Perché usare la Bash?

è onnipresente(e anche preinstallata su tutti(*) i sistemi operativi)

non ha dipendenze (*)(continua a funzionare anche dopo che hai incasinato tutte le gemme

di ruby)

fa una cosa sola(la maggior parte delle persone la

usa senza aver mai aperto il manuale)

è stabile(è già fuori moda)

https://twitter.com/Dreamoid/status/436974284666179584

Cosa vediamo oggi?

• Poor Mans Testing (in Bash) • Idempotenza (in Bash) • Deployment (over SSH)

Poor Mans Testing

Cos'è il testing automatico?

Perché può essere utile in Bash?

Come si fa? (DEMO)

Idempotenza

Qual è il problema con il deploy non idempotenti?

chiedere al pubblico

Cosa vuol dire idempotenza?

chiedere al pubblico

Uno script di deploy è idempotente è come lavarsi le mani, la prima

volta che le lavi diventano pulite, la seconda restano pulite

mkdir cartella

Come risolvere il problema?

I quattro metodi per ottenere l’idempotenza

Metodo 1: la ruspa

Metodo 2: la sonda

Metodo 3: la sovrascrittura

Metodo 4: l’opzione segreta (aka: Usare comandi già idempotenti)

“Metodo” 5(*): la finta

• (*) C’è un motivo perché questo è il 5^ metodo di quattro. Non a caso si chiama “la finta”!.

Esempi con apt-get

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

Esempi con i symlinks

Una soluzione

Altra soluzione

Qual è la soluzione migliore?

Alcuni comandi sono già idempotenti di natura

• chown -R qmaill:root /var/log/qmail

• chmod -R 750 /var/log/qmail

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.

Deployment con Bash+SSH

Deployment o Provisioning?

chiedere al pubblico

Cosa intendo io con Deployment

Quali sono i problemi da risolvere?

Come lo faccio io? (DEMO)

Recap

Cosa abbiamo visto?

• Testing in Bash

• Idempotenza in Bash

• Deployment con solo SSH+Bash

Prossime puntate?

• Roundtrip code deploy using git over SSH

• Fully automated package installation

• Test Driven Development in Bash

• … altro?

http://andreafrancia.it/devops.html

Conclusioni

• La Bash è stupida (… o è semplice?)

• La Bash è vecchia (… è matura?)

• La Bash è brutta (… o tiene lontano i cacciatori di medaglie?)

Q/A@andreafrancia

devops@andreafrancia.it +39 3209437233