Předpoklady
Chcete-li vyzkoušet příklady popsané v tomto článku,
1) Musíte mít ve svém počítači nainstalovanou aplikaci Ansible.
2) Musíte mít alespoň hostitele Ubuntu / Debian, ke kterému se můžete připojit z Ansible.
Existuje mnoho článků o LinuxHint věnovaných instalaci Ansible. V případě potřeby je můžete zkontrolovat a nainstalovat potřebné programy do systému.
Budete také muset mít sshpass nainstalován ve vašem počítači, kde byste měli mít nainstalovaný Ansible. Ukážu vám, jak nainstalovat sshpass na Ubuntu / Debian a CentOS / RHEL v tomto článku. Nebojte se, pokud tyto programy ve svém systému již nemáte nainstalované.
Instalace sshpass na Ubuntu / Debian
Program sshpass je k dispozici v oficiálním úložišti balíků Ubuntu / Debian. Tento program můžete snadno nainstalovat do počítače.
Nejprve aktualizujte mezipaměť úložiště balíčků APT pomocí následujícího příkazu:
$ sudo apt aktualizace
Nyní nainstalujte sshpass pomocí následujícího příkazu:
$ sudo apt nainstalovat sshpass -y
Nyní by měl být nainstalován sshpass.
Instalace sshpass na CentOS 8 / RHEL 8
sshpass je k dispozici v úložišti EPEL CentOS 8 / RHEL 8. Chcete-li nainstalovat sshpass, musíte mít povoleno úložiště EPEL.
Nejprve aktualizujte mezipaměť úložiště balíků DNF pomocí následujícího příkazu:
$ sudo dnf makecache
Dále nainstalujte balíček úložiště EPEL pomocí následujícího příkazu:
$ sudo dnf install epel-release -y
Balíček úložiště EPEL by nyní měl být nainstalován a úložiště EPEL by mělo být povoleno.
Znovu aktualizujte mezipaměť úložiště balíků DNF následujícím způsobem:
$ sudo dnf makecache
Nainstalujte sshpass pomocí následujícího příkazu:
$ sudo dnf install sshpass -y
sshpass by měl být nainstalován.
Nastavení možného adresáře projektu
Než půjdeme dále, bylo by dobré vytvořit adresářovou strukturu projektu, jen aby to bylo trochu organizované.
Chcete-li vytvořit adresář projektu sshpass / a všechny požadované podadresáře (ve vašem aktuálním pracovním adresáři), spusťte následující příkaz:
$ mkdir -pv sshpass / soubory, příručky
Přejděte do adresáře projektu následujícím způsobem:
$ cd sshpass /
Vytvořit hostitelé soubor inventáře takto:
$ nano hostitelé
Do souboru inventáře přidejte název svého hostitele IP nebo DNS.
Po dokončení tohoto kroku uložte soubor stisknutím
V adresáři projektu vytvořte konfigurační soubor Ansible:
$ nanoodpovědný.srov
Nyní zadejte následující řádky do pole zodpovědný.srov soubor.
Po dokončení tohoto kroku uložte soubor stisknutím
Testování přihlášení SSH založeného na heslech je možné
Dále zkuste provést ping na hostitele v souboru inventáře následujícím způsobem:
$ ansible all -u shovon -m pingPOZNÁMKA: Tady -u Volba se používá k informování uživatele, ke kterému uživateli se má přihlásit. V tomto případě to bude uživatel šovon. V této ukázce od nynějška nahraďte toto uživatelské jméno svým jménem.
Jak vidíte, nemohu se přihlásit k hostiteli a spouštět žádné příkazy.
Chcete-li vynutit, aby Ansible požádal o heslo uživatele, spusťte zodpovědný příkaz s -ask-pass argument, takto:
$ ansible all -u shovon --ask-pass -m ping
Jak vidíte, Ansible požádá o heslo SSH uživatele. Nyní zadejte své SSH heslo (přihlašovací heslo uživatele) a stiskněte
Na hostitele lze pingovat následujícím způsobem:
Možné přihlášení SSH založené na heslech pro příručky
Při spuštění playbooků Ansible můžete použít přihlašovací údaje SSH založené na heslech. Podívejme se na příklad.
Nejprve vytvořte nový scénář askpass1.yaml v knihy o hře / adresář takto:
$ nano playbooks / askpass1.yaml
Do řádku zadejte následující řádky askpass1.yaml soubor příručky:
- hostitelé: všichniuživatel: shovon
úkoly:
- name: Ping všem hostitelům
ping:
- name: Vytisknout zprávu
ladit:
msg: 'All set'
Po dokončení tohoto kroku uložte soubor stisknutím
Spusťte askpass1.yaml playbook, a to následovně:
$ ansible-playbook playbooks / askpass1.yaml
Jak vidíte, nejsem schopen se připojit k hostiteli. Vidíte, že je to proto, že jsem nespustil ansible-playbook příkaz s -ask-pass volba.
Spusťte askpass1.yaml scénář s -ask-pass tato možnost:
$ ansible-playbook -ask-pass playbooks / askpass1.yaml
Jak vidíte, Ansible žádá o heslo SSH. Zadejte své heslo SSH a stiskněte
Příručka askpass1.yaml by nyní měl úspěšně fungovat.
Ansible sudo Password Login for Playbooks
The -ask-pass možnost požádá pouze o přihlašovací heslo SSH. Co když si také přejete zadat heslo sudo? V následujících krocích uvidíte, jak to udělat.
Nejprve vytvořte nový scénář askpass2.yaml v knihy o hře / adresář takto:
$ nano playbooks / askpass2.yaml
Do řádku zadejte následující řádky askpass2.yaml soubor.
- hostitelé: všichniuživatel: shovon
stát se: Pravda
úkoly:
- name: Nainstalujte balíček apache2
výstižný:
název: apache2
stát: nejnovější
- name: Ujistěte se, že je spuštěna služba apache2
servis:
název: apache2
stav: spuštěno
enabled: True
- name: Kopírovat rejstřík.html soubor na server
kopírovat:
src:… / soubory / index.html
dest: / var / www / html / index.html
režim: 0644
vlastník: www-data
skupina: www-data
Zde jsem použil příkaz stát se: Pravda říct Ansible, aby spustil tuto příručku s oprávněními sudo. Po dokončení tohoto kroku uložte askpass2.yaml soubor stisknutím
Vytvořit index.html soubor v soubory / adresář takto:
$ nano soubory / index.html
Zadejte následující kódy HTML do index.html soubor:
Ahoj světe
Funguje to
Po dokončení tohoto kroku uložte soubor stisknutím
Můžete spustit askpass2.yaml scénář s -ask-pass tato možnost:
$ ansible-playbook --ask-pass playbooks / askpass2.yaml
Poté budete požádáni o heslo SSH, stejně jako dříve.
Playbook se ale stále nemusí spustit, i když zadáte heslo SSH. Důvodem je to, že musíte říct Ansible, aby vyzval k zadání hesla sudo a hesla SSH.
Můžete říct Ansible, aby požádal o heslo sudo pomocí -ask-become-pass možnost při spuštění příručky, a to následujícím způsobem:
$ ansible-playbook --ask-pass --ask-become-pass playbooks / askpass2.yaml
Nyní vás Ansible vyzve k zadání hesla SSH.
Dále vás Ansible vyzve k zadání hesla sudo. Pokud je vaše heslo sudo stejné jako heslo SSH (což je nejpravděpodobnější), nechejte je prázdné a stiskněte
Jak vidíte, hrací kniha proběhla úspěšně.
Konfigurace automatického přihlášení SSH založeného na hesle a přihlášení sudo heslem
Možná budete chtít použít SSH a sudo přihlášení založené na heslech, ale nechcete zadávat heslo SSH a heslo sudo pokaždé, když spustíte příručku. Pokud je to váš případ, pak je tato část pro vás.
Chcete-li použít přihlašovací údaje SSH založené na heslech a přihlášení sudo, aniž byste byli vyzváni k zadání hesel, stačí přidat ansible_ssh_pass a ansible_become_pass hostitelské proměnné nebo skupinové proměnné v souboru inventáře.
Nejprve otevřete hostitelé soubor inventáře takto:
$ nano hostitelé
Pokud máte v souboru inventáře více hostitelů a každý z hostitelů má různá hesla, přidejte ansible_ssh_pass a ansible_become_pass proměnné jako hostitelské proměnné (po každém hostiteli) následujícím způsobem.
Nezapomeňte vyměnit tajný s vaším SSH a sudo heslem.
Pokud mají všichni nebo někteří hostitelé stejné heslo, můžete přidat ansible_ssh_pass a ansible_become_pass proměnné jako skupinové proměnné, jak ukazuje následující příklad.
Tady mám jen jednoho hostitele, tak jsem přidal ansible_ssh_pass a ansible_become_pass proměnné pro Všechno skupina (všichni hostitelé v souboru inventáře). Tyto proměnné však můžete přidat i pro další konkrétní skupiny.
Jakmile dokončíte přidávání ansible_ssh_pass a ansible_become_pass proměnné v hostitelé soubor inventáře, uložte hostitelé soubor inventáře stisknutím
Nyní můžete spustit askpass2.yaml playbook, a to následovně:
$ ansible-playbook playbooks / askpass2.yaml
Jak vidíte, hrací kniha proběhla úspěšně, i když nepožadovala heslo SSH ani heslo sudo.
Takhle to používáte sshpass pro SSH a sudo přihlášení založené na heslech v Ansible. Děkujeme za přečtení tohoto článku!