Forutsetninger
Hvis du vil prøve eksemplene som er diskutert i denne artikkelen,
1) Du må ha Ansible installert på datamaskinen din.
2) Du må ha minst en Ubuntu / Debian-vert du kan koble deg til fra Ansible.
Det er mange artikler om LinuxHint dedikert til Installing Ansible. Du kan sjekke disse om nødvendig for å installere de nødvendige programmene på systemet ditt.
Du må også ha 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 allerede installert på systemet ditt.
Installerer 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-pakkeoppbevaringsbufferen 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 aktivert for å installere sshpass.
Oppdater først DNF-pakkeoppbevaringsbufferen via følgende kommando:
$ sudo dnf makecache
Deretter installerer du EPEL-depotpakken via følgende kommando:
$ sudo dnf installer epel-release -y
EPEL-depotpakken skal nå installeres og EPEL-depotet skal aktiveres.
Oppdater DNF-pakkeoppbevaringsbufferen igjen, som følger:
$ sudo dnf makecache
Installere sshpass via følgende kommando:
$ sudo dnf installer sshpass -y
sshpass skal installeres.
Sette opp en synlig prosjektkatalog
Før vi går videre, vil det være lurt å lage en prosjektkatalogstruktur, bare for å holde ting litt organisert.
Å lage en prosjektkatalog sshpass / og alle nødvendige underkataloger (i din nåværende arbeidskatalog), kjør følgende kommando:
$ mkdir -pv sshpass / filer, spillbøker
Naviger til prosjektkatalogen, som følger:
$ cd sshpass /
Lage en verter inventarfil, som følger:
$ nano verter
Legg til vertsens IP- eller DNS-navn i lagerfilen.
Når du er ferdig med dette trinnet, lagrer du filen ved å trykke på
Opprett en Ansible-konfigurasjonsfil i prosjektkatalogen, som følger:
$ nano ansible.cfg
Skriv inn følgende linjer i ansible.cfg fil.
Når du er ferdig med dette trinnet, lagrer du filen ved å trykke på
Testing av passordbasert SSH-pålogging i Ansible
Deretter prøver du å pinge vertene i lagerfilen, som følger:
$ ansible all -u shovon -m pingMERK: Her, den -u alternativet brukes til å fortelle hvilken bruker som skal logge på som. I dette tilfellet vil det være brukeren shovon. Bytt ut dette brukernavnet med ditt fra nå av, gjennom hele demonstrasjonen.
Som du kan se, kan jeg ikke logge på verten og kjøre noen kommandoer.
For å tvinge Ansible til å be om brukerpassordet, kjør ansible kommando med -spør-pass argument, som følger:
$ ansible all -u shovon --ask-pass -m ping
Som du kan se, ber Ansible om SSH-passordet til brukeren. Nå skriver du inn SSH-passordet ditt (brukerinnloggingspassord) og trykker på
Verten kan pinges, som følger:
Ansible passordbasert SSH-pålogging for Playbooks
Du kan bruke en passordbasert SSH-pålogging når du kjører Ansible playbooks. La oss se på et eksempel.
Først oppretter du en ny lekebok askpass1.yaml i lekebøker / katalog, som følger:
$ nano playbooks / askpass1.yaml
Skriv inn følgende linjer i askpass1.yaml playbook-fil:
- verter: allebruker: shovon
oppgaver:
- navn: Ping alle vertene
ping:
- navn: Skriv ut en melding
feilsøke:
msg: 'All set'
Når du er ferdig med dette trinnet, lagrer du filen ved å trykke på
Kjør askpass1.yaml spillbok, som følger:
$ ansible-playbook playbooks / askpass1.yaml
Som du kan se, kan jeg ikke koble meg til verten. Du kan se at dette er fordi jeg ikke kjørte ansible-playbook kommando med -spør-pass alternativ.
Kjør askpass1.yaml lekebok med -spør-pass som følger:
$ ansible-playbook -ask-pass playbooks / askpass1.yaml
Som du kan se, ber Ansible om et SSH-passord. Skriv inn SSH-passordet ditt og trykk
Lekeboken askpass1.yaml skal nå kjøre vellykket.
Ansible sudo Passord Pålogging for Playbooks
De -spør-pass alternativet vil bare be om SSH-påloggingspassordet. Hva om du også vil skrive inn sudo-passordet? Du vil se hvordan du gjør dette i de neste trinnene.
Først oppretter du en ny lekebok askpass2.yaml i lekebøker / katalog, som følger:
$ nano playbooks / askpass2.yaml
Skriv inn følgende linjer i askpass2.yaml fil.
- verter: allebruker: shovon
bli: Sant
oppgaver:
- navn: Installer apache2-pakke
apt:
navn: apache2
tilstand: siste
- navn: Kontroller at apache2-tjenesten kjører
service:
navn: apache2
tilstand: startet
aktivert: Sant
- navn: Kopier indeks.html-fil til server
kopiere:
src: ... / filer / indeks.html
dest: / var / www / html / index.html
modus: 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, lagrer du askpass2.yaml filen ved å trykke på
Lag en indeks.html filen i filer / katalog, som følger:
$ nano filer / indeks.html
Skriv inn følgende HTML-koder i indeks.html fil:
Hei Verden
Det fungerer
Når du er ferdig med dette trinnet, lagrer du filen ved å trykke på
Du kan kjøre askpass2.yaml lekebok med -spør-pass som følger:
$ ansible-playbook --ask-pass playbooks / askpass2.yaml
Du blir da bedt om SSH-passordet, som før.
Men spillboken kan fortsatt ikke kjøres selv om du oppgir SSH-passordet. Årsaken til dette er fordi du må be Ansible om å be om sudo-passordet, samt SSH-passordet.
Du kan be Ansible om å be om sudo-passordet ved hjelp av -spør-bli-pass alternativet mens du kjører spillboken, som følger:
$ ansible-playbook --ask-pass --ask-become-pass playbooks / 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), la det være tomt og trykk
Som du kan se, kjørte spillboken vellykket.
Konfigurere automatisk passordbasert SSH-pålogging og sudo-passordinnlogging
Det kan være lurt å bruke passordbasert SSH og sudo-pålogging, men ikke ønsker å skrive inn SSH-passordet og sudo-passordet hver gang du kjører en spillbok. Hvis det er tilfelle, er denne delen noe for deg.
For å bruke passordbasert SSH-pålogging 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 lagerfilen din.
Først åpner du verter inventarfil, som følger:
$ nano verter
Hvis du har flere verter i lagerfilen din, og hver av vertene har forskjellige passord, legg deretter til ansible_ssh_pass og ansible_become_pass variabler som vertsvariabler (etter hver vert) som følger.
Pass på å bytte ut 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 lagerfilen). 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 lagerfil ved å trykke
Du kan nå kjøre askpass2.yaml spillbok, som følger:
$ ansible-playbook playbooks / askpass2.yaml
Som du kan se, kjørte spillboken vellykket, selv om den ikke ba om SSH-passordet eller sudo-passordet.
Så dette er hvordan du bruker sshpass for passordbasert SSH og sudo-pålogging i Ansible. Takk for at du leser denne artikkelen!