This is an old revision of the document!
Table of Contents
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:
- 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.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
- Logster (Python)
Sembra alquanto limitato in termini di compatibilita' di input (statsd) e output (graphite, ganglia)
- Logstash (Ruby/Java), componente di Elastic Search
Probabilmente tra questi il piu' completo per analisi dei log, anche se introduce uno stack del tutto nuovo. Elastic Search infatti e' un set di tool quali:
- Elastic Search, backend per archiviare e fare analisi (Java)
- Kibana, frontend web (Grafana e' un fork di Kibana)
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
- come reagire automaticamente ad eventuali problemi? Runbook