GNU/Linux >> Linux Esercitazione >  >> Linux

Come gestire l'inventario host statico e dinamico di Ansible

Come sappiamo, Ansible è lo strumento di automazione più potente che può configurare gli host a proprio agio. Il vantaggio principale dell'utilizzo di Ansible come strumento di automazione è che non è necessario installare alcun agente sugli host. La comunicazione tra il server Ansible e i suoi client o host gestiti è senza agenti, funziona tramite il meccanismo ssh.

In termini di terminologia Ansible, il sistema su cui installiamo il software ansible  è chiamato "Nodo di controllo " e i server gestiti e configurati dal server Ansible o dal nodo di controllo sono noti come "Host gestito “. Le voci degli host gestiti sono archiviate in un file di inventario host, è un file di testo sul nodo di controllo che consiste in un nome host gestito o indirizzi IP. In Ansible possiamo gestire due tipi di inventario host, ovvero staticodinamico .

In questo articolo discuteremo come gestire l'inventario di host statici e dinamici in Ansible. Presumo che il software Ansible sia già installato sul mio nodo di controllo. Ogni volta che installiamo un software ansible, viene creato un file host ansible predefinito con il nome "hosts ” nella cartella “/etc/ansible ” Nel caso in cui il software Ansible non sia installato sul tuo server, fai riferimento a quanto segue

  • Come installare Ansible (strumento di automazione) su CentOS 8/RHEL 8
  • Come installare lo strumento Ansible Automation su CentOS 7.x

In questo tutorial userò i seguenti:

Un nodo di controllo –   control-node.example.com (192.168.0.10)

Due host gestiti – servera.example.com (192.168.0.20) e serverb.example.com (192.168.0.30)

Inventario host statico

Un inventario host statico in Ansible è simile a INI file di testo, in cui ciascuna sezione dichiara un gruppo di host (gruppo host). Ciascuna sezione inizia con il nome di un gruppo di host racchiuso tra parentesi quadre([]), quindi vengono elencate le voci host di ciascun host gestito nel gruppo, ciascuna su una singola riga. Le voci host possono ospitare il nome o gli indirizzi IP degli host gestiti. Creiamo un file di inventario con il nome "inventario" nella cartella "test-lab" nella home directory del tuo utente.

[[email protected] ~]$ mkdir test-lab
[[email protected] ~]$ cd test-lab/
[[email protected] test-lab]$ vi inventory
control-node.example.com
192.168.0.10

[webserver]
servera.example.com

[dbserver]
serverb.example.com

[datacenter:children]
webserver
dbserver

Salva ed esci dal file.

Nel file di inventario ho creato due gruppi host con il nome webserver e dbserver, a parte questo abbiamo creato un altro gruppo con il nome datacenter che include gruppi di gruppi host. Gli inventari di host Anisble possono includere gruppi di gruppi di host, ciò si ottiene con ":bambini ' esempio di suffisso è mostrato nell'inventario creato sopra. Inoltre non è obbligatorio posizionare l'host in un gruppo, possiamo semplicemente posizionare gli host senza menzionare il gruppo host, proprio come la voce "control-node.exmaple.com" nel file di inventario

Eseguiamo alcune operazioni di base con il comando ansible facendo riferimento agli host di inventario.

Per utilizzare il comando ansible per la gestione dell'host, il percorso del file di inventario dell'host deve essere specificato con "-i opzione ".

$ ansible {modello-host}  -i  /  –list-hosts

Esempio:1 elenca tutti gli host gestiti

Per elencare tutti gli host gestiti, specifica la parola chiave "all" al posto del pattern host nel comando ansible, l'esempio è mostrato di seguito

[[email protected] test-lab]$ ansible all -i /home/linuxtechi/test-lab/inventory --list-hosts
  hosts (4):
    control-node.example.com
    192.168.0.10
    servera.example.com
    serverb.example.com
[[email protected] test-lab]$

Un altro modo per elencare tutti gli host gestiti consiste nell'utilizzare il carattere jolly "*".

[[email protected] test-lab]$ ansible '*' -i /home/linuxtechi/test-lab/inventory --list-hosts

Esempio:2 elenca gli host gestiti in base al gruppo host.

Specifica il nome del gruppo host al posto del modello host

[[email protected] test-lab]$ ansible webserver -i /home/linuxtechi/test-lab/inventory --list-hosts
  hosts (1):
    servera.example.com
[[email protected] test-lab]$
[[email protected] test-lab]$ ansible datacenter -i /home/linuxtechi/test-lab/inventory --list-hosts
  hosts (2):
    servera.example.com
    serverb.example.com
[[email protected] test-lab]$

Esempio:3 elencare gli host gestiti in base al modello host con caratteri jolly.

Elenca tutti gli host che si trovano nel dominio “*.example.com”

[[email protected] test-lab]$ ansible '*.example.com' -i /home/linuxtechi/test-lab/inventory --list-hosts
  hosts (3):
    control-node.example.com
    servera.example.com
    serverb.example.com
[[email protected] test-lab]$

Elenca tutti gli host che sono sulla rete "192.168.0.0"

[[email protected] test-lab]$ ansible '192.168.0.*' -i /home/linuxtechi/test-lab/inventory --list-hosts
  hosts (1):
    192.168.0.10
[[email protected] test-lab]$

Esempio:4 Pattern host avanzato come inclusione ed esclusione

Oltre ai caratteri jolly, Ansible ci consente di creare modelli host complessi utilizzando la logica di inclusione ed esclusione. L'inclusione viene eseguita con il carattere ":" per separare i gruppi nel modello host per indicare una logica OR.

Esempio di modello di inclusione dell'host

[[email protected] test-lab]$ ansible 'webserver:dbserver' -i /home/linuxtechi/test-lab/inventory --list-hosts
  hosts (2):
    servera.example.com
    serverb.example.com
[[email protected] test-lab]$

Esempio di modello di intersezione host

':&' rappresenta l'intersezione di due gruppi nel file di inventario

[[email protected] test-lab]$ ansible 'datacenter:&dbserver' -i /home/linuxtechi/test-lab/inventory --list-hosts
  hosts (1):
    serverb.example.com
[[email protected] test-lab]$

Esempio di modello di esclusione host

L'esclusione viene eseguita utilizzando il carattere ':' insieme al carattere '!'

[[email protected] test-lab]$ ansible 'datacenter:!dbserver' -i /home/linuxtechi/test-lab/inventory --list-hosts
  hosts (1):
    servera.example.com
[[email protected] test-lab]$

Inventario dinamico dell'host

L'inventario host in Ansible può essere generato dinamicamente. Le fonti per le informazioni sull'inventario dinamico includono provider di cloud pubblici/privati, informazioni sul sistema cobbler, database LDAP o CMDB (database di gestione della configurazione). Ansible include script che gestiscono informazioni dinamiche su host, gruppi e variabili dei provider più comuni come Amazon EC2, Cobbler, Rackspace e OpenStack.

Per i provider cloud, le informazioni di autenticazione e accesso devono essere definite in file a cui lo script può accedere. Un certo numero di script esistenti sono disponibili dal sito GitHub di Ansible all'indirizzo https://github.com/ansible/ansible/tree/devel/contrib/inventory, questi script supportano la generazione dinamica di un inventario basato sulle informazioni dell'host disponibili da un piattaforme di gran numero come Openstack , AWS , Ovirt , Satellite Red Hat e OpenShift .

Siamo in grado di scrivere il nostro programma di inventario dinamico personalizzato in qualsiasi linguaggio di programmazione e dobbiamo restituire in formato JSON dopo aver superato le opzioni appropriate. Affinché Ansible utilizzi lo script per recuperare le informazioni sugli host dal sistema di inventario esterno, questo script deve supportare il –list parametro, restituendo informazioni sul gruppo host e sugli host simili all'hash/dizionario JSON. L'esempio è mostrato di seguito:

[[email protected] test-lab]$ ./inventoryscript --list
{
  "webservers" :["web1.example.com", "web2.example.com" ],
  "dbservers" :["db1.example.com", "db2.example.com"]
}

Uno script che crea un inventario dinamico deve essere eseguibile affinché Ansible possa usarlo.

Nota:Ansible supporta l'uso di più inventari nella stessa corsa. Se il valore è passato al parametro '-i' o il valore del parametro inventory nel file /etc/ansible/ansible.cfg . Quando esistono più file di inventario, vengono esaminati in ordine alfabetico. Pertanto, è importante che il nome di un file segua quello di un altro file in ordine alfabetico se il suo contenuto dipende dal contenuto di un altro file.


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

  2. Come gestire la scadenza e l'invecchiamento della password utente in Linux

  3. Come gestire ed elencare i servizi in Linux

  4. Come installare e testare Ansible su Linux

  5. Come configurare l'indirizzo IP statico e dinamico in Arch Linux

Configurazioni di indirizzi IP statici e dinamici:distribuzione DHCP

Configurazioni di indirizzi IP statici e dinamici per DHCP

Come installare e gestire Evillimiter per controllare la tua rete Wi-Fi in Linux

Come creare e gestire macchine virtuali in KVM

Come rilevare e gestire i dispositivi su Linux

Come installare e configurare WordPress con Ansible