Il comando Ad-Hoc è il comando ansible one-liner che esegue un'attività sull'host di destinazione. Ti consente di eseguire semplici attività su una riga su uno o un gruppo di host definiti nella configurazione del file di inventario. Un comando Ad-Hoc avrà solo due parametri, il gruppo di un host su cui si desidera eseguire l'attività e il modulo Ansible da eseguire.
Il comando Ad-Hoc ti dà più vantaggio per esplorare ansible stesso. Puoi eseguire attività senza prima creare un playbook, come il riavvio dei server, la gestione dei servizi, la modifica della configurazione della linea, la copia di un file su un solo host, l'installazione di un solo pacchetto.
In questo tutorial, mostrerò l'utilizzo di base del comando Ansible Ad-Hoc. Userò il comando Ad-Hoc per eseguire semplici attività che potrebbero essere necessarie per la tua base quotidiana come amministratore di sistema.
Prerequisiti
Per questa guida utilizzeremo due server LTS Ubuntu 18.04, Bionic Beaver. Il server ansible riceverà il nome host 'ansible-node' con l'indirizzo IP 10.5.5.20 e il server di provisioning con il nome host 'provision' e l'indirizzo IP 10.5.5.21.
Cosa faremo?
- Comando ad hoc di base
- Trasferimento di file
- Aggiorna e aggiorna
- Gestisci pacchetto
- Gestisci servizi
- Sistema di verifica
Utilizzo di base dei comandi ad hoc
In primo luogo, impareremo l'utilizzo di base di Ansible Ad-Hoc per la gestione dei server. Impareremo il comando di base di Ansible Ad-Hoc, utilizzando il comando Ad-Hoc con l'autenticazione della password ssh, l'escalation dei privilegi e utilizzando il comando Ad-Hoc contro un gruppo di host.
1. Comando di base
Il comando di base di ansible ad-hoc contro "tutti" gli host nel file di inventario e utilizzando il modulo "ping".
ansible all -m ping
- Il primo parametro 'tutti' per tutti gli host nel file di inventario.
- Il secondo parametro all'interno dell'opzione '-m' per il modulo, che esegue il modulo ping.
Ora otterrai il risultato come di seguito.
Un comando ad-hoc contro il server di provisioning è stato "SUCCESS" senza alcuna modifica apportata al server e otteniamo il risultato del modulo "ping" dal server di provisioning "pong".
2. Filtra gruppo host e host singolo
Ora puoi utilizzare il comando Ad-Hoc contro un gruppo di host che sono già definiti nel file di inventario. Puoi utilizzare il tuo file di inventario personalizzato o il file di inventario predefinito "/etc/ansible/hosts".
Di seguito è riportato un esempio per eseguire il comando ad-hoc sul gruppo di host chiamato 'hakase-testing' che sono già definiti nel file di configurazione dell'inventario predefinito.
ansible hakase-testing -m setup -a "filter=ansible_distribution*"
Se stai utilizzando il file di inventario personalizzato, aggiungi l'opzione "-i" dopo il nome del file di inventario.
ansible hakase-testing -i hosts -m setup -a "filter=ansible_distribution*"
Otterrai lo stesso risultato.
Ora, se desideri eseguire su un singolo host nella configurazione dell'inventario, puoi utilizzare il nome dell'host come di seguito.
ansible provision -m setup -a "filter=ansible_distribution*"
E il comando ad-hoc verrà eseguito solo sul server di "provisioning".
3. Utilizzo della password SSH
Ora eseguiremo un comando ad-hoc utilizzando l'autenticazione della password ssh richiesta. E per fare ciò, devi installare il pacchetto aggiuntivo chiamato 'sshpass' su 'ansible-node'.
Installa il pacchetto sshpass usando il comando apt di seguito.
sudo apt install sshpass -y
Ora esegui il comando ad-hoc e aggiungi l'opzione '--ask-pass' alla fine.
ansible hakase-testing -m ping --ask-pass
E ti verrà chiesta la 'Password SSH' per il server.
Digita la tua password ssh e il comando ad-hoc verrà eseguito sul server.
4. Escalation dei privilegi
Ansible fornisce funzionalità per l'escalation dei privilegi rispetto ai server. Se desideri eseguire il comando ad-hoc come utente non root, puoi utilizzare l'opzione '--become' per ottenere i privilegi di root e l'opzione '-K' per richiedere la password.
Esegui il comando ad hoc 'fdisk -l' come utente 'hakase' con l'opzione di privilegio '--become' e '-K' per richiedere la 'SUDO Password'.
ansible hakase-testing -m shell -a 'fdisk -l' -u hakase --become -K
Di seguito il risultato.
Trasferimento file
Ora utilizzeremo il comando Ad-Hoc per il trasferimento di file da e verso il server. Possiamo trasferire un file al server di provisioning con il modulo "copia" e scaricare il file dal server utilizzando il modulo "recupera".
1. Carica file sull'host
Per questo esempio, eseguiremo il comando ad-hoc e utilizzeremo il modulo 'copy' per caricare la configurazione sudoers per l'utente hakase nella directory '/etc/sudoers.d' nel gruppo 'hakase-testing'.
Esegui il comando ad hoc di seguito.
ansible hakase-testing -m copy -a 'src=/home/hakase/hakase-sudo.conf dest=/etc/sudoers.d/hakase owner=root mode=0644' -u hakase --become -K
Ora ti verrà richiesta la "Password SUDO" per l'utente hakase. Digita la password e otterrai il risultato come di seguito.
Il file è stato caricato nella directory di destinazione "destinazione" e ottieni il risultato "modificato" come "vero".
2. Scarica il file dall'host
Ora utilizzeremo un comando ad hoc con il modulo 'fetch' per scaricare il file dal server di provisioning al server 'ansible-node' locale.
Scarica il file di configurazione '/etc/sudoers.d/hakase' dal server 'provision' nella directory locale chiamata 'backup'.
ansible provision -m fetch -a 'src=/etc/sudoers.d/hakase dest=/home/hakase/backup/hakase-sudoers flat=yes'
E otterrai il file chiamato 'hakase-sudoers' nella directory 'backup'.
Passaggio 3:aggiornamento del repository e pacchetti di aggiornamento
Per aggiornare e aggiornare il repository dei server Ubuntu, possiamo utilizzare il comando ad-hoc con il modulo apt.
Aggiorna il repository sul test hakase di gruppo.
ansible hakase-testing -m apt -a 'update_cache=yes' --become
Ora aggiorna i repository e aggiorna tutti i pacchetti all'ultima versione utilizzando l'opzione 'upgrade=dist'.
ansible hakase-testing -m apt -a 'upgrade=dist update_cache=yes' --become
Attendi che tutti i pacchetti vengano aggiornati.
Gestisci pacchetti
Questo è molto utile quando stai cercando di creare ed eseguire il debug del tuo playbook. Perché a volte è necessario un pacchetto aggiuntivo da installare sul sistema. Quindi, questo comando ad hoc ti fornirà un modo semplice per installare quel pacchetto senza accedere a ciascun server.
1. Installa il pacchetto
Installa un singolo pacchetto usando il comando ad-hoc con il modulo apt come di seguito.
ansible hakase-testing -m apt -a 'name=nginx state=latest' --become
2. Rimuovi pacchetto
Rimuovi il pacchetto ed elimina tutta la configurazione relativa al pacchetto.
ansible hakase-testing -m apt -a 'name=nginx state=absent purge=yes' --become
3. Rimozione automatica
L'esempio seguente rimuove il pacchetto nginx ed elimina tutta la configurazione correlata, quindi rimuove tutti i pacchetti inutilizzati sul sistema.
ansible hakase-testing -m apt -a 'name=nginx state=absent purge=yes autoremove=yes' --become
Gestisci servizi
In questo passaggio, utilizzeremo il modulo di servizio sul comando ad-hoc per la gestione del servizio di sistema sul server di provisioning.
1. Avvia Servizi
Avvia il servizio nginx e aggiungilo all'ora di avvio.
ansible hakase-testing -m service -a 'name=nginx state=started enabled=yes' --become
Otterrai il risultato "modificato" e "abilitato" come "vero".
2. Riavvia il servizio
Se desideri riavviare il servizio, puoi utilizzare il seguente comando.
ansible hakase-testing -m service -a 'name=nginx state=restarted' --become
Il servizio nginx è stato riavviato.
3. Arresta un servizio
Per interrompere il servizio, cambia il valore "stato" in "arrestato".
ansible hakase-testing -m service -a 'name=nginx state=stopped' --become
Il servizio nginx sui server 'hakase-testing' è stato interrotto.
Controllo del sistema
Ora useremo il modulo 'shell' all'interno del comando ad-hoc. E faremo un semplice monitoraggio del sistema usando un semplice comando Linux attraverso l'ad-hoc di Ansible.
Innanzitutto, installa il pacchetto 'sysstat' su tutti i server utilizzando il comando ad hoc riportato di seguito.
ansible hakase-testing -m apt -a 'name=sysstat state=latest' --become
Attendi l'installazione del pacchetto 'sysstat'.
Una volta completato, sei pronto per controllare tutti i server.
1. Disco disponibile
Controlla il disco disponibile sulla partizione di root usando il comando fdisk.
ansible hakase-testing -m shell -a 'df -h /dev/sda2' --become
Cambia '/dev/sda2' con il tuo percorso.
2. Utilizzo della memoria RAM
Ora controlla l'utilizzo della memoria RAM su tutti i server usando il comando 'free -m'.
ansible hakase-testing -m shell -a 'free -m' --become
E ti verrà mostrato il risultato come di seguito.
3. Utilizzo della CPU
Verifica dell'utilizzo della CPU di tutti i server utilizzando il comando mpstat.
ansible hakase-testing -m shell -a 'mpstat -P ALL' --become
Il comando mpstat fa parte del pacchetto 'sysstat'.
4. Porte aperte
Controllo delle porte aperte su tutto il sistema utilizzando netstat tramite il comando ad-hoc.
ansible hakase-testing -m shell -a 'netstat -plntu' --become
5. Tempo di attività
Ora controlla il tempo di attività di ciascun server.
ansible hakase-testing -m shell -a 'uptime' --become