Ansible

Hur man använder SSH-lösenordsbaserad inloggning i Ansible med sshpass

Hur man använder SSH-lösenordsbaserad inloggning i Ansible med sshpass
I den här artikeln visar jag dig hur du kör Ansible playbooks med en SSH-lösenordsbaserad inloggning med sshpass.

Förutsättningar

Om du vill prova exemplen som diskuteras i den här artikeln,

1) Du måste ha Ansible installerat på din dator.
2) Du måste ha minst en Ubuntu / Debian-värd som du kan ansluta till från Ansible.

Det finns många artiklar om LinuxHint tillägnad Installera Ansible. Du kan kolla in dessa om det behövs för att installera nödvändiga program på ditt system.

Du måste också ha sshpass installerad på din dator, där du bör ha Ansible installerat. Jag visar dig hur du installerar sshpass om Ubuntu / Debian och CentOS / RHEL i den här artikeln. Oroa dig inte om du inte har dessa program redan installerade på ditt system.

Installerar sshpass på Ubuntu / Debian

Programmet sshpass finns i det officiella paketförvaret för Ubuntu / Debian. Du kan enkelt installera det här programmet på din dator.

Uppdatera först APT-paketets förvarscache via följande kommando:

$ sudo apt uppdatering

Installera nu sshpass via följande kommando:

$ sudo apt install sshpass -y

sshpass ska nu installeras.

Installerar sshpass på CentOS 8 / RHEL 8

sshpass finns i EPEL-förvaret för CentOS 8 / RHEL 8. Du måste ha EPEL-förvaret aktiverat för att installera sshpass.

Uppdatera först DNF-paketets förvarscache via följande kommando:

$ sudo dnf makecache

Installera sedan EPEL-databaspaketet med följande kommando:

$ sudo dnf installera epel-release -y

EPEL-databaspaketet ska nu installeras och EPEL-arkivet bör aktiveras.

Uppdatera DNF-paketets förvarscache igen, enligt följande:

$ sudo dnf makecache

Installera sshpass via följande kommando:

$ sudo dnf installera sshpass -y

sshpass bör installeras.

Ställa in en synlig projektkatalog

Innan vi går vidare skulle det vara bra att skapa en projektkatalogstruktur, bara för att hålla sakerna lite organiserade.

Att skapa en projektkatalog sshpass / och alla nödvändiga underkataloger (i din nuvarande arbetskatalog), kör följande kommando:

$ mkdir -pv sshpass / filer, playbooks

Navigera till projektkatalogen enligt följande:

$ cd sshpass /

Skapa en värdar inventeringsfil, enligt följande:

$ nano värdar

Lägg till ditt värd-IP- eller DNS-namn i inventeringsfilen.

När du är klar med detta steg sparar du filen genom att trycka på + X, följd av Y och .

Skapa en Ansible-konfigurationsfil i projektkatalogen enligt följande:

$ nano ansible.cfg

Skriv nu in följande rader i ansible.cfg fil.

När du är klar med detta steg sparar du filen genom att trycka på + X, följd av Y och .

Testar lösenordsbaserad SSH-inloggning i Ansible

Försök sedan att pinga värdarna i inventeringsfilen enligt följande:

$ ansible all -u shovon -m ping

NOTERA: Här, den -u alternativet används för att tala om för användaren vilken användare som ska logga in som. I det här fallet är det användaren shovon. Ersätt det här användarnamnet med ditt från och med nu, under hela demonstrationen.

Som du kan se kan jag inte logga in på värden och köra några kommandon.

För att tvinga Ansible att be om användarlösenordet, kör ansible kommando med -ask-pass argument enligt följande:

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

Som du kan se ber Ansible om SSH-lösenordet för användaren. Skriv nu in ditt SSH-lösenord (användarnamnlösenord) och tryck på .

Värden kan pingas på följande sätt:

Ansible-lösenordsbaserad SSH-inloggning för Playbooks

Du kan använda en lösenordsbaserad SSH-inloggning när du kör Ansible-spelböcker. Låt oss titta på ett exempel.

Skapa först en ny spelbok askpass1.yaml i spelböcker / katalog, enligt följande:

$ nano playbooks / askpass1.yaml

Skriv följande rader i askpass1.yaml playbook-fil:

- värdar: alla
användare: shovon
uppgifter:
- namn: Ping alla värdar
ping:
- namn: Skriv ut ett meddelande
felsöka:
msg: 'All set'

När du är klar med detta steg sparar du filen genom att trycka på + X, följd av Y och .

Springa det askpass1.yaml spelbok, enligt följande:

$ ansible-playbook playbooks / askpass1.yaml

Som du kan se kan jag inte ansluta till värden. Du kan se att detta beror på att jag inte körde ansible-playbook kommando med -ask-pass alternativ.

Springa det askpass1.yaml spelbok med -ask-pass alternativ enligt följande:

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

Som du kan se ber Ansible om ett SSH-lösenord. Skriv in ditt SSH-lösenord och tryck på .

Spelboken askpass1.yaml ska nu köras framgångsrikt.

Ansible sudo Password Login för Playbooks

De -ask-pass alternativet frågar endast SSH-inloggningslösenordet. Vad händer om du också vill skriva in sudo-lösenordet? Du kommer att se hur du gör detta i nästa steg.

Skapa först en ny spelbok askpass2.yaml i spelböcker / katalog, enligt följande:

$ nano playbooks / askpass2.yaml

Skriv följande rader i askpass2.yaml fil.

- värdar: alla
användare: shovon
bli sann
uppgifter:
- namn: Installera apache2-paketet
benägen:
namn: apache2
state: senaste
- namn: Se till att apache2-tjänsten körs
service:
namn: apache2
tillstånd: startade
aktiverat: True
- namn: Kopiera index.html-fil till servern
kopiera:
src: ... / filer / index.html
dest: / var / www / html / index.html
läge: 0644
ägare: www-data
grupp: www-data

Här har jag använt kommandot bli sann att berätta Ansible att köra den här spelboken med sudo-privilegier. När du är klar med det här steget, spara askpass2.yaml fil genom att trycka på + X, följd av Y och .

Skapa en index.html filen i filer / katalog, enligt följande:

$ nano-filer / index.html

Skriv följande HTML-koder i index.html fil:




Hemsida


Hej världen


Det fungerar



När du är klar med detta steg sparar du filen genom att trycka på + X följd av Y och .

Du kan köra askpass2.yaml spelbok med -ask-pass alternativ enligt följande:

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

Du kommer att bli ombedd att ange SSH-lösenordet, som tidigare.

Men spelboken kan fortfarande inte köras även om du anger SSH-lösenordet. Anledningen till detta är att du måste be Ansible att be om sudo-lösenordet, liksom SSH-lösenordet.

Du kan be Ansible att be om sudo-lösenordet med -fråga-bli-pass alternativ när du kör playbook, enligt följande:

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

Nu kommer Ansible att be dig om SSH-lösenordet.

Därefter kommer Ansible att be dig om sudo-lösenordet. Om ditt sudo-lösenord är detsamma som SSH-lösenordet (vilket sannolikt är), lämna det tomt och tryck .

Som du kan se körde spelboken framgångsrikt.

Konfigurera automatisk lösenordsbaserad SSH-inloggning och sudo-lösenordsinloggning

Du kanske vill använda lösenordsbaserad SSH och sudo-inloggning, men vill inte skriva in SSH-lösenordet och sudo-lösenordet varje gång du kör en spelbok. Om så är fallet är det här avsnittet något för dig.

För att använda lösenordsbaserad SSH-inloggning och sudo-inloggning utan att bli ombedd att ange lösenorden behöver du bara lägga till ansible_ssh_pass och ansible_become_pass värdvariabler eller gruppvariabler i din inventeringsfil.

Öppna först värdar inventeringsfil, enligt följande:

$ nano värdar

Om du har flera värdar i din inventeringsfil och var och en av värdarna har olika lösenord, lägg sedan till ansible_ssh_pass och ansible_become_pass variabler som värdvariabler (efter varje värd) enligt följande.

Var noga med att byta ut den hemlighet med ditt SSH- och sudo-lösenord.

Om alla eller några av värdarna har samma lösenord kan du lägga till ansible_ssh_pass och ansible_become_pass variabler som gruppvariabler, som visas i exemplet nedan.

Här har jag bara en värd, så jag har lagt till ansible_ssh_pass och ansible_become_pass variabler för Allt grupp (alla värdar i inventeringsfilen). Men du kan också lägga till dessa variabler för andra specifika grupper.

När du är klar med att lägga till ansible_ssh_pass och ansible_become_pass variabler i värdar inventeringsfil, spara värdar inventeringsfil genom att trycka på + X, följd av Y och .

Du kan nu köra askpass2.yaml spelbok, enligt följande:

$ ansible-playbook playbooks / askpass2.yaml

Som du kan se körde spelboken framgångsrikt, men den bad inte om SSH-lösenordet eller sudo-lösenordet.

Så detta är hur du använder sshpass för lösenordsbaserad SSH och sudo-inloggning i Ansible. Tack för att du läser den här artikeln!

Installera det senaste OpenRA-strategispelet på Ubuntu Linux
OpenRA är en Libre / Free Real Time Strategy-spelmotor som återskapar de tidiga Westwood-spelen som det klassiska Command & Conquer: Red Alert. Distri...
Installera senaste Dolphin Emulator för Gamecube & Wii på Linux
Dolphin Emulator låter dig spela dina valda Gamecube & Wii-spel på Linux Personal Computers (PC). Eftersom Dolphin Emulator är en fritt tillgänglig o...
Hur man använder GameConqueror Cheat Engine i Linux
Artikeln täcker en guide om hur du använder GameConqueror-fuskmotorn i Linux. Många användare som spelar spel på Windows använder ofta applikationen "...