User Tools

Site Tools


sysadmin:automation

This is an old revision of the document!


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:

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 è 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

Sembra alquanto limitato in termini di compatibilita' di input (statsd) e output (graphite, ganglia)

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

sysadmin/automation.1421022001.txt.gz · Last modified: 2015/01/12 00:20 by kobe