Ansible file per installazioni automatiche


#1

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:

Troubleshooting: