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 (TODO)
Da valutare:
- 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
- Logster (Python)
- Logstash (Ruby), componente di Elastic Search
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