Predpoklady
Ak si chcete vyskúšať príklady uvedené v tomto článku,
1) Musíte mať v počítači nainštalovaný program Ansible.
2) Musíte mať aspoň hostiteľa Ubuntu / Debian, ku ktorému sa môžete pripojiť z Ansible.
Existuje veľa článkov o LinuxHint venovaných inštalácii Ansible. Môžete ich skontrolovať, ak je to potrebné na inštaláciu potrebných programov do vášho systému.
Budete tiež musieť mať sshpass nainštalovaný na vašom počítači, kde by ste mali mať nainštalovaný Ansible. Ukážem vám, ako nainštalovať sshpass o Ubuntu / Debian a CentOS / RHEL v tomto článku. Nerobte si starosti, ak ešte nemáte vo svojom systéme nainštalované tieto programy.
Inštalácia sshpass na Ubuntu / Debian
Program sshpass je k dispozícii v oficiálnom úložisku balíkov Ubuntu / Debian. Tento program môžete ľahko nainštalovať do počítača.
Najskôr aktualizujte medzipamäť úložiska balíkov APT pomocou nasledujúceho príkazu:
$ sudo apt aktualizácia
Teraz nainštalujte sshpass pomocou nasledujúceho príkazu:
$ sudo apt nainštalovať sshpass -y
Teraz by mal byť nainštalovaný sshpass.
Inštalácia sshpass na CentOS 8 / RHEL 8
sshpass je k dispozícii v úložisku EPEL CentOS 8 / RHEL 8. Na inštaláciu sshpass musíte mať povolené úložisko EPEL.
Najskôr aktualizujte medzipamäť úložiska balíkov DNF pomocou nasledujúceho príkazu:
$ sudo dnf makecache
Ďalej nainštalujte balík úložiska EPEL pomocou nasledujúceho príkazu:
$ sudo dnf nainštalovať epel-release -y
Balík úložiska EPEL by mal byť teraz nainštalovaný a úložisko EPEL by malo byť povolené.
Znovu aktualizujte medzipamäť úložiska balíkov DNF nasledujúcim spôsobom:
$ sudo dnf makecache
Inštalácia sshpass pomocou nasledujúceho príkazu:
$ sudo dnf nainštalovať sshpass -y
sshpass by mali byť nainštalované.
Nastavenie možného adresára projektu
Predtým, ako sa posunieme ďalej, bolo by dobré vytvoriť adresárovú štruktúru projektu, aby bola situácia trochu organizovaná.
Vytvorenie adresára projektu sshpass / a všetky požadované podadresáre (vo vašom aktuálnom pracovnom adresári), spustite nasledujúci príkaz:
$ mkdir -pv sshpass / súbory, príručky
Prejdite do adresára projektu takto:
$ cd sshpass /
Vytvor hostitelia inventárny súbor, a to nasledovne:
$ nano hostitelia
Do súboru inventára zadajte adresu IP alebo DNS hostiteľa.
Po dokončení tohto kroku uložte súbor stlačením
V adresári projektu vytvorte konfiguračný súbor Ansible:
$ nano zodpovedné.porov
Teraz zadajte nasledujúce riadky do súboru zodpovedné.porov spis.
Po dokončení tohto kroku uložte súbor stlačením
Testovanie prihlásenia SSH založeného na hesle je možné
Ďalej skúste vyskúšať príkaz ping na hostiteľov v súbore inventára takto:
$ ansible all -u shovon -m pingPOZNÁMKA: Tu je -u voľba slúži na informovanie zodpovedného používateľa, ako ktorého sa má prihlásiť. V tomto prípade to bude používateľ šovon. V rámci ukážky nahraďte toto používateľské meno odteraz svojím menom.
Ako vidíte, nemôžem sa prihlásiť na hostiteľa a spustiť žiadne príkazy.
Ak chcete vynútiť, aby bolo možné požiadať o heslo používateľa, spustite príkaz zodpovedné príkaz s -ask-pass argument:
$ ansible all -u shovon --ask-pass -m ping
Ako vidíte, program Ansible žiada o heslo SSH používateľa. Teraz zadajte svoje SSH heslo (prihlasovacie heslo používateľa) a stlačte
Na hostiteľa je možné vykonať príkaz ping, a to nasledovne:
Možné prihlásenie SSH založené na hesle pre príručky
Pri spustení playbookov Ansible môžete použiť prihlásenie SSH založené na hesle. Pozrime sa na príklad.
Najskôr si vytvorte nový playbook askpass1.yaml v knihy o hre / adresár takto:
$ nano playbooks / askpass1.yaml
Zadajte nasledujúce riadky do askpass1.yaml súbor príručky:
- hostitelia: všetciužívateľ: shovon
úlohy:
- meno: Ping na všetkých hostiteľov
ping:
- meno: Vytlačí správu
ladenie:
msg: 'Všetky nastavenia'
Po dokončení tohto kroku uložte súbor stlačením
Spustiť askpass1.yaml príručky, a to nasledovne:
$ ansible-playbook playbooks / askpass1.yaml
Ako vidíte, nemôžem sa pripojiť k hostiteľovi. Vidíte, že je to preto, že som nespustil ansible-playbook príkaz s -ask-pass možnosť.
Spustiť askpass1.yaml príručka s -ask-pass možnosť:
$ ansible-playbook -ask-pass playbooks / askpass1.yaml
Ako vidíte, Ansible žiada o heslo SSH. Zadajte svoje heslo SSH a stlačte
Príručka askpass1.yaml by teraz malo úspešne bežať.
Ansible sudo Password Login for Playbooks
The -ask-pass Táto možnosť požiada iba o prihlasovacie heslo SSH. Čo ak chcete tiež zadať heslo sudo? Ako to urobiť, uvidíte v ďalších krokoch.
Najskôr si vytvorte nový playbook askpass2.yaml v knihy o hre / adresár takto:
$ nano playbooks / askpass2.yaml
Zadajte nasledujúce riadky do askpass2.yaml spis.
- hostitelia: všetciužívateľ: shovon
stať sa: Pravda
úlohy:
- name: Inštalácia balíka apache2
výstižný:
názov: apache2
stav: najnovšie
- name: Skontrolujte, či je služba apache2 spustená
služba:
názov: apache2
stav: začaté
povolené: Pravda
- názov: Kopírovať index.html súbor na server
kópia:
src:… / súbory / index.html
cieľ: / var / www / html / index.html
režim: 0644
vlastník: www-data
skupina: www-data
Tu som použil príkaz stať sa: Pravda povedať Ansible spustiť túto príručku s oprávneniami sudo. Po dokončení tohto kroku uložte askpass2.yaml súbor stlačením
Vytvorte index.html súbor v súbory / adresár takto:
$ nano súbory / index.html
Zadajte nasledujúce HTML kódy do index.html spis:
Ahoj svet
Funguje to
Po dokončení tohto kroku uložte súbor stlačením
Môžete spustiť askpass2.yaml príručka s -ask-pass možnosť:
$ ansible-playbook --ask-pass playbooks / askpass2.yaml
Potom budete požiadaní o heslo SSH, ako predtým.
Príručka sa ale stále nemusí dať spustiť, aj keď zadáte heslo SSH. Dôvod je ten, že musíte povedať spoločnosti Ansible, aby vyzvala na zadanie hesla sudo, ako aj hesla SSH.
Môžete povedať Ansible, aby požiadal o heslo sudo pomocou -požiadať-stať sa-prejsť počas behu príručky nasledujúcim spôsobom:
$ ansible-playbook --ask-pass --ask-become-pass playbooks / askpass2.yaml
Teraz vás Ansible vyzve na zadanie hesla SSH.
Ďalej vás program Ansible vyzve na zadanie hesla sudo. Ak je vaše heslo sudo rovnaké ako heslo SSH (čo je najpravdepodobnejšie), nechajte ho prázdne a stlačte
Ako vidíte, príručka sa úspešne rozbehla.
Konfigurácia automatického prihlásenia SSH založeného na hesle a prihlásenia pomocou hesla sudo
Možno budete chcieť použiť prihlásenie SSH a sudo založené na hesle, ale nechcete zadávať heslo SSH a heslo sudo pri každom spustení príručky. Ak je to tak, potom je táto časť určená pre vás.
Ak chcete používať prihlásenie SSH založené na hesle a prihlásenie sudo bez zobrazenia výzvy na zadanie hesla, stačí pridať ansible_ssh_pass a ansible_become_pass hostiteľské premenné alebo skupinové premenné v súbore inventára.
Najskôr otvorte hostitelia inventárny súbor, a to nasledovne:
$ nano hostitelia
Ak máte v súbore inventára viac hostiteľov a každý z nich má iné heslá, pridajte znak ansible_ssh_pass a ansible_become_pass premenné ako hostiteľské premenné (po každom hostiteľovi) nasledovne.
Nezabudnite vymeniť tajomstvo s vašim SSH a sudo heslom.
Ak majú všetci alebo niektorí z hostiteľov rovnaké heslo, môžete pridať ansible_ssh_pass a ansible_become_pass premenné ako skupinové premenné, ako je uvedené v príklade nižšie.
Tu mám iba jedného hostiteľa, takže som pridal ansible_ssh_pass a ansible_become_pass premenné pre všetko skupina (všetci hostitelia v súbore inventára). Tieto premenné však môžete pridať aj pre ďalšie špecifické skupiny.
Po dokončení pridávania súboru ansible_ssh_pass a ansible_become_pass premenné v hostitelia inventárny súbor, uložte hostitelia inventárny súbor stlačením
Teraz môžete spustiť askpass2.yaml príručky, a to nasledovne:
$ ansible-playbook playbooks / askpass2.yaml
Ako vidíte, hracia kniha prebehla úspešne, aj keď nepožadovala heslo SSH ani heslo sudo.
Takto to používate sshpass pre prihlásenie SSH a sudo založené na hesle v Ansible. Ďakujeme, že ste si prečítali tento článok!