Invece di fare un semplice lista di tutti i pacchetti installati perchè non automatizzare il tutto con Ansible?
Solitamente questa procedura è utile per l’installazione di centinaia di servers contemporaneamente, ma (tralasciando il fatto che non conosco molte aziende che potrebbero averne bisogno) è anche un buon modo per tenere traccia di cio’ che si è fatto e riprodurlo.
il file è scritto il yaml. Ansible come Puppet e Chef da la possibilità di creare automaticamente anche file di configurazione ad hoc grazie ad un sistema di template (jinja2) che vi permette di sostituire delle variabili nel testo. Utile sopratutto per le installazioni server.
Prima installiamo ansible ultima versione e impariamo a fare una semplice lista di pacchetti. Usiamo pip (è come apt per progetti python) perchè apt ha pacchetti troppo datati:
sudo apt-get install python-setuptools python-dev build-essential
sudo pip install paramiko PyYAML Jinja2 httplib2 passlib
sudo pip install ansible
Ora aggiungiamo i pc da controllare ed installare tramite ansible nel nostro inventario in etc/ansible/host:
[test]
test.adunanza.net
#[aduprod]
#forum.adunanza.net
A questo punto avremmo finito.
Controlliamo che tutti i pc che vogliamo gestire rispondano ai comandi con un ping:
ansible all -m ping
Basterà lanciare un playbook specifico con delle procedure per installare cio’ che vogliamo.
DebOps
Ora installiamo un altro progetto DebOps specifico per distribuzioni Debian based. E’ una raccolta di playbook fatta da sysadmin professionisti che, dovendo fare certe operazioni ripetutamente per lavoro, hanno deciso di farne una raccolta per semplificarsi la vita.
Es: installazion di mysql e phpmyadmin, ma anche piu ad alto livello come wordpress.
Ovviamente le conf vanno modificate a vostra necessità.
sudo pip install debops
ref: http://docs.debops.org/en/latest/debops/docs/installation.html
sudo pip install --upgrade debops
(senza questo non scaricherà i playbook e non funzionerà)
Ora iniziamo un nuovo progetto debops.
Posizionatevi nella dir scelta e digitate:
debops-init ./mioprg-debops
Poi scarichiamo i playbooks di debops che vi permetteranno di installare al volo molte cose sui nodi.
sudo debops-update
http://docs.debops.org/en/latest/debops/docs/getting-started.html
Entrare nella dir appena creata.
Cambiamo nuovamente l’inventory host del progetto che è differente da quello ansible in /etc/ansible di prima.
es:
[ansible_controllers]
localhost ansible_connection=local
[debops_monit]
test.adunanza.net ansible_ssh_host=test.adunanza.net ansible_ssh_private_key_file=/home/hammon/private-key
Nota: i nodi controllati in questa maniera eseguono procedure particolari per prepararli e di hardening. Quindi garantisticono l’accesso solo hai pc controllori impostati nell’inventario.
Vediamo di capire il file:
localhost sarebbe il nodo controllore (il mio pc, ma al momento non vogliamo gestirlo con ansible quindi localhost
viene ignoratoautomaticamente da ansible e non configurato.
quando vogliamo installare qualosa su un nodo con debops b (es. monit) basta aggiungere il nodo al gruppo [debops_monit]
e lanciare nella dir del progetto debops
.
debops
Ansible leggerà automaticamente l’inventario e procederà alla configurazione dei nodi inseriti nel gruppo.
ref:
- link alla documentazione per l’installazione: http://docs.ansible.com/intro_installation.html (mi raccomando non saltate passaggi che sembrano scontati come apt-get update)
Troubleshooting:
- se la procedura common si blocca per nptd
Permission denied
: https://github.com/debops/debops/issues/103 - Se vi caccia fuori dal server usando altri host: https://github.com/debops/debops/issues/103
- http://www.saltycrane.com/blog/2010/02/how-install-pip-ubuntu/