Pogoji
Če bi radi preizkusili primere, obravnavane v tem članku,
1) V računalniku mora biti nameščen Ansible.
2) Imeti morate vsaj gostitelja Ubuntu / Debian, na katerega se lahko povežete iz Ansible.
V LinuxHintu je veliko člankov, namenjenih namestitvi Ansible. Po potrebi jih lahko preverite, če želite v sistem namestiti potrebne programe.
Morali boste tudi imeti sshpass nameščen v računalniku, kjer bi morali imeti nameščen Ansible. Pokazal vam bom, kako namestiti sshpass o Ubuntu / Debian in CentOS / RHEL v tem članku. Ne skrbite, če teh programov v vašem sistemu še niste namestili.
Namestitev sshpass na Ubuntu / Debian
Program sshpass je na voljo v uradnem repozitoriju paketov Ubuntu / Debian. Ta program lahko enostavno namestite v računalnik.
Najprej posodobite predpomnilnik repozitorija paketov APT z naslednjim ukazom:
$ sudo apt posodobitev
Zdaj namestite sshpass prek naslednjega ukaza:
$ sudo apt install sshpass -y
zdaj bi moral biti nameščen sshpass.
Namestitev sshpass-a na CentOS 8 / RHEL 8
sshpass je na voljo v repozitoriju EPEL CentOS 8 / RHEL 8. Če želite namestiti sshpass, morate imeti omogočeno skladišče EPEL.
Najprej z naslednjim ukazom posodobite predpomnilnik repozitorija paketov DNF:
$ sudo dnf makecache
Nato namestite paket repozitorija EPEL z naslednjim ukazom:
$ sudo dnf namestite epel-release -y
Zdaj je treba namestiti paket repozitorija EPEL in omogočiti repozitorij EPEL.
Ponovno posodobite predpomnilnik repozitorija paketov DNF, kot sledi:
$ sudo dnf makecache
Namestite sshpass prek naslednjega ukaza:
$ sudo dnf namestite sshpass -y
sshpass namestiti.
Nastavitev Ansible Project Directory
Preden nadaljujemo, bi bilo dobro ustvariti strukturo imenika projekta, samo da bi bile stvari nekoliko organizirane.
Če želite ustvariti imenik projekta sshpass / in vse zahtevane podimenike (v trenutnem delovnem imeniku) zaženite naslednji ukaz:
$ mkdir -pv sshpass / datoteke, playbooks
Pomaknite se do imenika projekta, kot sledi:
$ cd sshpass /
Ustvariti gostitelji inventarna datoteka, kot sledi:
$ nano gostitelji
V datoteko inventarja dodajte ime gostitelja IP ali DNS.
Ko končate s tem korakom, shranite datoteko s pritiskom na
V imeniku projekta ustvarite konfiguracijsko datoteko Ansible, kot sledi:
$ nano ansible.prim
Zdaj vnesite naslednje vrstice v ansible.prim mapa.
Ko končate s tem korakom, shranite datoteko s pritiskom na
Testiranje SSH prijave na osnovi gesla v programu Ansible
Nato poskusite pingati gostitelje v datoteki inventarja, kot sledi:
$ ansible all -u shovon -m pingOPOMBA: Tukaj -u možnost se uporablja, da pove odgovoru, pri katerem uporabniku naj se prijavi. V tem primeru bo to uporabnik shovon. Od zdaj naprej v celotni predstavitvi to uporabniško ime zamenjajte z vašim.
Kot lahko vidite, se ne morem prijaviti v gostitelja in zagnati nobenega ukaza.
Če želite prisiliti Ansible, da zahteva uporabniško geslo, zaženite ansible ukaz z -vprašaj-podaj argument, kot sledi:
$ ansible all -u shovon --ask-pass -m ping
Kot lahko vidite, Ansible prosi za geslo SSH uporabnika. Zdaj vnesite geslo SSH (uporabniško geslo za prijavo) in pritisnite
Gostitelja lahko pingiramo na naslednji način:
Ansible SSH prijava na podlagi gesla za Playbooks
Pri zagonu Ansible playbooks lahko uporabite prijavo SSH na osnovi gesla. Oglejmo si primer.
Najprej ustvarite novo knjigo iger askpass1.yaml v igralne knjige / imenik, kot sledi:
$ nano playbooks / askpass1.yaml
V vrstico vnesite naslednje vrstice askpass1.yaml datoteka playbook:
- gostitelji: vsiuporabnik: shovon
naloge:
- ime: Ping vse gostitelje
ping:
- ime: Natisnite sporočilo
odpravljanje napak:
msg: 'Vse nastavljeno'
Ko končate s tem korakom, shranite datoteko s pritiskom na
Zaženite askpass1.yaml playbook, kot sledi:
$ ansible-playbook playbooks / askpass1.yaml
Kot vidite, se z gostiteljem ne morem povezati. Vidite, da je to zato, ker nisem vodil ansible-playbook ukaz z -vprašaj-podaj možnost.
Zaženite askpass1.yaml knjiga z igrami -vprašaj-podaj možnost, kot sledi:
$ ansible-playbook -ask-pass playbooks / askpass1.yaml
Kot lahko vidite, Ansible zahteva geslo SSH. Vnesite geslo SSH in pritisnite
Knjigo iger askpass1.yaml bi se zdaj moral uspešno izvajati.
Ansible sudo Prijava za geslo za Playbooks
The -vprašaj-podaj možnost bo zahtevala samo geslo za prijavo SSH. Kaj pa, če želite vtipkati tudi sudo geslo? Kako to storite, boste videli v naslednjih korakih.
Najprej ustvarite novo knjigo iger askpass2.yaml v igralne knjige / imenik, kot sledi:
$ nano playbooks / askpass2.yaml
V vrstico vnesite naslednje vrstice askpass2.yaml mapa.
- gostitelji: vsiuporabnik: shovon
postati: Resnično
naloge:
- ime: Namestite paket apache2
primeren:
ime: apache2
stanje: najnovejše
- ime: Prepričajte se, da se storitev apache2 izvaja
storitev:
ime: apache2
stanje: začelo
omogočeno: True
- ime: Kopiraj indeks.html na strežnik
kopirati:
src:… / files / index.html
dest: / var / www / html / index.html
način: 0644
lastnik: www-data
skupina: www-data
Tukaj sem uporabil ukaz postati: Resnično povedati Ansibleju, naj vodi to igro s sudo privilegiji. Ko končate s tem korakom, shranite askpass2.yaml s pritiskom na
Ustvari indeks.html v datoteki datoteke / imenik, kot sledi:
$ nano datoteke / kazalo.html
Vnesite naslednje kode HTML indeks.html mapa:
Pozdravljen, svet
Deluje
Ko končate s tem korakom, shranite datoteko s pritiskom na
Lahko zaženete askpass2.yaml knjiga z igrami -vprašaj-podaj možnost, kot sledi:
$ ansible-playbook --ask-pass playbooks / askpass2.yaml
Nato vas bodo vprašali za geslo SSH, kot prej.
Toda knjiga se še vedno ne bo izvajala, tudi če navedete geslo SSH. Razlog za to je, da morate odgovoriti Ansible, naj zahteva geslo za sudo in geslo SSH.
Ansibleju lahko poveste, naj za geslo sudo zahteva -vprašaj-postani-prenesite možnost med zagonom knjižice, kot sledi:
$ ansible-playbook --ask-pass --ask-become-pass playbooks / askpass2.yaml
Zdaj vas bo Ansible pozval k geslu SSH.
Nato vas bo Ansible pozval k vnosu gesla za sudo. Če je vaše sudo geslo enako geslu SSH (kar je najverjetneje), ga pustite prazno in pritisnite
Kot lahko vidite, je knjiga iger uspešno tekla.
Konfiguriranje samodejnega gesla za SSH prijavo in sudo geslo za prijavo
Morda boste želeli uporabiti SSH in sudo prijavo na osnovi gesla, vendar ne želite vnesti gesla SSH in sudo gesla vsakič, ko zaženete igro. V tem primeru je ta razdelek za vas.
Če želite uporabiti SSH-prijavo na osnovi gesla in sudo-prijavo, ne da bi vas kdo pozval k geslom, morate le dodati ansible_ssh_pass in ansible_become_pass spremenljivke gostitelja ali spremenljivke skupine v vaši inventarni datoteki.
Najprej odprite gostitelji inventarna datoteka, kot sledi:
$ nano gostitelji
Če imate v datoteki inventarja več gostiteljev in ima vsak gostitelj različna gesla, dodajte ansible_ssh_pass in ansible_become_pass spremenljivke kot gostiteljske spremenljivke (za vsakim gostiteljem), kot sledi.
Ne pozabite zamenjati skrivnost s svojim SSH in sudo geslom.
Če imajo vsi ali nekateri gostitelji isto geslo, lahko dodate ansible_ssh_pass in ansible_become_pass spremenljivke kot skupinske spremenljivke, kot je prikazano v spodnjem primeru.
Tu imam samo enega gostitelja, zato sem dodal ansible_ssh_pass in ansible_become_pass spremenljivke za vse skupina (vsi gostitelji v inventarni datoteki). Toda te spremenljivke lahko dodate tudi za druge posebne skupine.
Ko končate z dodajanjem ansible_ssh_pass in ansible_become_pass spremenljivke v gostitelji datoteko inventarja, shranite datoteko gostitelji s pritiskom na
Zdaj lahko zaženete askpass2.yaml playbook, kot sledi:
$ ansible-playbook playbooks / askpass2.yaml
Kot lahko vidite, se je knjiga z igrami uspešno izvajala, čeprav ni zahtevala gesla SSH ali sudo gesla.
Torej, tako uporabljate sshpass za SSH in sudo prijavo na osnovi gesla v Ansible. Hvala, ker ste prebrali ta članek!