cluster-linux-virtualbox-parte-terza

Cluster ansible vagrant con Pacemaker e pcs: parte 3

See the article in English

Introduzione

Continuiamo, con questa terza parte, la realizzazione del cluster Linux automatizzando ulteriormente tutta la procedura dell’articolo precedente utilizzando Vagrant e come provision utilizzeremo ansible.

Per semplicità di esposizione consideriamo che Vagrant sia già installato nello stesso computer dov’è Virtualbox come pure per ansible (vedere l’Installation Guide per maggiori informazioni).

Linux cluster ansible su GitHub

Su GitHub ho pubblicato questo progetto con tutte le specifiche per il funzionamento:

Quindi apriamo un terminale e ci posizioniamo su una cartella di lavoro e scarichiamo il progetto con:

cd $HOME
mkdir linux-cluster-test-ansible
cd linux-cluster-test-ansible
git clone https://github.com/eniocarboni/linux-cluster-test-ansible .

Copiamo il file per le password da assegnare agli utenti linux:

  • vagrant
  • hacluster
  • fencecluster
cp provision/vars/cluster_password.TMPL.yml provision/vars/cluster_password.yml

Il file va editato e modificate le password.

Vagrant è configurato (vedi il file Vagrantfile) per creare vm Ubuntu 20.04 ma editando il suo file d configurazione lo si può configurare anche per Centos 7 ed AlmaLinux.

Per creare le vm e configurare il cluster Linux tramite ansible utilizzare il comando:

vagrant up --provision

Aggiungere un nodo al cluster

Per aggiungere un nodo al cluster bisogna editare il file Vagrantfile e modificare la variabile $NUM_CLUSTER_NODES, ad esempio, passando dal default 3 a 4 nodi e quindi il comando:

vagrant up --provision

Eliminare un nodo dal cluster

Per eliminare un nodo basta il comando:

vagrant destroy cl-node-3

Editare poi il file Vagrantfile e diminuire di 1 il valore della variabile $NUM_CLUSTER_NODES e quindi:

vagrant up --provision

Cluster: Provision con ansible

Naturalmente è possibile utilizzare ansible senza utilizzare vagrant se le vm sono già state create dato che vagrant al primo provision crea il file di inventory per ansible in:

.vagrant/provisioners/ansible/inventory/vagrant_ansible_inventory

Inoltre il file di playbook è:

provision/playbook.yml

Il comando completo per ansible per fare il provision è:

ansible-playbook --inventory-file=.vagrant/provisioners/ansible/inventory/vagrant_ansible_inventory provision/playbook.yml

In tal modo si può utilizzare ansible anche su un tags o per avere informazioni su tutte le vm.

Ad esempio per fare solo il provision della parte cluster (e non tutta la prima parte dell’installazione delle vm) si può utilizzare il tag controller mentre per la parte riferibile alle risorse fence si può utilizzare il tag fence.

Ad esempio:

ansible-playbook --inventory-file=.vagrant/provisioners/ansible/inventory/vagrant_ansible_inventory --tags="fence" provision/playbook.yml
# o 
ansible-playbook --inventory-file=.vagrant/provisioners/ansible/inventory/vagrant_ansible_inventory --tags="controller" provision/playbook.yml

Protezione password

Se si vuole proteggere il file delle password degli utenti Linux provision/vars/cluster_password.yml si può creare un vault criptato di ansible tramite il comando:

ansible-vault encrypt provision/vars/cluster_password.yml

Verrà chiesta la password per la criptazione e quindi il file sarà criptato.

A questo punto per poter funzionare con vagrant bisogna eliminare il commento sul file Vagrantfile alla riga:

#ansible.ask_vault_pass = true

Si può fare editando il file o con il semplice comando:

sed -i 's/#ansible.ask_vault_pass/ansible.ask_vault_pas/' Vagrantfile

A questo punto ogni volta che vagrant esegue il provision, ansible richiederà di inserire la password del vault appena creato.

Conclusioni

Con questo terzo articolo si concludono tutti i test su un ambiente virtuale per gestire un cluster Linux di N nodi con Pacemaker, Corosync e pcs.

Siamo partiti con l’installazione manuale, quindi tramite vagrant per la gestione delle vm e poi con abbiamo utilizzato la shell bash come provisioner.

Infine in questo articolo abbiamo automatizzato ancora utilizzando ansible come provisioner semplificando e rendendo il progetto riutilizzabile in maniera più semplice.

Per ogni altro chiarimento o specifica vi rimando su linux-cluster-test-ansible.

Riferimenti

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

1 + 4 =