Ansible è una piattaforma di automazione open source che include gestione della configurazione, distribuzione delle applicazioni e orchestrazione dell'infrastruttura. È uno strumento di automazione popolare per gli ingegneri DevOps e per gli amministratori di sistema. Gli amministratori di sistema spesso affrontano un esaurimento della carriera a causa delle lunghe ore e dell'esecuzione di attività ripetitive su molti sistemi, ma Ansible aiuta a semplificare il completamento di queste attività. Attività come la creazione di utenti, la gestione dei servizi e l'installazione di software possono essere eseguite utilizzando Ansible. Ansible è basato su procedure anziché dichiarativo, il che significa che scrivi tutti i passaggi richiesti in un file YAML e poi li esegui in sequenza su tutti i sistemi di destinazione.
[ Potresti anche leggere: Utilizzo di un playbook Ansible per gestire gli aggiornamenti di workstation e server ]
Nodi
Nell'architettura Ansible, hai un nodo controller e nodi gestiti. Ansible è installato solo sul nodo controller. È uno strumento senza agenti e non deve essere installato sui nodi gestiti. Il controller e i nodi gestiti sono collegati tramite il protocollo SSH. Tutte le attività vengono scritte in un "playbook" utilizzando il linguaggio YAML. Ogni playbook può contenere più play, che contengono attività e le attività contengono moduli . I moduli sono script autonomi riutilizzabili che gestiscono alcuni aspetti del comportamento di un sistema. I moduli Ansible sono anche noti come plug-in attività o plug-in di libreria.
Ruoli
I playbook per compiti complessi possono diventare lunghi e quindi difficili da leggere e capire. La soluzione a questo problema è Ansible ruoli . Utilizzando i ruoli, puoi suddividere lunghi playbook in più file rendendo ogni playbook semplice da leggere e comprendere. I ruoli sono una raccolta di modelli, file, variabili, moduli e attività. Lo scopo principale dietro i ruoli è riutilizzare il codice Ansible. Gli ingegneri e gli amministratori di sistema DevOps dovrebbero sempre provare a riutilizzare il loro codice. Un ruolo Ansible può contenere più playbook. Può facilmente riutilizzare il codice scritto da chiunque se il ruolo è adatto a un determinato caso. Ad esempio, potresti scrivere un playbook per l'hosting Apache e quindi riutilizzare questo codice modificando il contenuto di index.html
per modificare le opzioni per qualche altra applicazione o servizio.
Quella che segue è una panoramica della struttura dei ruoli di Ansible. È costituito da molte sottodirectory, come:
|-- README.md
|-- defaults
|-------main.yml
|-- files
|-- handlers
|-------main.yml
|-- meta
|-------main.yml
|-- tasks
|-------main.yml
|-- templates
|-- tests
|-------inventory
|-- vars
|-------main.yml
Inizialmente, tutti i file vengono creati vuoti utilizzando ansible-galaxy
comando. Quindi, a seconda dell'attività, puoi utilizzare queste directory. Ad esempio, vars
directory memorizza le variabili. Nelle tasks
directory, hai main.yml
, che è il playbook principale. I templates
directory serve per memorizzare i modelli Jinja. I handlers
directory è per la memorizzazione dei gestori.
Vantaggi dei ruoli Ansible:
- Consenti il riutilizzo dei contenuti
- Rendi gestibili i grandi progetti
I ruoli Ansible sono directory strutturate contenenti sottodirectory.
Ma lo sapevi che Red Hat Enterprise Linux fornisce anche alcuni ruoli di sistema Ansible per gestire le attività del sistema operativo?
Ruoli di sistema
I rhel-system-roles
il pacchetto è disponibile nel canale Extra (EPEL). I rhel-system-roles
pacchetto viene utilizzato per configurare gli host RHEL. Ci sono sette rhel-system-roles
predefiniti disponibile:
- rhel-system-roles.kdump - Questo ruolo configura il servizio di ripristino da crash di kdump. Kdump è una funzionalità del kernel Linux ed è utile quando si analizza la causa di un crash del kernel.
- rhel-system-roles.network - Questo ruolo è dedicato alle interfacce di rete. Questo aiuta a configurare le interfacce di rete nei sistemi Linux.
- rhel-system-roles.selinux - Questo ruolo gestisce SELinux. Questo aiuta a configurare la modalità SELinux, i file, il contesto delle porte, ecc.
- rhel-system-roles.timesync - Questo ruolo viene utilizzato per configurare NTP o PTP sul tuo sistema Linux.
- rhel-system-roles.postfix - Questo ruolo è dedicato alla gestione dell'agente di trasferimento della posta Postfix.
- rhel-system-roles.firewall - Come suggerisce il nome, questo ruolo riguarda la gestione della configurazione del firewall del sistema host.
- rhel-system-roles.tuned - Tuned è un servizio di ottimizzazione del sistema in Linux per monitorare i dispositivi collegati. Quindi questo ruolo consiste nel configurare il servizio ottimizzato per le prestazioni del sistema.
I rhel-system-roles
il pacchetto è derivato da ruoli di sistema Linux open source. Questo ruolo del sistema Linux è disponibile su Ansible Galaxy. I rhel-system-roles
è supportato da Red Hat, quindi puoi pensarlo come se fosse rhel-system-roles
sono a valle dei ruoli di sistema Linux. Per installare rhel-system-roles
sulla tua macchina, usa:
$ sudo yum -y install rhel-system-roles
or
$ sudo dnf -y install rhel-system-roles
Questi ruoli si trovano in /usr/share/ansible/roles/
directory.
Questo è il percorso predefinito, quindi ogni volta che utilizzi i playbook per fare riferimento a questi ruoli, non è necessario includere esplicitamente il percorso assoluto. Puoi anche fare riferimento alla documentazione per l'utilizzo dei ruoli Ansible. Il percorso della documentazione è /usr/share/doc/rhel-system-roles
La directory della documentazione per ogni ruolo contiene informazioni dettagliate su quel ruolo. Ad esempio, il file README.md è un esempio di quel ruolo, ecc. La documentazione è autoesplicativa.
Quello che segue è un esempio di ruolo.
Esempio
Se desideri modificare la modalità SELinux della macchina localhost o di qualsiasi macchina host, utilizza i ruoli di sistema. Per questa attività, usa rhel-system-roles.selinux
Per questo compito, l'ansible-playbook si presenta così:
---
- name: a playbook for SELinux mode
hosts: localhost
roles:
- rhel-system-roles.selinux
vars:
- selinux_state: disabled
Dopo aver eseguito il playbook, puoi verificare se la modalità SELinux è cambiata o meno.
[ Cerchi ulteriori informazioni sull'automazione dei sistemi? Inizia con The Automated Enterprise, un libro gratuito di Red Hat. ]
Concludi
Questa breve introduzione ai ruoli Ansible dovrebbe essere sufficiente per iniziare a usarli nei tuoi playbook. Ricorda che Ansible ha lo scopo di snellire e semplificare le attività ripetitive e semplificare la vita del tuo amministratore di sistema.