GNU/Linux >> Linux Esercitazione >  >> Linux

Come scaricare e utilizzare i ruoli di Ansible Galaxy in Ansible Playbook

Abile è lo strumento preferito in questi giorni se devi gestire più dispositivi, che si tratti di Linux, Windows, Mac, dispositivi di rete, VMware e molti altri. Ciò che rende popolare Ansible è il suo agente meno funzionalità e il controllo granulare. Se hai lavorato con python o hai esperienza con yaml , ti sentirai a casa con Ansible. Per vedere come installare Ansible, fai clic qui.

I moduli di base di Ansible ti permetteranno di gestire quasi tutto se desideri scrivere playbook, tuttavia spesso c'è qualcuno che ha già scritto un ruolo per un problema che stai cercando di risolvere. Facciamo un esempio, se desideri gestire client NTP su macchine Linux, hai 2 scelte:scrivere un ruolo che può essere applicato ai nodi o usare ansible-galaxy per scaricare un ruolo esistente che qualcuno ha già scritto/testato per te. La galassia Ansible ha ruoli per quasi tutti i domini e questi soddisfa diversi problemi. Puoi visitare https://galaxy.ansible.com/ per avere un'idea dei domini e dei ruoli popolari che ha. Ogni ruolo pubblicato su galaxy repository è stato testato a fondo ed è stato valutato dagli utenti, così puoi farti un'idea di come è piaciuto ad altre persone che lo hanno utilizzato.

Per continuare a muoverti con l'idea NTP, ecco come puoi cercare e installare un ruolo NTP da galaxy.

Innanzitutto, eseguiamo ansible-galaxy con il flag di aiuto per verificare quali opzioni ci offre

[[email protected] ~]# ansible-galaxy --help

Come puoi vedere dall'output sopra, sono state mostrate alcune opzioni interessanti, dal momento che stiamo cercando un ruolo per gestire i client ntp, proviamo l'opzione di ricerca per vedere quanto è buono trovare quello che stiamo cercando.

[[email protected] ~]# ansible-galaxy search ntp

Ecco l'output troncato del comando precedente.

Ha trovato 341 corrispondenze in base alla nostra ricerca, come puoi vedere dall'output sopra, molti di questi ruoli non sono nemmeno correlati a NTP, il che significa che la nostra ricerca ha bisogno di un certo perfezionamento, tuttavia, è riuscita a estrarre alcuni ruoli NTP, scaviamo più a fondo per vedere quali sono questi ruoli. Ma prima lascia che ti dica la convenzione di denominazione seguita qui. Il nome di un ruolo è sempre preceduto dal nome dell'autore in modo che sia facile separare i ruoli con lo stesso nome. Quindi, se hai scritto un ruolo NTP e lo hai pubblicato nel repository Galaxy, non viene confuso con un altro repository con lo stesso nome.

Detto questo, continuiamo con il nostro lavoro di installazione di un ruolo NTP per le nostre macchine Linux. Proviamo bennojoy.ntp per questo esempio, ma prima di usarlo dobbiamo capire un paio di cose, questo ruolo è compatibile con la versione di ansible che sto eseguendo. Inoltre, qual è lo stato della licenza di questo ruolo. Per capirli, eseguiamo il comando ansible-galaxy,

[[email protected] ~]# ansible-galaxy info bennojoy.ntp

ok quindi questo dice che la versione minima è 1.4 e la licenza è BSD, scaricala

[[email protected] ~]# ansible-galaxy install bennojoy.ntp
- downloading role 'ntp', owned by bennojoy
- downloading role from https://github.com/bennojoy/ntp/archive/master.tar.gz
- extracting bennojoy.ntp to /etc/ansible/roles/bennojoy.ntp
- bennojoy.ntp (master) was installed successfully
[[email protected] ~]# ansible-galaxy list
- bennojoy.ntp, master
[[email protected] ~]#

Troviamo il ruolo appena installato.

[[email protected] ~]# cd /etc/ansible/roles/bennojoy.ntp/
[[email protected] bennojoy.ntp]# ls -l
total 4
drwxr-xr-x. 2 root root   21 May 21 22:38 defaults
drwxr-xr-x. 2 root root   21 May 21 22:38 handlers
drwxr-xr-x. 2 root root   48 May 21 22:38 meta
-rw-rw-r--. 1 root root 1328 Apr 20  2016 README.md
drwxr-xr-x. 2 root root   21 May 21 22:38 tasks
drwxr-xr-x. 2 root root   24 May 21 22:38 templates
drwxr-xr-x. 2 root root   55 May 21 22:38 vars
[[email protected] bennojoy.ntp]#

Eseguirò questo ruolo appena scaricato sul mio nodo Elasticsearch CentOS. Ecco il mio file hosts

[[email protected] ~]# cat hosts
[CentOS]
elastic7-01 ansible_host=192.168.1.15 ansibel_port=22 ansible_user=linuxtechi
[[email protected] ~]#

Proviamo a eseguire il ping del nodo utilizzando il modulo ping ansible di seguito,

[[email protected] ~]# ansible -m ping -i hosts elastic7-01
elastic7-01 | SUCCESS => {
    "changed": false,
    "ping": "pong"
}
[[email protected] ~]#

Ecco come appare l'attuale ntp.conf sul nodo elastico.

[[email protected] ~]# head -30 /etc/ntp.conf

Dato che sono in India, aggiungiamo il server in.pool.ntp.org a ntp.conf. Dovrei modificare le variabili nella directory predefinita del ruolo.

[[email protected] ~]# vi /etc/ansible/roles/bennojoy.ntp/defaults/main.yml

Modifica l'indirizzo del server NTP nel parametro "ntp_server", dopo l'aggiornamento dovrebbe apparire come di seguito.

L'ultima cosa ora è creare il mio playbook che chiamerebbe questo ruolo.

[[email protected] ~]# vi ntpsite.yaml
---
 - name: Configure NTP on CentOS/RHEL/Debian System
   become: true
   hosts: all
   roles:
    - {role: bennojoy.ntp}

salva ed esci dal file

Siamo pronti per eseguire questo ruolo ora, usa il comando seguente per eseguire ntp playbook,

[[email protected] ~]# ansible-playbook -i hosts ntpsite.yaml

L'output del playbook ansible di cui sopra ntp dovrebbe essere qualcosa come di seguito,

Controlliamo ora il file aggiornato. vai al nodo elastico e visualizza il contenuto del file ntp.conf

[[email protected] ~]# cat /etc/ntp.conf
#Ansible managed

driftfile /var/lib/ntp/drift
server in.pool.ntp.org

restrict -4 default kod notrap nomodify nopeer noquery
restrict -6 default kod notrap nomodify nopeer noquery
restrict 127.0.0.1
[[email protected] ~]#

Nel caso in cui non trovi un ruolo che soddisfi i tuoi requisiti, ansible-galaxy può aiutarti a creare una struttura di directory per i tuoi ruoli personalizzati. Questo aiuta i tuoi playbook insieme alle variabili, ai gestori, ai modelli, ecc. assemblati in una struttura di file standardizzata. Creiamo il nostro ruolo, è sempre una buona pratica lasciare che ansible-galaxy crei la struttura per te.

[[email protected] ~]# ansible-galaxy init pk.backup
- pk.backup was created successfully
[[email protected] ~]#

Verifica la struttura del tuo ruolo utilizzando il comando tree,

Lascia che ti spieghi rapidamente a cosa servono ciascuna di queste directory e file, ognuna di queste ha uno scopo.

Il primo in assoluto sono i predefiniti directory che contiene i file contenenti variabili con ha la precedenza più bassa, se le stesse variabili sono assegnate nella directory var avrà la precedenza su default. I gestori directory ospita i gestori. Il file e modelli conserva tutti i file che il tuo ruolo potrebbe dover copiare e modelli jinja da utilizzare rispettivamente nei playbook. Le compiti directory è dove vengono conservati i tuoi playbook contenenti le attività. La directory var è costituita da tutti i file che ospitano le variabili utilizzate in role. La directory di test è composta da un inventario di esempio e da playbook di prova che possono essere utilizzati per testare il ruolo. La meta directory è costituito da eventuali dipendenze da altri ruoli insieme alle informazioni sulla paternità.

Infine, README.md il file consiste semplicemente in alcune informazioni generali come la descrizione e la versione minima di ansible con cui questo ruolo è compatibile.


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

  2. Come installare e utilizzare Ansible su Debian 11

  3. Come creare un Playbook Ansible

  4. Come utilizzare Ansible per installare e configurare Redis 6 su Debian 11

  5. RHCE Ansible Series #9:Ansible Roles

Come creare e utilizzare fatti personalizzati in Ansible

Come definire e utilizzare i gestori in Ansible Playbook

Come creare ed eseguire file Ansible Playbook

Ruoli Ansible e come usarli nei Playbook

Come usare Ansible per configurare Vim

Come installare e utilizzare Ansible su Debian 10