Hvordan bruke SSH-passordbasert innlogging i Ansible ved hjelp av SSHpass

Hvordan bruke SSH-passordbasert innlogging i Ansible ved hjelp av SSHpass
I denne artikkelen vil jeg vise deg hvordan du kjører Ansible Playbooks ved hjelp av en SSH-passordbasert innlogging med SSHpass.

Forutsetninger

Hvis du vil prøve eksemplene som er omtalt i denne artikkelen,

1) Du må ha Ansible installert på datamaskinen din.
2) Du må ha minst en Ubuntu/Debian -vert som du kan koble til fra Ansible.

Det er mange artikler om Linuxhint dedikert til å installere Ansible. Du kan sjekke disse om nødvendig for å installere de nødvendige programmene på systemet ditt.

Du må også ha det sshpass installert på datamaskinen din, hvor du skal ha Ansible installert. Jeg vil vise deg hvordan du installerer sshpass På Ubuntu/Debian og Centos/RHEL i denne artikkelen. Ikke bekymre deg hvis du ikke har disse programmene som allerede er installert på systemet ditt.

Installere sshpass på Ubuntu/Debian

Programmet sshpass er tilgjengelig i det offisielle pakkelageret til Ubuntu/Debian. Du kan enkelt installere dette programmet på datamaskinen din.

Oppdater først Apt Package Repository Cache via følgende kommando:

$ sudo apt oppdatering

Nå, installer sshpass via følgende kommando:

$ sudo apt install sshpass -y

SSHpass skal nå installeres.

Installere sshpass på centos 8/rhel 8

sshpass er tilgjengelig i Epel -depotet til Centos 8/RHEL 8. Du må ha EPEL -depotet i stand til å installere SSHPASS.

Oppdater først DNF Package Repository Cache via følgende kommando:

$ sudo dnf makecache

Deretter installerer du Epel -depotpakken via følgende kommando:

$ sudo dnf installer epel -release -y

Epel Repository -pakken skal nå installeres, og Epel -depotet skal være aktivert.

Oppdater DNF -pakkelagdebufferen igjen, som følger:

$ sudo dnf makecache

Installere sshpass via følgende kommando:

$ sudo dnf install sshpass -y

sshpass skal installeres.

Sette opp en Ansible Project Directory

Før vi går videre, vil det være en god idé å lage en prosjektkatalogstruktur, bare for å holde ting litt organisert.

For å lage en prosjektkatalog sshpass/ Og alle nødvendige underkataloger (i din nåværende arbeidskatalog), kjør følgende kommando:

$ mkdir -pv sshpass/filer, playbooks

Naviger til prosjektkatalogen, som følger:

$ cd sshpass/

Lage en verter Lagerfil, som følger:

$ Nano -verter

Legg til verts -IP -en eller DNS -navnet i varelagerfilen.

Når du er ferdig med dette trinnet, må du lagre filen ved å trykke på + X, etterfulgt av Y og .

Opprett en Ansible konfigurasjonsfil i prosjektkatalogen, som følger:

$ Nano Ansible.CFG

Nå, skriv inn følgende linjer i Ansible.CFG fil.

Når du er ferdig med dette trinnet, må du lagre filen ved å trykke på + X, etterfulgt av Y og .

Testing av passordbasert SSH-innlogging i Ansible

Prøv deretter å pinge vertene i varelagerfilen, som følger:

$ ansible all -u shovon -m ping

MERK: Her, The -u alternativet brukes til å fortelle Ansible hvilken bruker som skal logge seg på som. I dette tilfellet vil det være brukeren Shovon. Bytt ut dette brukernavnet med ditt fra nå av, gjennom hele demoen.

Som du kan se, kan jeg ikke logge på verten og kjøre noen kommandoer.

For å tvinge fra det å be om brukerpassordet, kjører du Ansible kommando med -Ask-Pass argument, som følger:

$ Ansible All -u Shovon -ASK -PASS -M PING

Som du ser ber Ansible om brukerens SSH -passord. Skriv inn SSH -passordet ditt (brukerpåloggingspassord) og trykk .

Verten kan pinges, som følger:

Ansible passordbasert SSH-pålogging for spillbøker

Du kan bruke en passordbasert SSH-pålogging når du kjører Ansible Playbooks. La oss se på et eksempel.

Først må du lage en ny spillbok AskPass1.Yaml i Playbooks/ Katalog, som følger:

$ nano playbooks/AskPass1.Yaml

Skriv inn følgende linjer i AskPass1.Yaml Playbook -fil:

- Verter: Alle
Bruker: Shovon
oppgaver:
- Navn: Ping alle verter
Ping:
- Navn: Skriv ut en melding
Debug:
MSG: 'All Set'

Når du er ferdig med dette trinnet, må du lagre filen ved å trykke på + X, etterfulgt av Y og .

Kjør AskPass1.Yaml Playbook, som følger:

$ Ansible-Playbook Playbooks/AskPass1.Yaml

Som du kan se, er jeg ikke i stand til å koble meg til verten. Du kan se at dette er fordi jeg ikke kjørte Ansible-Playbook kommando med -Ask-Pass alternativ.

Kjør AskPass1.Yaml Playbook med -Ask-Pass Alternativ, som følger:

$ Ansible-Playbook -ask-Pass Playbooks/AskPass1.Yaml

Som du ser ber Ansible om et SSH -passord. Skriv inn SSH -passordet ditt og trykk .

Playbook AskPass1.Yaml skal nå løpe med hell.

Ansible sudo passord pålogging for spillbøker

De -Ask-Pass Alternativet vil bare be om SSH -påloggingspassordet. Hva om du også ønsker å skrive inn sudo -passordet? Du vil se hvordan du gjør dette i de neste trinnene.

Først må du lage en ny spillbok AskPass2.Yaml i Playbooks/ Katalog, som følger:

$ nano playbooks/AskPass2.Yaml

Skriv inn følgende linjer i AskPass2.Yaml fil.

- Verter: Alle
Bruker: Shovon
bli: sant
oppgaver:
- Navn: Installer Apache2 -pakken
apt:
Navn: Apache2
Stat: Siste
- Navn: Forsikre deg om at Apache2 -tjenesten kjører
service:
Navn: Apache2
Stat: startet
Aktivert: True
- Navn: Kopierindeks.HTML -fil til serveren
kopiere:
SRC:… /Filer /indeks.html
dest:/var/www/html/indeks.html
Mode: 0644
Eier: www-data
Gruppe: www-data

Her har jeg brukt kommandoen bli: sant å fortelle Ansible å kjøre denne spillboken med sudo -privilegier. Når du er ferdig med dette trinnet, må du lagre AskPass2.Yaml fil ved å trykke på + X, etterfulgt av Y og .

Lage en indeks.html fil i Filer/ Katalog, som følger:

$ nano -filer/indeks.html

Skriv inn følgende HTML -koder i indeks.html fil:




Hjemmeside


Hei Verden


Det fungerer



Når du er ferdig med dette trinnet, må du lagre filen ved å trykke på + X etterfulgt av Y og .

Du kan kjøre AskPass2.Yaml Playbook med -Ask-Pass Alternativ, som følger:

$ Ansible-Playbook-ASK-Pass Playbooks/AskPass2.Yaml

Du blir da bedt om SSH -passordet, som før.

Men spillboken kjører kanskje ikke selv om du oppgir SSH -passordet. Årsaken til dette er fordi du må fortelle Ansible om å be om Sudo -passordet, så vel som SSH -passordet.

Du kan be Ansible be om sudo -passordet ved å bruke -Ask-Become-Pass Alternativ mens du kjører spillboken, som følger:

$ Ansible-Playbook-ASK-PASS-ASK-BECOME-PASS-spillbøker/AskPass2.Yaml

Nå vil Ansible be deg om SSH -passordet.

Deretter vil Ansible be deg om sudo -passordet. Hvis sudo -passordet ditt er det samme som SSH -passordet (som er mest sannsynlig), kan du la det være tomt og trykk .

Som du ser kjørte spillboken vellykket.

Konfigurere automatisk passordbasert SSH-pålogging og SUDO-passordpålogging

Det kan være lurt å bruke passordbasert SSH og SUDO-pålogging, men ikke vil skrive inn SSH-passordet og sudo-passordet hver gang du kjører en spillbok. Hvis det er tilfelle, er denne delen for deg.

For å bruke passordbasert SSH-innlogging og sudo-pålogging uten å bli bedt om passordene, er alt du trenger å gjøre å legge til Ansible_ssh_pass og Ansible_become_pass vertsvariabler eller gruppevariabler i varelagerfilen din.

Først, åpne verter Lagerfil, som følger:

$ Nano -verter

Hvis du har flere verter i lagerfilen din og hver av vertene har forskjellige passord, kan du legge til Ansible_ssh_pass og Ansible_become_pass variabler som vertsvariabler (etter hver vert) som følger.

Sørg for å erstatte hemmelig Med SSH- og SUDO -passordet ditt.

Hvis alle eller noen av vertene har samme passord, kan du legge til Ansible_ssh_pass og Ansible_become_pass variabler som gruppevariabler, som vist i eksemplet nedenfor.

Her har jeg bare en vert, så jeg har lagt til Ansible_ssh_pass og Ansible_become_pass variabler for alle gruppe (alle verter i varelagerfilen). Men du kan også legge til disse variablene for andre spesifikke grupper.

Når du er ferdig med å legge til Ansible_ssh_pass og Ansible_become_pass variabler i verter Lagerfil, lagre verter Inventarfil ved å trykke på + X, etterfulgt av Y og .

Du kan nå kjøre AskPass2.Yaml Playbook, som følger:

$ Ansible-Playbook Playbooks/AskPass2.Yaml

Som du ser, kjørte spillboken vellykket, selv om den ikke ba om SSH -passordet eller Sudo -passordet.

Så det er slik du bruker sshpass For passordbasert SSH og SUDO-pålogging i Ansible. Takk for at du leste denne artikkelen!