Pierwsze logowania i zmiana hasła za pomocą Ansible i modułu expect

Ostatnio realizowałem szkolenie, w którym dość często musiałem reinstalować system operacyjny Linux na maszynach wirtualnych. Sama reinstalacja systemu i jego późniejsza konfiguracja nie sprawiały mi żadnego problemu. Mam przygotowane playbooki Ansible, które konfigurują system, instalują odpowiednie pakiety i wgrywają ich konfigurację. Problem pojawiał się z jednym krokiem – pierwszym logowaniem i wymuszoną zmianą hasła. Na szczęście w Ansible jest moduł expect.

Moduł expect

W dystrybucji Ubuntu SSH jest domyślnie aktywne. Oznacza to, że po instalacji systemu możemy zalogować się na konto użytkownika ubuntu poprzez SSH. Pierwsze logowanie wymusza jednak zmianę hasła. Tak jak w przypadku wywołania komendy passwd musimy wprowadzić stare hasło oraz dwa razy nowe. Tego kroku nie przeskoczymy – jeżeli nie zmienimy hasła to nie zostaniemy zalogowani i nie uzyskamy dostępu do shella.

Zmianę hasła możemy też zaprogramować. Z pomocą przychodzi nam moduł expect.  Za jego pomocą wywołamy dowolne polecenie powłoki. Moduł następnie będzie analizował to, co wywołany program wypisuje na konsoli. Jeżeli znajdzie podany przez nas wzorzec, to wprowadza na konsoli wskazany przez nas ciąg znaków. W ten sposób wyręcza nas we wprowadzaniu danych.

Z wykorzystaniem modułu expect stworzyłem proste zadanie do playbooka Ansible, które wykorzystuję do zmiany hasła w trakcie pierwszego logowania.

---
- name: Change password on initial login
  delegate_to: 127.0.0.1
  become: no
  expect:
    command: ssh -o "UserKnownHostsFile /dev/null" -o "StrictHostKeyChecking no" {{ ansible_ssh_common_args }} ubuntu@{{ inventory_hostname }}
    timeout: 20
    responses:
      password: "{{ default_password }}"
      Current password: "{{ default_password }}"
      New password: "{{ temporary_password }}"
      new password: "{{ temporary_password }}"
      "\\~\\]\\$": exit
  register: status

E-BOOK

Zaczynasz swój pierwszy projekt związany z automatyzacją?

Ten e-book jest dla Ciebie! Zawiera sprawdzone podejście, które realizowałem w wielu projektach. Sprawdź co możesz zrobić, by odnieść sukces!


Subscribe
Powiadom o
guest

Witryna wykorzystuje Akismet, aby ograniczyć spam. Dowiedz się więcej jak przetwarzane są dane komentarzy.

0 komentarzy
Inline Feedbacks
View all comments

ZdradziĆ Ci sekretY udanego projektu automatyzacji?

(link otwiera się w nowym oknie)