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.

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.1421020422.txt.gz · Last modified: 2015/01/11 23:53 by kobe