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å
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å
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 pingBEMÆ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: allebruger: 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å
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: allebruger: 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å
Opret en indeks.html fil i filer / katalog, som følger:
$ nano filer / indeks.html
Skriv følgende HTML-koder i indeks.html fil:
Hej Verden
Det virker
Når du er færdig med dette trin, skal du gemme filen ved at trykke på
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å
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!