Synlig

Sådan bruges SSH adgangskodebaseret login i Ansible ved hjælp af sshpass

Sådan bruges SSH adgangskodebaseret login i Ansible ved hjælp af sshpass
I denne artikel vil jeg vise dig, hvordan du kører Ansible playbooks ved hjælp af et SSH-adgangskodebaseret login med sshpass.

Forudsætninger

Hvis du gerne vil prøve eksemplerne, der er diskuteret i denne artikel,

1) Du skal have Ansible installeret på din computer.
2) Du skal have mindst en Ubuntu / Debian-vært, som du kan oprette forbindelse til fra Ansible.

Der er mange artikler om LinuxHint dedikeret til Installation af Ansible. Du kan tjekke disse ud, hvis det er nødvendigt for at installere de nødvendige programmer på dit system.

Du bliver også nødt til at have sshpass installeret på din computer, hvor Ansible skal være installeret. Jeg viser dig, hvordan du installerer sshpass om Ubuntu / Debian og CentOS / RHEL i denne artikel. Bare rolig, hvis du ikke har disse programmer allerede installeret på dit system.

Installation af sshpass på Ubuntu / Debian

Programmet sshpass er tilgængelig i det officielle pakkeopbevaringssted for Ubuntu / Debian. Du kan nemt installere dette program på din computer.

Opdater først APT-pakkeopbevaringscachen via følgende kommando:

$ sudo apt opdatering

Installer nu sshpass via følgende kommando:

$ sudo apt install sshpass -y

sshpass skal nu installeres.

Installation af sshpass på CentOS 8 / RHEL 8

sshpass er tilgængelig i EPEL-arkivet til CentOS 8 / RHEL 8. Du skal have EPEL-lageret aktiveret for at installere sshpass.

Opdater først DNF-pakkeopbevaringscachen via følgende kommando:

$ sudo dnf makecache

Installer derefter EPEL repository-pakken via følgende kommando:

$ sudo dnf installer epel-release -y

EPEL repository-pakken skal nu installeres, og EPEL repository skal aktiveres.

Opdater DNF-pakkeopbevaringscachen igen som følger:

$ sudo dnf makecache

Installere sshpass via følgende kommando:

$ sudo dnf installer sshpass -y

sshpass skal installeres.

Opsætning af en anvendelig projektmappe

Før vi går videre, ville det være en god ide at oprette en projektmappestruktur, bare for at holde tingene lidt organiserede.

For at oprette et projektmappe sshpass / og alle de krævede underkataloger (i din nuværende arbejdsmappe), kør følgende kommando:

$ mkdir -pv sshpass / filer, playbooks

Naviger til projektmappen som følger:

$ cd sshpass /

Lave en værter opgørelsesfil som følger:

$ nano værter

Tilføj dit værts-IP- eller DNS-navn i lagerfilen.

Når du er færdig med dette trin, skal du gemme filen ved at trykke på + x, efterfulgt af Y og .

Opret en Ansible-konfigurationsfil i projektmappen som følger:

$ nano ansible.cfg

Skriv nu de følgende linjer i ansible.cfg fil.

Når du er færdig med dette trin, skal du gemme filen ved at trykke på + x, efterfulgt af Y og .

Test af adgangskodebaseret SSH-login i Ansible

Prøv derefter at pinge værterne i opgørelsesfilen som følger:

$ ansible all -u shovon -m ping

BEMÆRK: Her, den -u indstilling bruges til at fortælle ansible, hvilken bruger der skal logge ind som. I dette tilfælde vil det være brugeren shovon. Udskift dette brugernavn med dit fra nu af i hele demo'en.

Som du kan se, er jeg ikke i stand til at logge ind på værten og køre nogen kommandoer.

For at tvinge Ansible til at bede om brugeradgangskoden skal du køre ansible kommando med -ask-pass argument som følger:

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

Som du kan se, beder Ansible om brugerens SSH-adgangskode. Indtast nu din SSH-adgangskode (adgangskode til brugerlogin) og tryk på .

Værten kan pinges som følger:

Ansible adgangskodebaseret SSH-login til Playbooks

Du kan bruge et adgangskodebaseret SSH-login, når du kører Ansible playbooks. Lad os se på et eksempel.

Opret først en ny playbook askpass1.yaml i legebøger / katalog, som følger:

$ nano playbooks / askpass1.yaml

Skriv følgende linjer i askpass1.yaml playbook-fil:

- værter: alle
bruger: shovon
opgaver:
- navn: Ping alle værter
ping:
- navn: Udskriv en besked
fejlfinde:
msg: 'All set'

Når du er færdig med dette trin, skal du gemme filen ved at trykke på + x, efterfulgt af Y og .

Kør askpass1.yaml playbook som følger:

$ ansible-playbook playbooks / askpass1.yaml

Som du kan se, kan jeg ikke oprette forbindelse til værten. Du kan se, at dette er fordi jeg ikke kørte ansible-playbook kommando med -ask-pass mulighed.

Kør askpass1.yaml legebog med -ask-pass mulighed som følger:

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

Som du kan se, beder Ansible om en SSH-adgangskode. Indtast din SSH-adgangskode, og tryk på .

Playbook askpass1.yaml skal nu køre med succes.

Ansible sudo Password Login til Playbooks

Det -ask-pass mulighed beder kun om SSH-loginadgangskoden. Hvad hvis du også ønsker at indtaste sudo-adgangskoden? Du vil se, hvordan du gør dette i de næste trin.

Opret først en ny playbook askpass2.yaml i legebøger / katalog, som følger:

$ nano playbooks / askpass2.yaml

Skriv følgende linjer i askpass2.yaml fil.

- værter: alle
bruger: shovon
blive: Sandt
opgaver:
- navn: Installer apache2-pakke
apt:
navn: apache2
tilstand: seneste
- navn: Sørg for, at apache2-tjenesten kører
service:
navn: apache2
tilstand: startet
aktiveret: Sandt
- navn: Kopier indeks.html-fil til server
kopi:
src:… / filer / indeks.html
dest: / var / www / html / index.html
tilstand: 0644
ejer: www-data
gruppe: www-data

Her har jeg brugt kommandoen blive: Sandt at bede Ansible om at køre denne playbook med sudo-privilegier. Når du er færdig med dette trin, skal du gemme askpass2.yaml fil ved at trykke på + x, efterfulgt af Y og .

Opret en indeks.html fil i filer / katalog, som følger:

$ nano filer / indeks.html

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




Hjemmeside


Hej Verden


Det virker



Når du er færdig med dette trin, skal du gemme filen ved at trykke på + x efterfulgt af Y og .

Du kan køre askpass2.yaml legebog med -ask-pass mulighed som følger:

$ ansible-playbook --ask-pass playbooks / askpass2.yaml

Du bliver derefter bedt om SSH-adgangskoden som før.

Men playbook kører muligvis muligvis ikke, selvom du angiver SSH-adgangskoden. Årsagen til dette er, fordi du skal bede Ansible om at bede om sudo-adgangskoden samt SSH-adgangskoden.

Du kan bede Ansible om at bede om sudo-adgangskoden ved hjælp af -spørg-blive-pass mulighed, mens du kører playbook, som følger:

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

Ansible vil nu bede dig om SSH-adgangskoden.

Derefter beder Ansible dig om sudo-adgangskoden. Hvis din sudo-adgangskode er den samme som SSH-adgangskoden (hvilket sandsynligvis er), skal du lade den være tom og trykke på .

Som du kan se, kørte playbook med succes.

Konfiguration af automatisk adgangskodebaseret SSH-login og sudo-adgangskode-login

Du ønsker muligvis at bruge adgangskodebaseret SSH- og sudo-login, men ikke ønsker at indtaste SSH-adgangskoden og sudo-adgangskoden hver gang du kører en playbook. Hvis det er tilfældet, er dette afsnit noget for dig.

Hvis du vil bruge adgangskodebaseret SSH-login og sudo-login uden at blive bedt om adgangskoderne, skal du blot tilføje ansible_ssh_pass og ansible_become_pass værtsvariabler eller gruppevariabler i din beholdningsfil.

Først skal du åbne værter opgørelsesfil som følger:

$ nano værter

Hvis du har flere værter i din beholdningsfil, og hver af værterne har forskellige adgangskoder, skal du tilføje ansible_ssh_pass og ansible_become_pass variabler som værtsvariabler (efter hver vært) som følger.

Sørg for at udskifte den hemmelighed med din SSH- og sudo-adgangskode.

Hvis alle eller nogle af værterne har den samme adgangskode, kan du tilføje ansible_ssh_pass og ansible_become_pass variabler som gruppevariabler, som vist i eksemplet nedenfor.

Her har jeg kun én vært, så jeg har tilføjet ansible_ssh_pass og ansible_become_pass variabler til alle gruppe (alle værter i opgørelsesfilen). Men du kan også tilføje disse variabler til andre specifikke grupper.

Når du er færdig med at tilføje ansible_ssh_pass og ansible_become_pass variabler i værter lagerfil, gem værter lagerfil ved at trykke på + x, efterfulgt af Y og .

Du kan nu køre askpass2.yaml playbook som følger:

$ ansible-playbook playbooks / askpass2.yaml

Som du kan se, kørte playbogen med succes, selvom den ikke bad om SSH-adgangskoden eller sudo-adgangskoden.

Så dette er, hvordan du bruger sshpass til adgangskodebaseret SSH og sudo-login i Ansible. Tak fordi du læste denne artikel!

Nyttige værktøjer til Linux-spillere
Hvis du kan lide at spille spil på Linux, er chancerne for, at du måske har brugt apps og hjælpeprogrammer som Wine, Lutris og OBS Studio for at forbe...
HD Remastered-spil til Linux, der aldrig tidligere havde haft en Linux-udgivelse
Mange spiludviklere og udgivere kommer med HD-remaster af gamle spil for at forlænge franchisens levetid. Venligst fans, der anmoder om kompatibilitet...
Sådan bruges AutoKey til at automatisere Linux-spil
AutoKey er et desktopautomatiseringsværktøj til Linux og X11, programmeret i Python 3, GTK og Qt. Ved hjælp af dets scripting og MACRO-funktionalitet ...