GNU/Linux >> Linux Esercitazione >  >> Linux

Guida introduttiva ai comandi ad hoc di Ansible

Nel nostro precedente articolo, abbiamo discusso di ciò che è inventario ansible e file di configurazione che pone le basi per imparare ansible. In questo articolo, discuteremo di comandi ad hoc ansible con alcuni esempi.

Introduzione

I comandi ad hoc di Ansible sono ottimi quando si desidera eseguire attività rapide e attività che non vengono ripetute frequentemente. In genere questi comandi ad hoc saranno comandi one-liner che puoi eseguire direttamente dal terminale o dallo script della shell.

Prima di imparare a lavorare con i comandi ad hoc, dovresti sapere cos'è l'idempotente. Ansible è idempotente in natura, il che significa indipendentemente dal numero di volte in cui esegui la stessa attività se lo stato di un oggetto è già cambiato, allora ansible non tenterà di apportare nuovamente le stesse modifiche a quell'oggetto.

I comandi ad hoc vengono inviati tramite /usr/bin/ansible programma. Puoi eseguire il comando seguente per ottenere l'elenco delle opzioni supportate per il comando ansible.

$ ansible --help

Se non hai ansible lab su cui esercitarti, puoi dare un'occhiata alla nostra guida su come configurare ansible manualmente e utilizzare Vagrant e Virtualbox.

  • Installa e configura Ansible in Linux
  • Configurazione automatizzata di Ansible Lab con Vagrant e Virtualbox in Linux

Conosci l'obiettivo

Prima di lavorare con comandi ad hoc o di scrivere playbook, dovresti avere una chiara comprensione dei requisiti aziendali e dell'ambiente di destinazione con cui lavorerai.

L'ambiente di destinazione può essere qualsiasi cosa come server, dispositivi di rete, container, soluzioni cloud, ecc. che supporta ansible. Qui sto usando due nodi gestiti che eseguono Ubuntu 20.04.

Puoi eseguire il comando seguente per controllare l'elenco degli host che verranno utilizzati quando esegui un comando ad hoc o un playbook.

#SYNTAX
$ ansible --list-hosts

Il nome del gruppo può essere predefinito (tutti , separato ) o gruppi definiti dall'utente .

Se vuoi saperne di più sui gruppi, fai riferimento al seguente link.

  • Inventario Ansible e file di configurazione

Ottieni l'elenco degli host per tutti i gruppi.

$ ansible all --list-hosts
hosts (2):
  managed1.anslab.com
  managed2.anslab.com

Ottieni un elenco di host per il gruppo definito dall'utente. Qui il nome del mio gruppo è ubuntu .

$ ansible ubuntu --list-hosts
hosts (2):
  managed1.anslab.com
  managed2.anslab.com

File di inventario

Il file Inventory contiene l'elenco dei nodi gestiti. Il percorso del file di inventario verrà configurato in ansible.cfg file. Puoi sovrascrivere la posizione del file di inventario utilizzando -i o --inventory flag durante l'esecuzione di comandi ad hoc.

Ho due file di inventario e il file predefinito si chiama hosts. Per usare il file host2, devo usare -i contrassegnare e passare il file come argomento.

$ ansible all -i host2 --list-hosts
hosts (1):
  managed2.anslab.com

Avviso: Se il file di inventario si trova in una posizione diversa, devi fornire il percorso assoluto. Puoi fare riferimento al seguente link per conoscere l'ordine di precedenza del file di inventario.

  • Inventario Ansible e file di configurazione

Moduli Ansible

Ansible è uno strumento con batteria inclusa, il che significa che ha tonnellate di moduli spediti con esso. I moduli sono programmi scritti in Python utilizzato da ansible per essere eseguito sui nodi gestiti per eseguire un'attività. Ansible segue un approccio plug and play, il che significa che puoi scrivere il tuo modulo ed eseguirlo attraverso ansible.

Ansible supporta molti pacchetti creati dalla comunità open source e da diversi fornitori di prodotti. Per ottenere l'elenco di tutti i moduli installati sulla tua macchina, esegui il comando seguente.

$ ansible-doc -l                    # LIST ALL MODULES AVAILABLE
$ ansible-doc -l | grep -i -w ^apt  # GREP PARTICULAR MODULE(APT) MODULE

Per visualizzare la documentazione di un modulo è possibile eseguire il comando seguente. Qui sto visualizzando la documentazione per il modulo apt che è il modulo di gestione dei pacchetti per le distribuzioni basate su Debian/Ubuntu.

$ ansible-doc apt

L'immagine sotto mostra la documentazione per il modulo ansible apt.

Sintassi dei comandi ad hoc

Ci sono alcuni input che devi fornire durante l'esecuzione del comando ad hoc.

  • Devi specificare le destinazioni (nodi gestiti). Puoi utilizzare i gruppi predefiniti "tutti/non raggruppati" o i gruppi definiti dall'utente.
  • Devi passare il nome del modulo come argomento al -m bandiera.
  • Ogni modulo accetta una serie di opzioni. Tali opzioni dovrebbero essere passate come argomenti a -a flag. Se sono presenti più opzioni, devono essere racchiuse tra virgolette.
$ ansible [group] -m [module] -a [module arguments]

Puoi combinare altri argomenti che abbiamo visto nelle sezioni precedenti in comandi ad hoc.

Verifica la connettività utilizzando il modulo Ping

Il primo modulo che esegui dopo aver impostato ansible è il "ping" modulo. Il modulo ping viene utilizzato per verificare se la connettività è corretta con il controller e i nodi gestiti. Se la connessione riesce, riceverai una risposta come "ping :pong" .

$ ansible all -m ping

Puoi anche condensare l'output usando -o bandiera.

$ ansible all -m ping -o

Esegui comandi tramite il modulo Shell

Il modulo shell viene utilizzato per eseguire qualsiasi comando che è possibile eseguire sul terminale. È semplicemente come eseguire i comandi su un terminale Linux.

Dovresti usare il -a contrassegna e passa i comandi come argomenti al modulo della shell.

$ ansible all -m shell -a "arguments"

Di seguito sono riportati alcuni dei comandi che ho eseguito tramite il modulo shell ansible.

$ ansible all -m shell -a "echo $USER"
$ ansible all -m shell -a "uptime"
$ ansible all -m shell -a "cat /etc/os-release | grep -i PRETTY_NAME"
$ ansible all -m shell -a "touch /tmp/abc.txt"
$ ansible all -m shell -a "ls -l /tmp/abc.txt"

In alternativa al modulo shell puoi anche usare il modulo di comando che è il modulo predefinito in ansible. Puoi usare direttamente il -a contrassegnare e passare i comandi come argomento poiché il modulo di comando è il modulo predefinito.

$ ansible all -m command -a "uptime"       # EXCLUSIVELY PASSING COMMAND MODULE
$ ansible all -a "uptime"                  # NOT USING -m TO PASS MODULE

La differenza tra shell e modulo di comando è che con il modulo di comando puoi accedere ad alcune variabili speciali e non puoi usare pipe, reindirizzamenti e operatori AND logici.

Esegui il comando seguente e otterrai un errore.

$ ansible all -m command -a "test -f /etc/hosts && echo 'hosts file present'"

Puoi eseguire lo stesso comando tramite il modulo della shell e funzionerà correttamente.

$ ansible all -m shell -a "test -f /etc/hosts && echo 'hosts file present'"

Esegui script tramite il modulo Script

Quando desideri eseguire qualsiasi script (python, shell, ecc.) puoi utilizzare il modulo script che copierà lo script dalla tua macchina controller su tutti i nodi gestiti, quindi eseguirà lo script.

Ho il seguente codice Python nel mio /tmp directory.

import sys,os

print("CURRENT PYTHON VERSION = ", sys.version_info)
print("HOSTNAME               = ", os.uname()[1])
print("CURRENT DIRECTORY      = ", os.getcwd())

Eseguire il comando seguente per utilizzare il modulo script per eseguire lo script. Il modulo script supporta argomenti aggiuntivi a seconda di come stai eseguendo lo script. Nel mio caso, sto eseguendo uno script python, quindi sto cercando di passare l'argomento extra "executable=python3" insieme al percorso dello script.

$ ansible all -m script -a "/tmp/get_host_details.py executable=python3"

Moduli di gestione dei pacchetti

Ci sono moduli per lavorare con gestori di pacchetti del sistema operativo come dnf , apt , pacman , ecc. Qui sto usando apt dal momento che sto utilizzando Ubuntu. Ma la sintassi sarà la stessa per tutti i gestori di pacchetti con differenze di parametro. Dovresti guardare la rispettiva documentazione per saperne di più.

Per installare i pacchetti puoi eseguire il comando seguente e impostare lo stato su "present" . Dovresti scegliere -b o -become flag per eseguire il modulo con sudo privilegio nei nodi gestiti. Se hai impostato la password per l'utente sudo, dovresti passare -K insieme a -b flag che richiederà il diventare password.

$ ansible all -m apt -a "name=cowsay,vim,cmatrix state=present" -b -K

Per sapere come funziona l'escalation dei privilegi, dai un'occhiata al nostro articolo utilizzando il link sottostante.

  • Autenticazione SSH Ansible ed escalation dei privilegi

Per rimuovere i pacchetti puoi eseguire il comando seguente e impostare lo stato su "assente" .

$ ansible all -m apt -a "name=cowsay,vim,cmatrix state=absent" -b -K

Fino ad ora ho mostrato come utilizzare moduli diversi per compiti diversi. Questo potrebbe averti fornito una buona comprensione di come funzionano le cose quando esegui comandi ad hoc.

Ci sono tonnellate di altri moduli e questo articolo non sarà sufficiente per esaminarli tutti. Quindi ti suggerisco di scegliere il modulo in base al tuo caso d'uso e di iniziare a esercitarti con i comandi ad hoc.

Colori di output

Quando esegui comandi ad hoc, dovresti aver visto l'output in tre colori diversi. Ogni colore ha un significato.

RED    - Failure
YELLOW - Success With Changes happened
GREEN  - Success but no changes happened

ROSSO - Fallimento

Se la tua attività non riesce, verrà stampata in rosso.

GIALLO - Successo con modifiche

Quando lo stato è impostato per cambiare, l'output sarà di colore giallo.

VERDE - Successo ma nessun cambiamento

Quando lo stato dell'oggetto non viene modificato, l'output sarà di colore verde.

Conclusione

In questo articolo abbiamo discusso su cosa sono i comandi ad hoc e su come utilizzare i comandi ad hoc in Ansible. Come principiante, i comandi ad hoc ti daranno una buona comprensione di come ansible utilizza i moduli per portare a termine un'attività. Al livello successivo, inizierai a scrivere playbook in formato YAML che verranno trattati in dettaglio in un articolo separato.

Leggi il prossimo:

  • Lavorare con i Playbook Ansible

Risorse:

  • https://docs.ansible.com/ansible/latest/user_guide/intro_adhoc.html
  • https://www.redhat.com/sysadmin/ansible-ad-hoc-commands

Linux
  1. Iniziare con Zsh

  2. Iniziare con il comando tac di Linux

  3. Introduzione a Plesk File Manager

  4. Iniziare con ls

  5. Iniziare con PostgreSQL su Linux

Guida introduttiva a GitHub

Guida introduttiva ai Playbook Ansible

Iniziare con Nix Package Manager

Iniziare con systemctl

Introduzione ai comandi di Pacman nelle distribuzioni Linux basate su Arch

Iniziare con Emacs:Spiegazione dei comandi di base