Usare Ansible per automatizzare la creazione di cluster all’interno di vSphere with Tanzu

vSphere with Tanzu è una soluzione molto potente per creare ed eseguire cluster Kubernetes all’interno di una infrastruttura VMware vSphere. Integrare questo ambiente con Ansible ci da grossi vantaggi e molte possibilità di automatizzare e semplificare le operazioni che riguardano il provisioning, la gestione e la scalabilità delle risorse.

In questo articolo vedremo come effettuare il login verso il supervisor e fare l’apply di un manifest YAML necessario al deploy di un cluster Kubernetes.

Effettuare il login verso il supervisor

Ovviamente prima di scrivere il codice è assolutamente necessario capire dove eseguire il codice. In questo caso possiamo utilizzare eseguire l’automazione in locale e pertanto ci basta targhettare hosts: localhost .

A questo punto possiamo cominciare con la stesura di un task per effettuare il login verso il supervisor. Ovviamente abbiamo necessità di poter raggiungere il cluster dal nostro control node. Il login lo facciamo per ottenere il token, fondamentale per riuscire a fare l’apply delle risorse che si vogliono deployare.

Dunque, il primo task sarà semplicemente una richiesta, fatta tramite RestAPI, di cui salveremo la risposta. Per fare richieste API possiamo sfruttare il modulo uri .

Come è possibile vedere, oltre all’url del supervisor abbiamo necessità di specificare username e password, in questo caso le stiamo passando come variabili; tuttavia, possiamo scegliere di implementare soluzioni alternative (usare vault per esempio).

A questo punto abbiamo necessità di salvare solo il token, per farlo possiamo sfruttare il modulo set_fact .

Creare il manifest e deployare il cluster

Adesso abbiamo bisogno di un manifest per poter fare l’apply del cluster. Ovviamente possiamo usare un file di template per poter essere generici e riuscire a crearne altri.

A questo punto basta inserire 2 task, uno per fare templating del manifest e uno per farne l’apply.

Per fare attività di templating mi basta semplicemente usare il modulo template mentre per applicare il manifest userò il modulo di kubernetes k8s che userà il token per autenticarsi verso il cluster.

A questo punto il playbook è pronto per essere usato. Ovviamente va tenuto conto del fatto che non sono stati specificati i valori delle variabili, per cui bisognerebbe creare un file di variabili oppure sfruttare il flag -e in fase di esecuzione del playbook.

Considerazioni finali

Ovviamente è possibile arricchire maggiormente il flusso di lavoro e astrarre il tutto creando uno o più ruoli. Anche il manifest può essere arricchito velocemente ed è possibile implementare più logiche al suo interno.