1ring: Automating Ops

L'obiettivo e' di passare da un approccio artigianale nell'amministrazione di tutti i server gestiti da beFair ad uno piu' industriale, ovvero automatizzando tutta una serie di operazioni tra cui:

deploy e monitoraggio delle applicazioni

monitoraggio dei processi principali (attivi e disattivi)

monitoraggio delle risorse hardware (CPU load, RAM, Swap, disco..)

assicurarsi che tutti i server siano sempre accessibili via SSH

test sugli URL e redirect (verifica ritorno status code 200/30x su richieste HTTP)

inviare notifiche a sysadmin-alert@befair.it nel caso di errori o superamento di alcune soglie

I luoghi di riferimento di questo progetto sono:

questa stessa pagina wiki

l'alias sysadmin@befair.it

gli alert arrivano all'alias sysadmin-alert@befair.it

Repository Git

Il master (befair2) dispone di un repository Git in /root/1ring contenente del codice per Ansible, strutturato a partire dalle buone pratiche consigliate. In breve:

doc/ documentazione
inventories/ info su tutti gli host e gruppi di host
group_vars/ dati sui gruppi di host
group_files/ file ricorrenti tra piu' host, come le chiavi SSH
host_vars/ dati per ogni singolo host
host_files/ file specifici per host
prod.ini inventario con tutti gli host e i gruppi
dev.ini inventario per i test
playbooks/ script da lanciare, applica 1+ role ad 1+ host
jobs_high.yml script per i task ad alta priorita' (ogni 10 minuti)
jobs_low.yml script per i task giornalieri
roles/ contiene i role, cioe' i "pacchetti" di Ansible
secrets/ contiene l'archivio keepassx ed eventualmente altri file cifrati
utils/ script di varia utilita'
ansible.cfg file principale di configurazione
README.rst guida per installare/configurare Ansible

Nota: per info sui nostri role tutti i dettagli qui

FAQ

Alcune FAQ su dove trovare cosa:

archivio keepassx? secrets/befair.kdb

chiavi SSH? inventories/group_files/all/ssh/id_*.pub

info sulle installazioni di Gasista Felice? inventories/host_vars/befair2.yml → gf_flavours

messaggio motd per host befair0? inventories/host_vars/befair0.yml → motd

demoni/processi per host spes_hosting? inventories/host_vars/spes_hosting.yml

limite swap su tutti i server spes? inventories/group_vars/spes.yml → swap_perc_limit

info per accedere via SSH ai server? inventories/group_vars/staff.yml → hosts

ci sono variabili globali? inventories/group_vars/all.yml

Il repository Git disponde di 2 branch:

master: branch di sviluppo dove pushiamo direttamente le modifiche (dopo aver fatto pull + rebase)

prod: branch di checkout, attivo sul server che verra' usato

L'idea e' fare periodicamente il rebase del branch prod con il master.

E' possibile clonarsi il repository in locale con:

$ git clone root@befair2.internal.befair.it:1ring

Monitoraggio delle risorse

Sezione spostata qui.

Monitoraggio dei log

Work In Progress!!

Ecco i progetti identificati finora:

Sentry (Python)

Sentry è adatto per ricevere errori ed eccezioni, purtroppo non si presta molto bene a ricevere una serie di log temporali che devono essere poi in seguito aggregati ed analizzati.

Heka (Go), sviluppato da Mozilla

Intro ed esportazione per Librato

Backups

In una condizione ideale, le directory “stateful” da salvare in fase di migrazione di un server dovrebbero essere solamente queste:

/root

/home

/var in generale

/var/backups

Tutto il resto infatti dovrebbe essere rigenerato automaticamente dai playbook di Ansible.

TODO:

prendere i vari scripts in /usr/local/bin e metterli in 1ring

Approfondimenti

comparativa principali sw automazione: A B

visita la sezione dedicata alla ricerca di nuove soluzioni

come reagire automaticamente ad eventuali problemi? Runbook