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: WszyscyPo 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: WszyscyTutaj 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:
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.YamlNastę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.YamlTeraz 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.YamlJak 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!