Eeldused
Kui soovite proovida selles artiklis käsitletud näiteid,
1) Teie arvutisse peab olema installitud Ansible.
2) Teil peab olema vähemalt Ubuntu / Debiani host, millega saate ühenduda rakendusega Ansible.
LinuxHintis on palju artikleid, mis on pühendatud Ansible'i installimisele. Vajaduse korral saate neid kontrollida, et vajalikke programme oma süsteemi installida.
Teil on ka vaja sshpass arvutisse installitud, kuhu peaksite olema installitud Ansible. Ma näitan teile, kuidas installida sshpass selles artiklis Ubuntu / Debiani ja CentOS / RHEL-i kohta. Ärge muretsege, kui need programmid pole teie süsteemi juba installitud.
Sshpassi installimine Ubuntu / Debiani
Programm sshpass on saadaval Ubuntu / Debiani ametlikus paketihoidlas. Selle programmi saate hõlpsalt oma arvutisse installida.
Kõigepealt värskendage APT paketi hoidla vahemälu järgmise käsu kaudu:
$ sudo apt värskendus
Nüüd installige sshpass järgmise käsu kaudu:
$ sudo apt install sshpass -y
sshpass tuleks nüüd installida.
Sshpass-i installimine CentOS 8 / RHEL 8-le
sshpass on saadaval CentOS 8 / RHEL 8 EPEL-i hoidlas. Sshpassi installimiseks peab olema lubatud EPEL-hoidla.
Kõigepealt värskendage DNF-i paketi hoidla vahemälu järgmise käsu kaudu:
$ sudo dnf makecache
Järgmisena installige EPEL-i hoidla pakett järgmise käsu kaudu:
$ sudo dnf installige epel-release -y
EPEL-hoidla pakett peaks nüüd olema installitud ja EPEL-hoidla peaks olema lubatud.
Värskendage DNF-i paketi hoidla vahemälu järgmiselt:
$ sudo dnf makecache
Installige sshpass järgmise käsu kaudu:
$ sudo dnf installib sshpass -y
sshpass tuleks paigaldada.
Võimatu projekti kataloogi seadistamine
Enne kui edasi minna, oleks hea mõte luua projekti kataloogistruktuur, lihtsalt selleks, et asju natuke korrastada.
Projektikataloogi loomiseks sshpass / ja kõik vajalikud alamkataloogid (teie praeguses töökataloogis), käivitage järgmine käsk:
$ mkdir -pv sshpass / failid, esitusraamatud
Liikuge projekti kataloogi järgmiselt:
$ cd sshpass /
Loo võõrustajad varude toimik järgmiselt:
$ nano hostid
Lisage inventuuri faili oma hosti IP või DNS-i nimi.
Kui olete selle sammu lõpetanud, salvestage fail, vajutades
Looge projekti kataloogi Ansible konfiguratsioonifail järgmiselt:
$ nano on võimalik.vrd
Sisestage nüüd järgmised read võimalik.vrd faili.
Kui olete selle sammu lõpetanud, salvestage fail, vajutades
Paroolipõhise SSH-i sisselogimise testimine on võimalik
Järgmisena proovige inventeerimisfailis hostida järgmiselt:
$ ansible all -u shovon -m pingMÄRGE: Siin, -u Valikut kasutatakse selleks, et teada anda, millise kasutajana sisse logida. Sel juhul on see kasutaja kühvel. Asendage see kasutajanimi nüüdsest kogu demo vältel oma kasutajanimega.
Nagu näete, ei ole mul võimalik hostisse sisse logida ja käske käivitada.
Ansible'i sundimiseks kasutaja parooli küsimiseks käivitage võimalik käsk -küsi-pass järgmine argument:
$ ansible all -u shovon --ask-pass -m ping
Nagu näete, küsib Ansible kasutaja SSH-parooli. Nüüd sisestage oma SSH parool (kasutaja sisselogimisparool) ja vajutage
Hosti saab pingida järgmiselt:
Võimalik paroolipõhine SSH sisselogimine Playbooksile
Parallipõhist SSH-i sisselogimist saate kasutada, kui käivitate Ansible playbooks. Vaatame ühte näidet.
Kõigepealt looge uus mänguraamat askpass1.yaml aastal mänguraamatud / kataloogi järgmiselt:
$ nano playbooks / askpass1.yaml
Tippige väljale järgmised read askpass1.yaml esitusraamatu fail:
- võõrustajad: kõikkasutaja: shovon
ülesanded:
- nimi: Ping kõik hostid
ping:
- nimi: printige sõnum
silumine:
msg: "Kõik seatud"
Kui olete selle sammu lõpetanud, salvestage fail, vajutades
Käivitage askpass1.yaml järgmine raamat:
$ ansible-playbooki mänguraamatud / askpass1.yaml
Nagu näete, pole mul võimalik hostiga ühendust luua. Näete, et see on tingitud sellest, et ma ei käivitanud ansible-playbook käsk -küsi-pass valik.
Käivitage askpass1.yaml mänguraamat koos -küsi-pass järgmiselt:
$ ansible-playbook -ask-pass playbooks / askpass1.yaml
Nagu näete, küsib Ansible SSH-parooli. Sisestage oma SSH parool ja vajutage
Näidendiraamat askpass1.yaml peaks nüüd edukalt töötama.
Esitusraamatute sudo parooliga sisselogimine
The -küsi-pass suvand küsib ainult SSH sisselogimisparooli. Mis siis, kui soovite ka sudo parooli sisestada? Kuidas seda teha, näete järgmistes sammudes.
Kõigepealt looge uus mänguraamat askpass2.yaml aastal mänguraamatud / kataloogi järgmiselt:
$ nano playbooks / askpass2.yaml
Tippige väljale järgmised read askpass2.yaml faili.
- võõrustajad: kõikkasutaja: shovon
muutunud: Tõsi
ülesanded:
- nimi: installige pakett apache2
asjakohane:
nimi: apache2
riik: viimane
- nimi: Veenduge, et teenus apache2 töötab
teenus:
nimi: apache2
riik: alustatud
lubatud: tõene
- nimi: Kopeeri register.HTML-fail serverisse
koopia:
src:… / failid / register.HTML
dest: / var / www / html / register.HTML
režiim: 0644
omanik: www-data
rühm: www-andmed
Siin olen käsku kasutanud muutunud: Tõsi käskida Ansibleil seda esitusraamatut sudoõigustega käitada. Kui olete selle sammu lõpetanud, salvestage askpass2.yaml faili vajutades
Looge indeks.HTML faili failid / kataloogi järgmiselt:
$ nano failid / register.HTML
Sisestage aadressi järgmised HTML-koodid indeks.HTML fail:
Tere, Maailm
See töötab
Kui olete selle sammu lõpetanud, salvestage fail, vajutades
Võite käivitada askpass2.yaml mänguraamat koos -küsi-pass järgmiselt:
$ ansible-playbook - esitusraamatute ask-pass / askpass2.yaml
Seejärel küsitakse teilt nagu varem SSH-parooli.
Kuid esitusraamat ei pruugi ikkagi töötada, isegi kui esitate SSH-parooli. Selle põhjuseks on asjaolu, et peate Ansible'ile käskima sudo parooli ja SSH parooli küsimist.
Võite Ansible'ile öelda sudo parooli küsimiseks, kasutades -küsima-saama-passima valik esitusraamatu käitamise ajal järgmiselt:
$ ansible-playbook - ask-pass - ask-muutunud-pass-playbookid / askpass2.yaml
Nüüd küsib Ansible SSH-i parooli.
Järgmisena küsib Ansible sudo parooli. Kui teie sudo parool on sama mis SSH parool (mis on kõige tõenäolisem), siis jätke see tühjaks ja vajutage
Nagu näete, jooksis mänguraamat edukalt.
Automaatse paroolipõhise SSH sisselogimise ja sudo parooliga sisselogimise seadistamine
Võite kasutada paroolipõhist SSH-i ja sudo sisselogimist, kuid te ei soovi sisestada SSH-i parooli ja sudo-parooli iga kord, kui käivitate mänguraamatu. Kui see nii on, siis on see jaotis teie jaoks.
Paroolipõhise SSH sisselogimise ja sudo sisselogimise kasutamiseks ilma paroolidelt küsimata peate vaid lisama ansible_ssh_pass ja ansible_become_pass hosti muutujad või rühma muutujad teie varude failis.
Esiteks avage võõrustajad varude toimik järgmiselt:
$ nano hostid
Kui teie inventari failis on mitu masinat ja igal hostil on erinevad paroolid, siis lisage ansible_ssh_pass ja ansible_become_pass muutujad hostimuutujatena (iga hosti järel) järgmiselt.
Asendage kindlasti saladus oma SSH ja sudo parooliga.
Kui kõigil või mõnel hostil on sama parool, saate selle lisada ansible_ssh_pass ja ansible_become_pass muutujad rühmamuutujatena, nagu on näidatud allpool toodud näites.
Siin on mul ainult üks host, nii et olen selle lisanud ansible_ssh_pass ja ansible_become_pass muutujad kõik rühm (kõik masinad inventeerimisfailis). Kuid võite need muutujad lisada ka teiste konkreetsete rühmade jaoks.
Kui olete aadressi lisamise lõpetanud ansible_ssh_pass ja ansible_become_pass muutujad võõrustajad varude fail, salvestage võõrustajad inventeerimisfaili vajutades
Nüüd võite käivitada askpass2.yaml järgmine raamat:
$ ansible-playbooki mänguraamatud / askpass2.yaml
Nagu näete, jooksis esitusraamat edukalt, ehkki see ei küsinud SSH-i ega sudo-parooli.
Nii kasutate seda sshpass paroolipõhise SSH-i ja sudo sisselogimiseks rakenduses Ansible. Täname, et lugesite seda artiklit!