Come utilizzare l'accesso basato su password SSH in ANSible utilizzando SSHPASS

Come utilizzare l'accesso basato su password SSH in ANSible utilizzando SSHPASS
In questo articolo, ti mostrerò come eseguire i playbook Ansible utilizzando un accesso basato su password SSH con SSHPASS.

Prerequisiti

Se desideri 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 sistema.

Dovrai anche avere sshpass installato sul tuo computer, dove è necessario installare. Ti mostrerò come installare sshpass su Ubuntu/Debian e Centos/Rhel in questo articolo. Non preoccuparti se non si dispone di questi programmi già installati sul tuo sistema.

Installazione di SSHPAST su Ubuntu/Debian

Il programma sshpass è disponibile nel repository di pacchetti ufficiali di Ubuntu/Debian. Puoi facilmente installare questo programma sul tuo computer.

Innanzitutto, aggiorna la cache del repository del pacchetto APT tramite il comando seguente:

$ 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. È necessario avere il repository EPEL abilitato per installare SSHPASS.

Innanzitutto, aggiorna la cache del repository del pacchetto DNF tramite il seguente comando:

$ sudo dnf makecache

Quindi, installa il pacchetto Repository EPEL tramite il seguente comando:

$ sudo dnf installa epel -release -y

Il pacchetto 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 installa sshpass -y

sshpass dovrebbe essere installato.

Impostazione di una directory di progetto Ansible

Prima di andare oltre, sarebbe una buona idea creare una struttura di directory di 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 attuale), eseguire il seguente comando:

$ mkdir -pv sshpass/files, playbooks

Passare alla directory del progetto, come segue:

$ cd sshpass/

Creare un ospiti File di inventario, come segue:

$ nano hosts

Aggiungi il tuo nome IP host o DNS nel file di inventario.

Una volta terminato questo passaggio, salva il file premendo + X, seguito da Y E .

Crea un file di configurazione Ansible nella directory del progetto, come segue:

$ nano ansible.cfg

Ora, digita le seguenti righe in Ansible.cfg file.

Una volta terminato questo passaggio, salva il file premendo + X, seguito da Y E .

Testare l'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 ping

NOTA: Qui, il -u l'opzione viene utilizzata per dire ad ansible quale utente accedi come. In questo caso, sarà l'utente Shovon. Sostituisci questo nome utente con il tuo da ora in poi, durante la demo.

Come puoi vedere, non sono in grado di accedere all'host ed eseguire qualsiasi comando.

Per costringere Ansible a chiedere la password dell'utente, eseguire il Ansible comando con il -Ask-Pass argomento, come segue:

$ ansible all -u shovon --ask -pass -m ping

Come puoi vedere, Ansible chiede la password SSH dell'utente. Ora, digita la password SSH (password di accesso utente) e premere .

L'host può essere pingato, come segue:

Accesso SSH basato su password per i playbook

È possibile utilizzare un login SSH basato su password quando si esegue Ansible Playbooks. Vediamo un esempio.

Innanzitutto, crea un nuovo playbook AskPass1.Yaml nel playbooks/ Directory, come segue:

$ nano playbooks/askpass1.Yaml

Digitare le seguenti righe in AskPass1.Yaml File di playbook:

- Host: tutto
Utente: Shovon
compiti:
- Nome: ping tutti gli host
ping:
- Nome: stampa un messaggio
debug:
MSG: "Tutto set"

Una volta terminato questo passaggio, salva il file premendo + X, seguito da Y E .

Corri il AskPass1.Yaml playbook, come segue:

$ ansible-playbook playbooks/askpass1.Yaml

Come puoi vedere, non sono in grado di connettermi all'host. Puoi vedere che questo è perché non ho gestito il Ansible-Playbook comando con il -Ask-Pass opzione.

Corri il AskPass1.Yaml Playbook con il -Ask-Pass Opzione, come segue:

$ ansible-playbook -ask-pass playbooks/askpass1.Yaml

Come puoi vedere, Ansible chiede una password SSH. Digita la password SSH e premere .

Il playbook AskPass1.Yaml dovrebbe ora eseguire con successo.

Accesso di password sudo Ansible per playbooks

IL -Ask-Pass L'opzione richiederà solo la password di accesso SSH. Cosa succede se si desidera anche digitare la password sudo? Vedrai come farlo nei prossimi passi.

Innanzitutto, crea un nuovo playbook AskPass2.Yaml nel playbooks/ Directory, come segue:

$ nano playbooks/askpass2.Yaml

Digitare le seguenti righe in AskPass2.Yaml file.

- Host: tutto
Utente: Shovon
diventa vero
compiti:
- Nome: installa pacchetto Apache2
Apt:
Nome: Apache2
Stato: ultimo
- Nome: assicurarsi che il servizio Apache2 sia in esecuzione
servizio:
Nome: Apache2
Stato: iniziato
Abilitato: vero
- Nome: Copia indice.File HTML al server
copia:
SRC:… /file /indice.html
DEST:/var/www/html/indice.html
Modalità: 0644
Proprietario: WWW-DATA
Gruppo: www-data

Qui, ho usato il comando diventa vero per dire ad Ansible di eseguire questo playbook con privilegi sudo. Una volta che hai finito con questo passaggio, salva il AskPass2.Yaml File premendo + X, seguito da Y E .

Creare un indice.html file in File/ Directory, come segue:

$ nano file/indice.html

Digitare i seguenti codici HTML in indice.html file:




Home page


Ciao mondo


Funziona



Una volta terminato questo passaggio, salva il file premendo + X seguito da Y E .

Puoi eseguire il AskPass2.Yaml Playbook con il -Ask-Pass Opzione, come segue:

$ ansible-playbook-Playbooks-pass-pass/askpass2.Yaml

Ti verrà quindi chiesto la password SSH, come prima.

Ma il playbook potrebbe ancora non funzionare anche se si fornisce la password SSH. La ragione di ciò è perché devi dire ad Ansible di chiedere la password sudo, nonché la password SSH.

Puoi dire ad Ansible di chiedere la password sudo utilizzando il -Ask-Become-Pass Opzione durante l'esecuzione del playbook, come segue:

$ ansible-playbook--pass-pass --ask-become-pass playbooks/askpass2.Yaml

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 è più probabile), lasciala vuota e premi .

Come puoi vedere, il playbook ha funzionato con successo.

Configurazione dell'accesso SSH basato su password automatico e sudo di accesso password

Potresti voler utilizzare l'accesso SSH e SUDO basato su password, ma non si desidera digitare la password SSH e sudo la password ogni volta che esegui un playbook. Se è così, questa sezione fa per te.

Per utilizzare l'accesso SSH basato su password e il login sudo senza essere richiesto per le password, tutto ciò che devi fare è aggiungere il ansible_sssh_pass E ansible_become_pass Variabili host o variabili di gruppo nel tuo file di inventario.

Innanzitutto, apri il ospiti File di inventario, come segue:

$ nano hosts

Se hai più host nel tuo file di inventario e ciascuno degli host ha password diverse, aggiungi il ansible_sssh_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 degli host hanno la stessa password, puoi aggiungere il ansible_sssh_pass E ansible_become_pass variabili come variabili di gruppo, come mostrato nell'esempio seguente.

Qui, ho solo un host, quindi ho aggiunto il ansible_sssh_pass E ansible_become_pass variabili per il Tutto Gruppo (tutti gli host nel file di inventario). Ma puoi aggiungere anche queste variabili per altri gruppi specifici.

Una volta che hai finito di aggiungere il ansible_sssh_pass E ansible_become_pass variabili nel ospiti file di inventario, salva il ospiti file di inventario premendo + X, seguito da Y E .

Ora puoi eseguire il AskPass2.Yaml playbook, come segue:

$ ansible-playbook playbooks/askpass2.Yaml

Come puoi vedere, il playbook ha funzionato correttamente, anche se non ha chiesto la password SSH o la password sudo.

Quindi, è così che usi sshpass Per l'accesso SSH e sudo basato su password in Ansible. Grazie per aver letto questo articolo!