Jak używać loginu opartego na hasłach SSH w Ansible za pomocą sshpass

Jak używać loginu opartego na hasłach SSH w Ansible za pomocą sshpass
W tym artykule pokażę Ci, jak uruchomić Playbooks Ansible za pomocą loginu opartego na hasłach SSH z sshpass.

Wymagania wstępne

Jeśli chcesz wypróbować przykłady omówione w tym artykule,

1) Musisz mieć zainstalowany na komputerze Ansible.
2) Musisz mieć co najmniej host Ubuntu/Debian, z którym możesz się połączyć z Ansible.

Istnieje wiele artykułów na temat Linuxhint poświęconych instalacji Ansible. W razie potrzeby możesz je sprawdzić, aby zainstalować niezbędne programy w systemie.

Będziesz także musiał mieć sshpass Zainstalowane na komputerze, gdzie powinieneś zainstalować ansible. Pokażę ci, jak zainstalować sshpass na Ubuntu/Debian i Centos/Rhel w tym artykule. Nie martw się, jeśli nie masz już zainstalowanych tych programów w twoim systemie.

Instalowanie sshpass na Ubuntu/Debian

Program sshpass jest dostępne w oficjalnym repozytorium pakietów Ubuntu/Debian. Możesz łatwo zainstalować ten program na komputerze.

Najpierw zaktualizuj pamięć podręczną repozytorium pakietów Apt za pomocą następującego polecenia:

Aktualizacja $ sudo apt

Teraz zainstaluj sshpass Za pośrednictwem następującego polecenia:

$ sudo apt instal sshpass -y

sshpass powinien być teraz zainstalowany.

Instalowanie sshpass na CentOS 8/RHEL 8

sshpass jest dostępny w repozytorium EPEL Centos 8/RHEL 8. Musisz mieć włączenie repozytorium EPEL instalowanie sshpass.

Najpierw zaktualizuj pamięć podręczną repozytorium pakietów DNF za pomocą następującego polecenia:

$ sudo dnf makeCache

Następnie zainstaluj pakiet repozytorium EPEL za pomocą następującego polecenia:

$ sudo dnf instaluj epel -release -y

Pakiet repozytorium EPEL powinien być teraz zainstalowany, a repozytorium EPEL powinno być włączone.

Ponownie zaktualizuj pamięć podręczną repozytorium pakietów DNF, w następujący sposób:

$ sudo dnf makeCache

zainstalować sshpass Za pośrednictwem następującego polecenia:

$ sudo dnf instaluj sshpass -y

sshpass należy zainstalować.

Konfigurowanie katalogu projektów Ansible

Zanim przejdziemy dalej, dobrym pomysłem byłoby stworzenie struktury katalogu projektu, tylko po to, aby wszystko było nieco zorganizowane.

Aby utworzyć katalog projektu sshpass/ i wszystkie wymagane podkatalog (w bieżącym katalogu roboczym) uruchom następujące polecenie:

$ mkdir -pv sshpass/pliki, podręczniki

Przejdź do katalogu projektu, w następujący sposób:

$ cd sshpass/

Stwórz zastępy niebieskie Plik zapasowy, w następujący sposób:

$ nano gospodarze

Dodaj nazwę IP lub DNS hosta w pliku ekwipunku.

Po zakończeniu tego kroku zapisz plik, naciskając + X, śledzony przez Y I .

Utwórz plik konfiguracyjny Ansible w katalogu projektu, w następujący sposób:

$ nano ansible.CFG

Teraz wpisz następujące wiersze w Ansible.CFG plik.

Po zakończeniu tego kroku zapisz plik, naciskając + X, śledzony przez Y I .

Testowanie logowania SSH oparte na hasłach w Ansible

Następnie spróbuj pingować hosty w pliku ekwipunku, w następujący sposób:

$ ansible all -U shovon -m ping

NOTATKA: Tutaj -u Opcja służy do informowania Ansible, który użytkownik zalogować się jako. W takim przypadku będzie to użytkownik Shovon. Odtąd zastąp tę nazwę użytkownika na całą demo.

Jak widać, nie jestem w stanie zalogować się do hosta i uruchomić żadne polecenia.

Aby zmusić Ansible do proszenia o hasło użytkownika, uruchom Ansible polecenie z -Ask-Pass Argument, jak następuje:

$ ansible all -u shovon -wskaś -pass -m ping

Jak widać, Ansible prosi o hasło SSH użytkownika. Teraz wpisz hasło SSH (hasło do logowania użytkownika) i naciśnij .

Host można pingować w następujący sposób:

Login SSH oparty na hasłach

Możesz użyć loginu SSH opartego na hasłach podczas uruchamiania ANSIBLE. Spójrzmy na przykład.

Najpierw stwórz nowy podręcznik AskPass1.Yaml w podręczniki/ katalog, jak następuje:

$ Nano Playbooks/AskPass1.Yaml

Wpisz następujące wiersze w AskPass1.Yaml Plik podręcznika:

- Gospodarze: Wszyscy
Użytkownik: Shovon
Zadania:
- Nazwa: ping wszystkie hosty
świst:
- Nazwa: Wydrukuj wiadomość
odpluskwić:
MSG: „Cały zestaw”

Po zakończeniu tego kroku zapisz plik, naciskając + X, śledzony przez Y I .

Uruchom AskPass1.Yaml Playbook, w następujący sposób:

$ Ansible-Playbook Playbooks/AskPass1.Yaml

Jak widać, nie jestem w stanie połączyć się z hostem. Widzicie, że dzieje się tak, ponieważ nie uruchomiłem Ansible-Playbook polecenie z -Ask-Pass opcja.

Uruchom AskPass1.Yaml podręcznik z -Ask-Pass Opcja, jak następuje:

$ Ansible-Playbook -ask-Pass Playbooks/Askpass1.Yaml

Jak widać, Ansible prosi o hasło SSH. Wpisz hasło SSH i naciśnij .

Podręcznik AskPass1.Yaml powinien teraz działać pomyślnie.

Ansible Sudo Login login dla podręczników

-Ask-Pass Opcja poprosi tylko o hasło do logowania SSH. Co jeśli chcesz również wpisać hasło sudo? Zobaczysz, jak to zrobić w następnych krokach.

Najpierw stwórz nowy podręcznik AskPass2.Yaml w podręczniki/ katalog, jak następuje:

$ Nano Playbooks/AskPass2.Yaml

Wpisz następujące wiersze w AskPass2.Yaml plik.

- Gospodarze: Wszyscy
Użytkownik: Shovon
staje się prawdą
Zadania:
- Nazwa: Zainstaluj pakiet Apache2
trafny:
Nazwa: Apache2
Stan: Najnowsze
- Nazwa: Upewnij się, że usługa Apache2 działa
praca:
Nazwa: Apache2
Stan: zaczął
Włączone: prawda
- Nazwa: indeks kopii.plik HTML na serwerze
Kopiuj:
SRC:… /Files /Index.html
dest:/var/www/html/index.html
Tryb: 0644
Właściciel: WWW-DATA
Grupa: www-data

Tutaj użyłem polecenia staje się prawdą powiedzieć Ansible, aby uruchomił ten podręcznik z przywilejami sudo. Po zakończeniu tego kroku zapisz AskPass2.Yaml plik naciskając + X, śledzony przez Y I .

Stworzyć indeks.html plik w akta/ katalog, jak następuje:

$ Nano Files/indeks.html

Wpisz następujące kody HTML w indeks.html plik:




Strona główna


Witaj świecie


To działa



Po zakończeniu tego kroku zapisz plik, naciskając + X śledzony przez Y I .

Możesz uruchomić AskPass2.Yaml podręcznik z -Ask-Pass Opcja, jak następuje:

$ Ansible-Playbook-Playbooks/Askpass2.Yaml

Następnie zostaniesz poproszony o hasło SSH, jak poprzednio.

Ale podręcznik nadal może nie działać, nawet jeśli podasz hasło SSH. Powodem tego jest to, że musisz powiedzieć Ansible, aby wyświetlała prośbę o hasło sudo, a także hasło SSH.

Możesz powiedzieć Ansible, aby poprosił o hasło sudo za pomocą -Ask-Become-Pass Opcja podczas uruchamiania podręcznika, w następujący sposób:

$ Ansible-Playbook-PASS-PASS-BASK-BECOME-PASS Playbooks/AskPass2.Yaml

Teraz Ansible poprosi o hasło SSH.

Następnie Ansible poprosi o hasło sudo. Jeśli twoje hasło sudo jest takie samo jak hasło SSH (co jest najprawdopodobniej), pozostaw go puste i naciśnij .

Jak widać, podręcznik działał pomyślnie.

Konfigurowanie automatycznego logowania SSH opartego na hasłach i login

Możesz użyć loginu SSH i Sudo opartych na hasłach, ale nie chcesz wpisywać hasła SSH i hasła sudo za każdym razem, gdy uruchamiasz podręcznik. W takim przypadku ta sekcja jest dla Ciebie.

Aby użyć loginu SSH opartego na hasłach i loginu sudo bez monitu o hasła, wszystko, co musisz zrobić, to dodać ansible_ssh_pass I ansible_become_pass Zmienne hosta lub zmienne grupowe w pliku zapasów.

Najpierw otwórz zastępy niebieskie Plik zapasowy, w następujący sposób:

$ nano gospodarze

Jeśli masz wiele hostów w pliku ekwipunku, a każdy z hostów ma różne hasła, dodaj ansible_ssh_pass I ansible_become_pass zmienne jako zmienne hosta (po każdym hoście) w następujący sposób.

Pamiętaj, aby wymienić sekret z hasłem SSH i Sudo.

Jeśli wszystkie lub niektóre hosty mają to samo hasło, możesz dodać ansible_ssh_pass I ansible_become_pass zmienne jako zmienne grupowe, jak pokazano w poniższym przykładzie.

Tutaj mam tylko jednego hosta, więc dodałem ansible_ssh_pass I ansible_become_pass zmienne dla Wszystko grupa (wszystkie hosty w pliku ekwipunku). Ale możesz dodać te zmienne również dla innych konkretnych grup.

Po zakończeniu dodawania ansible_ssh_pass I ansible_become_pass zmienne w zastępy niebieskie plik zapasowy, zapisz zastępy niebieskie Plik zapasowy przez naciskanie + X, śledzony przez Y I .

Możesz teraz uruchomić AskPass2.Yaml Playbook, w następujący sposób:

$ Ansible-Playbook Playbooks/AskPass2.Yaml

Jak widać, podręcznik działał pomyślnie, choć nie poprosił o hasło SSH ani hasło sudo.

Tak więc używasz sshpass W przypadku logowania SSH i Sudo w Ansible. Dziękuję za przeczytanie tego artykułu!