Ansible

Hoe op SSH op wachtwoord gebaseerde aanmelding in Ansible te gebruiken met sshpass

Hoe op SSH op wachtwoord gebaseerde aanmelding in Ansible te gebruiken met sshpass
In dit artikel laat ik je zien hoe je Ansible-playbooks uitvoert met een SSH-wachtwoordgebaseerde login met sshpass.

Vereisten

Als je de voorbeelden in dit artikel wilt uitproberen,

1) Je moet Ansible op je computer hebben geïnstalleerd.
2) U moet ten minste een Ubuntu/Debian-host hebben waarmee u verbinding kunt maken vanuit Ansible.

Er zijn veel artikelen over LinuxHint gewijd aan het installeren van Ansible. U kunt deze controleren indien nodig om de benodigde programma's op uw systeem te installeren.

Je moet ook hebben sshpass geïnstalleerd op uw computer, waar u Ansible moet hebben geïnstalleerd. Ik zal je laten zien hoe te installeren sshpass op Ubuntu/Debian en CentOS/RHEL in dit artikel. Maak je geen zorgen als je deze programma's nog niet op je systeem hebt geïnstalleerd.

Sshpass installeren op Ubuntu/Debian

Het programma sshpass is beschikbaar in de officiële pakketrepository van Ubuntu/Debian. U kunt dit programma eenvoudig op uw computer installeren.

Werk eerst de cache van de APT-pakketrepository bij via de volgende opdracht:

$ sudo apt-update

Nu installeren sshpass via het volgende commando:

$ sudo apt install sshpass -y

sshpass zou nu moeten zijn geïnstalleerd.

Sshpass installeren op CentOS 8/RHEL 8

sshpass is beschikbaar in de EPEL-repository van CentOS 8/RHEL 8. U moet de EPEL-repository hebben ingeschakeld om sshpass te installeren.

Werk eerst de cache van de DNF-pakketrepository bij via de volgende opdracht:

$ sudo dnf makecache

Installeer vervolgens het EPEL-repositorypakket via de volgende opdracht:

$ sudo dnf install epel-release -y

Het EPEL-repositorypakket moet nu worden geïnstalleerd en de EPEL-repository moet zijn ingeschakeld.

Werk de cache van de DNF-pakketrepository opnieuw als volgt bij:

$ sudo dnf makecache

Installeren sshpass via het volgende commando:

$ sudo dnf installeer sshpass -y

sshpass moet worden geïnstalleerd.

Een Ansible-projectdirectory instellen

Voordat we verder gaan, zou het een goed idee zijn om een ​​projectdirectorystructuur te maken, gewoon om de zaken een beetje georganiseerd te houden.

Een projectmap maken: sshpass/ en alle vereiste subdirectories (in uw huidige werkdirectory), voert u de volgende opdracht uit:

$ mkdir -pv sshpass/files,playbooks

Navigeer als volgt naar de projectdirectory:

$ cd-sshpass/

Maak een gastheren inventarisbestand, als volgt:

$ nano-hosts

Voeg uw host-IP- of DNS-naam toe aan het inventarisbestand.

Als u klaar bent met deze stap, slaat u het bestand op door op te drukken + X, gevolgd door Y en .

Maak als volgt een Ansible-configuratiebestand in de projectdirectory:

$ nano mogelijk.cfg

Typ nu de volgende regels in de weerbaar.cfg het dossier.

Als u klaar bent met deze stap, slaat u het bestand op door op te drukken + X, gevolgd door Y en .

Op wachtwoord gebaseerde SSH-aanmelding testen in Ansible

Probeer vervolgens als volgt de hosts in het inventarisbestand te pingen:

$ ansible all -u shovon -m ping

OPMERKING: Hier de -jij optie wordt gebruikt om ansible te vertellen met welke gebruiker moet worden ingelogd. In dit geval is het de gebruiker sjovon. Vervang deze gebruikersnaam vanaf nu door de jouwe, gedurende de hele demo.

Zoals je kunt zien, kan ik me niet aanmelden bij de host en geen opdrachten uitvoeren.

Om Ansible te dwingen om het gebruikerswachtwoord te vragen, voer je de weerbaar commando met de -vraag-pas betoog als volgt:

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

Zoals je kunt zien, vraagt ​​Ansible om het SSH-wachtwoord van de gebruiker. Typ nu uw SSH-wachtwoord (gebruikersinlogwachtwoord) en druk op .

De host kan als volgt worden gepingd:

Ansible op wachtwoord gebaseerde SSH-aanmelding voor Playbooks

U kunt een op wachtwoord gebaseerde SSH-aanmelding gebruiken wanneer u Ansible-playbooks uitvoert. Laten we naar een voorbeeld kijken an.

Maak eerst een nieuw playbook vraagpas1.yaml in de draaiboeken/ directory, als volgt:

$ nano playbooks/askpass1.yaml

Typ de volgende regels in de vraagpas1.yaml playbook-bestand:

- hosts: alle
gebruiker: shovon
taken:
- naam: alle hosts pingen
ping:
- naam: een bericht afdrukken
debuggen:
bericht: 'Alles klaar'

Als u klaar bent met deze stap, slaat u het bestand op door op te drukken + X, gevolgd door Y en .

Voer de ... uit vraagpas1.yaml draaiboek, als volgt:

$ ansible-playbook playbooks/askpass1.yaml

Zoals je kunt zien, kan ik geen verbinding maken met de host. Je kunt zien dat dit komt omdat ik de . niet heb uitgevoerd ansible-playbook commando met de -vraag-pas keuze.

Voer de ... uit vraagpas1.yaml speelboek met de -vraag-pas optie, als volgt:

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

Zoals je kunt zien, vraagt ​​Ansible om een ​​SSH-wachtwoord. Typ uw SSH-wachtwoord in en druk op .

het draaiboek vraagpas1.yaml zou nu met succes moeten werken.

Ansible sudo Wachtwoord Login voor Playbooks

De -vraag-pas optie zal alleen om het SSH-inlogwachtwoord vragen. Wat als u ook het sudo-wachtwoord wilt invoeren?? Hoe u dit doet, ziet u in de volgende stappen.

Maak eerst een nieuw playbook vraagpas2.yaml in de draaiboeken/ directory, als volgt:

$ nano playbooks/askpass2.yaml

Typ de volgende regels in de vraagpas2.yaml het dossier.

- hosts: alle
gebruiker: shovon
worden: True
taken:
- naam: apache2-pakket installeren
geschikt:
naam: apache2
staat: laatste
- naam: Zorg ervoor dat de apache2-service actief is
onderhoud:
naam: apache2
staat: begonnen
ingeschakeld: True
- naam: Index kopiëren.html-bestand naar server
kopiëren:
src: … /files/index.html
bestemming: /var/www/html/index.html
modus: 0644
eigenaar: www-data
groep: www-data

Hier heb ik het commando gebruikt: worden: True om Ansible te vertellen dit playbook uit te voeren met sudo-rechten. Als u klaar bent met deze stap, slaat u de vraagpas2.yaml bestand door op te drukken + X, gevolgd door Y en .

Creëer een inhoudsopgave.html bestand in de bestanden/ directory, als volgt:

$ nano-bestanden/index.html

Typ de volgende HTML-codes in de inhoudsopgave.html het dossier:




Startpagina


Hallo Wereld


Het werkt



Als u klaar bent met deze stap, slaat u het bestand op door op te drukken + X gevolgd door Y en .

Je mag de vraagpas2.yaml speelboek met de -vraag-pas optie, als volgt:

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

U wordt dan net als voorheen om het SSH-wachtwoord gevraagd.

Maar het playbook werkt mogelijk nog steeds niet, zelfs als u het SSH-wachtwoord opgeeft. De reden hiervoor is dat je Ansible moet vertellen om het sudo-wachtwoord en het SSH-wachtwoord te vragen.

U kunt Ansible vertellen om het sudo-wachtwoord te vragen met behulp van de -vraag-word-pas optie tijdens het uitvoeren van het playbook, als volgt:

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

Nu zal Ansible u om het SSH-wachtwoord vragen.

Vervolgens zal Ansible u om het sudo-wachtwoord vragen. Als uw sudo-wachtwoord hetzelfde is als het SSH-wachtwoord (wat het meest waarschijnlijk is), laat het dan leeg en druk op .

Zoals je kunt zien, is het playbook succesvol uitgevoerd.

Automatische wachtwoordgebaseerde SSH-aanmelding en sudo-wachtwoordaanmelding configureren

Misschien wilt u op wachtwoord gebaseerde SSH en sudo login gebruiken, maar wilt u niet elke keer dat u een playbook uitvoert het SSH-wachtwoord en sudo-wachtwoord typen. Als dat het geval is, dan is dit gedeelte iets voor jou.

Om op wachtwoord gebaseerde SSH-aanmelding en sudo-aanmelding te gebruiken zonder dat u om de wachtwoorden wordt gevraagd, hoeft u alleen maar de ansible_ssh_pass en ansible_become_pass hostvariabelen of groepsvariabelen in uw inventarisbestand.

Open eerst de gastheren inventarisbestand, als volgt:

$ nano-hosts

Als je meerdere hosts in je inventarisbestand hebt en elk van de hosts heeft verschillende wachtwoorden, voeg dan de ansible_ssh_pass en ansible_become_pass variabelen als hostvariabelen (na elke host) als volgt:.

Zeker vervangen geheim met uw SSH- en sudo-wachtwoord.

Als alle of sommige hosts hetzelfde wachtwoord hebben, kunt u de ansible_ssh_pass en ansible_become_pass variabelen als groepsvariabelen, zoals weergegeven in het onderstaande voorbeeld.

Hier heb ik maar één host, dus ik heb de . toegevoegd ansible_ssh_pass en ansible_become_pass variabelen voor de alle groep (alle hosts in het inventarisbestand). Maar u kunt deze variabelen ook voor andere specifieke groepen toevoegen.

Zodra u klaar bent met het toevoegen van de ansible_ssh_pass en ansible_become_pass variabelen in de gastheren inventarisbestand, sla de gastheren inventarisbestand door op te drukken + X, gevolgd door Y en .

U kunt nu de vraagpas2.yaml draaiboek, als volgt:

$ ansible-playbook playbooks/askpass2.yaml

Zoals je kunt zien, is het playbook succesvol uitgevoerd, hoewel het niet om het SSH-wachtwoord of het sudo-wachtwoord vroeg.

Dus, dit is hoe je gebruikt sshpass voor op wachtwoord gebaseerde SSH en sudo login in Ansible. Bedankt voor het lezen van dit artikel!

Beheer en beheer muisbewegingen tussen meerdere monitoren in Windows 10
Muisbeheer voor twee schermen laat je muisbewegingen tussen meerdere monitoren controleren en configureren door de bewegingen nabij de grens te vertra...
Met WinMouse kunt u de beweging van de muisaanwijzer op Windows-pc aanpassen en verbeteren
Als u de standaardfuncties van uw muisaanwijzer wilt verbeteren, gebruik dan freeware WinMuis. Het voegt meer functies toe om u te helpen het meeste u...
Linkermuisknop werkt niet op Windows 10
Als u een speciale muis gebruikt met uw laptop of desktopcomputer, maar de linkermuisknop werkt niet not op Windows 10/8/7 om wat voor reden dan ook, ...