Prerequisiti
Se vuoi provare gli esempi discussi in questo articolo,
1) Devi avere Ansible installato sul tuo computer.
2) Devi avere almeno un host Ubuntu/Debian a cui puoi connetterti da Ansible.
Ci sono molti articoli su LinuxHint dedicati all'installazione di Ansible. Puoi verificarli se necessario per installare i programmi necessari sul tuo sistema.
Dovrai anche avere sshpass installato sul tuo computer, dove dovresti avere installato Ansible. Ti mostrerò come installare sshpass su Ubuntu/Debian e CentOS/RHEL in questo articolo. Non preoccuparti se non hai questi programmi già installati sul tuo sistema.
Installazione di sshpass su Ubuntu/Debian
Il programma sshpass è disponibile nel repository ufficiale dei pacchetti di Ubuntu/Debian. Puoi facilmente installare questo programma sul tuo computer.
Innanzitutto, aggiorna la cache del repository del pacchetto APT tramite il seguente comando:
$ sudo apt update
Ora installa sshpass tramite il seguente comando:
$ sudo apt install sshpass -y
sshpass dovrebbe ora essere installato.
Installazione di sshpass su CentOS 8/RHEL 8
sshpass è disponibile nel repository EPEL di CentOS 8/RHEL 8. Devi avere il repository EPEL abilitato per installare sshpass.
Innanzitutto, aggiorna la cache del repository del pacchetto DNF tramite il seguente comando:
$ sudo dnf makecache
Successivamente, installa il pacchetto del repository EPEL tramite il seguente comando:
$ sudo dnf install epel-release -y
Il pacchetto del repository EPEL dovrebbe ora essere installato e il repository EPEL dovrebbe essere abilitato.
Aggiorna nuovamente la cache del repository del pacchetto DNF, come segue:
$ sudo dnf makecache
Installare sshpass tramite il seguente comando:
$ sudo dnf install sshpass -y
sshpass dovrebbe essere installato.
Configurazione di una directory di progetto Ansible
Prima di procedere oltre, sarebbe una buona idea creare una struttura di directory del progetto, solo per mantenere le cose un po' organizzate.
Per creare una directory di progetto sshpass/ e tutte le sottodirectory richieste (nella directory di lavoro corrente), esegui il seguente comando:
$ mkdir -pv sshpass/files,playbook
Passare alla directory del progetto, come segue:
$ cd sshpass/
Creare un padroni di casa file di inventario, come segue:
$ nano host
Aggiungi il tuo IP host o il nome DNS nel file di inventario.
Una volta terminato questo passaggio, salvare il file premendo
Crea un file di configurazione Ansible nella directory del progetto, come segue:
$ nano ansible.cfg
Ora, digita le seguenti righe nel ansible.cfg file.
Una volta terminato questo passaggio, salvare il file premendo
Test dell'accesso SSH basato su password in Ansible
Quindi, prova a eseguire il ping degli host nel file di inventario, come segue:
$ ansible all -u shovon -m pingNOTA: qui, il -tu l'opzione viene utilizzata per indicare ad ansible quale utente accedere come. In questo caso, sarà l'utente shovon. Sostituisci questo nome utente con il tuo d'ora in poi, per tutta la demo.
Come puoi vedere, non sono in grado di accedere all'host ed eseguire alcun comando.
Per forzare Ansible a chiedere la password dell'utente, eseguire il comando ansible comando con il -chiedi-passa argomento, come segue:
$ ansible all -u shovon --ask-pass -m ping
Come puoi vedere, Ansible richiede la password SSH dell'utente. Ora, digita la tua password SSH (password di accesso utente) e premi
È possibile eseguire il ping dell'host come segue:
Accesso SSH basato su password Ansible per Playbookbook
Puoi utilizzare un accesso SSH basato su password quando esegui i playbook Ansible. Facciamo un esempio.
Per prima cosa, crea un nuovo playbook askpass1.igname nel libri di gioco/ rubrica, come segue:
$ nano playbook/askpass1.igname
Digita le seguenti righe nel askpass1.igname file del registro:
- host: tuttiutente: shovon
compiti:
- nome: Ping tutti gli host
ping:
- nome: stampa un messaggio
eseguire il debug:
messaggio: 'Tutto pronto'
Una volta terminato questo passaggio, salvare il file premendo
Corri il askpass1.igname playbook, come segue:
$ ansible-playbook playbooks/askpass1.igname
Come puoi vedere, non riesco a connettermi all'host. Puoi vedere che questo è perché non ho eseguito il ansible-playbook comando con il -chiedi-passa opzione.
Corri il askpass1.igname playbook con il -chiedi-passa opzione, come segue:
$ ansible-playbook -ask-pass playbooks/askpass1.igname
Come puoi vedere, Ansible richiede una password SSH. Digita la tua password SSH e premi
Il playbook askpass1.igname dovrebbe ora funzionare correttamente.
Ansible sudo Password Login per Playbook
Il -chiedi-passa l'opzione richiederà solo la password di accesso SSH. Cosa succede se si desidera digitare anche la password sudo?? Vedrai come farlo nei prossimi passaggi.
Per prima cosa, crea un nuovo playbook askpass2.igname nel libri di gioco/ rubrica, come segue:
$ nano playbook/askpass2.igname
Digita le seguenti righe nel askpass2.igname file.
- host: tuttiutente: shovon
diventa vero
compiti:
- nome: Installa il pacchetto apache2
adatto:
nome: apache2
stato: ultimo
- nome: assicurati che il servizio apache2 sia in esecuzione
servizio:
nome: apache2
stato: iniziato
abilitato: Vero
- nome: Copia indice.html al server
copia:
src: … /files/indice.html
dest: /var/www/html/index.html
modalità: 0644
proprietario: www-data
gruppo: www-data
Ecco, ho usato il comando diventa vero per dire ad Ansible di eseguire questo playbook con privilegi sudo. Una volta terminato questo passaggio, salvare il askpass2.igname file premendo
Creare un indice.html file nel File/ rubrica, come segue:
$ nano file/indice.html
Digita i seguenti codici HTML nel indice.html file:
Ciao mondo
Funziona
Una volta terminato questo passaggio, salvare il file premendo
Puoi eseguire il askpass2.igname playbook con il -chiedi-passa opzione, come segue:
$ ansible-playbook --ask-pass playbooks/askpass2.igname
Ti verrà quindi richiesta la password SSH, come prima.
Ma il playbook potrebbe non funzionare anche se fornisci la password SSH. Il motivo è che devi dire ad Ansible di richiedere la password sudo, così come la password SSH.
Puoi dire ad Ansible di chiedere la password sudo usando il -chiedi-diventa-passa opzione durante l'esecuzione del playbook, come segue:
$ ansible-playbook --ask-pass --ask-become-pass playbooks/askpass2.igname
Ora, Ansible ti chiederà la password SSH.
Successivamente, Ansible ti chiederà la password sudo. Se la tua password sudo è la stessa della password SSH (che è molto probabile), lascialo vuoto e premi
Come puoi vedere, il playbook è stato eseguito correttamente.
Configurazione dell'accesso SSH automatico basato su password e sudo Password Login
Potresti voler utilizzare SSH e sudo login basati su password, ma non vuoi digitare la password SSH e la password sudo ogni volta che esegui un playbook. Se è così, allora questa sezione è per te.
Per utilizzare l'accesso SSH basato su password e l'accesso sudo senza che venga richiesta la password, tutto ciò che devi fare è aggiungere il ansible_ssh_pass e ansible_become_pass variabili host o variabili di gruppo nel file di inventario.
Per prima cosa, apri il padroni di casa file di inventario, come segue:
$ nano host
Se hai più host nel tuo file di inventario e ognuno degli host ha password diverse, aggiungi il ansible_ssh_pass e ansible_become_pass variabili come variabili host (dopo ogni host) come segue.
Assicurati di sostituire segreto con la tua password SSH e sudo.
Se tutti o alcuni host hanno la stessa password, puoi aggiungere il ansible_ssh_pass e ansible_become_pass variabili come variabili di gruppo, come mostrato nell'esempio seguente.
Qui, ho un solo host, quindi ho aggiunto il ansible_ssh_pass e ansible_become_pass variabili per il tutti gruppo (tutti gli host nel file di inventario). Ma puoi aggiungere queste variabili anche per altri gruppi specifici.
Una volta che hai finito di aggiungere il ansible_ssh_pass e ansible_become_pass variabili in padroni di casa file di inventario, salvare il padroni di casa file di inventario premendo
Ora puoi eseguire il askpass2.igname playbook, come segue:
$ playbook ansible-playbook/askpass2.igname
Come puoi vedere, il playbook è stato eseguito correttamente, anche se non ha richiesto la password SSH o la password sudo.
Quindi, ecco come si usa sshpass per l'accesso SSH e sudo basato su password in Ansible. Grazie per aver letto questo articolo!