GNU/Linux >> Linux Esercitazione >  >> Linux

Come creare ruoli Ansible e usarli in Playbook

Ansible è uno strumento di orchestrazione e gestione della configurazione opensource che semplifica l'automazione delle attività IT in un ambiente IT multilivello. Con un solo comando, puoi configurare più server e distribuire applicazioni senza accedere a ciascuno dei server ed eseguire la configurazione da solo. In tal modo, Ansible semplifica le attività che altrimenti richiederebbero tempo e noiose.

Con l'aumento del numero di file di playbook che eseguono varie attività di automazione, le cose possono diventare un po' complesse. Ed è qui che entrano in gioco i ruoli Ansible.

Cos'è un ruolo Ansible?

Un ruolo ansible è un concetto all'interno di Ansible che si occupa di idee piuttosto che di eventi. In sostanza, un ruolo è un livello di astrazione utilizzato per semplificare il modo in cui vengono scritti i file del playbook. Un ruolo fornisce uno scheletro per componenti riutilizzabili come variabili, moduli, attività e fatti che possono essere caricati in un file Playbook.

Applicazione pratica

Per comprendere meglio come vengono utilizzati i ruoli, consideriamo uno scenario in cui sono presenti 8 attività da eseguire su 2 nodi remoti. Un approccio sarebbe definire tutte le attività da eseguire sugli host remoti su un unico file di playbook. Tuttavia, questo è noioso e molto probabilmente aumenterà la complessità del playbook. Un approccio migliore sarebbe quello di creare 8 ruoli separati in base ai quali ogni ruolo eseguirà una singola attività e successivamente chiamerà questi ruoli nel file ansible-playbook.

Uno dei maggiori vantaggi dell'utilizzo dei ruoli è che ogni ruolo è indipendente dall'altro. L'esecuzione di un ruolo non dipende dall'esecuzione di un altro ruolo. Inoltre, i ruoli possono essere modificati e riutilizzati, eliminando così la necessità di riscrivere le riproduzioni e le attività nel file Playbook.

Quindi, supponiamo che tu voglia creare un file di playbook per installare lo stack LAMP su un server Debian. Un modo migliore per farlo è iniziare creando 3 ruoli separati in cui ognuno installerà rispettivamente Apache, MariaDB e PHP sull'host remoto. Quindi scrivi un playbook e chiama i ruoli nel file del playbook. Supponiamo di avere un secondo server Debian di cui hai bisogno per installare Drupal CMS. Invece di riscrivere nuovamente i ruoli, puoi semplicemente riutilizzare i 3 ruoli che hai creato in precedenza e aggiungere altri ruoli per l'installazione di Drupal.

Hai capito?

Vediamo ora come creare ruoli Ansible.

Come creare ruoli Ansible

Per creare un ruolo ansible da zero, esegui il comando ansible galaxy, l'esempio è mostrato di seguito:

$ nome-ruolo init ansible-galaxy

Ad esempio, per creare un ruolo chiamato my-role, invoca il comando.

$ ansible-galaxy init my-role

Dalla schermata sopra, il comando crea la directory my-role. Questa directory del ruolo contiene le seguenti directory o cartelle per impostazione predefinita.

  • La cartella "predefiniti":contiene le variabili predefinite che verranno utilizzate dal ruolo.
  • La cartella "files":contiene i file che possono essere distribuiti dal ruolo.
  • La cartella "gestori":memorizza i gestori che possono essere utilizzati da questo ruolo.
  • cartella 'meta':contiene i file che stabiliscono le dipendenze dei ruoli.
  • La cartella "attività":contiene un file YAML che esplicita le attività per il ruolo stesso. Di solito, questo è il file main.yml.
  • La cartella "modelli":contiene i file modello che possono essere modificati e allocati all'host remoto di cui viene eseguito il provisioning.
  • La cartella "tests":integra i test con i file del playbook di Ansible.
  • La cartella 'vars':contiene le variabili che verranno utilizzate dal ruolo. Puoi definirli nel file del playbook, ma ti consigliamo di definirli in questa directory.

Per visualizzare la struttura della directory dei ruoli, eseguire il comando tree seguito dal nome del ruolo.

$ tree <role-name>

Ora, a scopo dimostrativo, creeremo tre ruoli ansible come segue:

  • Il ruolo dei prerequisiti – Installa git
  • Il ruolo mongodb:installa il motore di database MongoDB
  • Il ruolo di Apache – Installa il server web Apache

Quindi, usando la stessa sintassi usata in precedenza, creeremo i ruoli come segue:

$ sudo ansible-galaxy init prerequisites
$ sudo ansible-galaxy init mongodb
$ sudo ansible-galaxy init apache

Il passaggio successivo consiste nel definire ogni ruolo che hai creato. Per ottenere ciò, è necessario modificare il file main.yml che si trova nella cartella "attività" per ciascun ruolo.

ruolo —>  attività —> main.yml

Ad esempio, per modificare il ruolo dei prerequisiti, navigare come mostrato:

$ cd prerequisites/tasks/

Quindi modifica il file main.yml.

$ sudo vim main.yml

Il ruolo per l'installazione di git è definito come mostrato:

- name: Install git
  apt:
     name: git
     state: present
     update_cache: yes

Per MongoDB, abbiamo 2 attività. Installazione di MongoDB e avvio del demone Mongod.

- name: Install MongoDB
  apt:
     name: mongodb
     state: present
     update_cache: yes

- name: Start Mongod daemon
  shell: "mongod &"

E infine, per il server web Apache:

- name: install Apache web server
  apt:
     name=apache2
     state=present
     update_cache=yes

Infine, creeremo un file di playbook chiamato stack.yml e chiameremo i ruoli come mostrato.

---
- hosts: all
  become: yes
  roles:
        -  prerequisites
        -  mongodb
        -  apache

Come puoi vedere, il file del playbook sembra abbastanza semplice rispetto alla definizione di ogni attività per l'host.

Per assicurarti che i nostri ruoli funzionino come previsto, esegui il file di playbook ansible come mostrato.

$ sudo ansible-playbook /etc/ansible/stack.yml

Il playbook eseguirà tutti i ruoli come mostrato.

Per assicurarci che i pacchetti siano stati installati correttamente, controlleremo le loro versioni come mostrato:

$ mongod --version
$ apachectl -v
$ git --version

L'output sopra conferma che effettivamente i ruoli vengono eseguiti correttamente e che il pacchetto è stato installato. Perfetto!

Conclusione:

I ruoli Ansible semplificano i file del playbook soprattutto quando devi eseguire più attività su più host. Inoltre, puoi riutilizzare i ruoli per più host senza la necessità di modificare il file del playbook. Se hai trovato utile questa guida, inviaci un messaggio e condividila con i tuoi amici.


Linux
  1. Come utilizzo Ansible e anacron per l'automazione

  2. Come installare e utilizzare Ansible su Debian 11

  3. Come creare un alias e utilizzare il comando alias in Linux

  4. Come creare un Playbook Ansible

  5. Crea e rilascia ruoli in PostgreSQL

Come creare e utilizzare fatti personalizzati in Ansible

Ansible Guide:crea Ansible Playbook per LEMP Stack

Come definire e utilizzare i gestori in Ansible Playbook

Come creare ed eseguire file Ansible Playbook

Ruoli Ansible e come usarli nei Playbook

Come creare e utilizzare file di scambio su Linux