Wyszukiwanie w witrynie

Jak skonfigurować węzły zarządzane Ansible i uruchamiać polecenia ad hoc — część 3


W poprzednich dwóch artykułach z tej serii Ansible wyjaśniliśmy podstawowe komponenty Ansible i konfigurację węzła sterującego Ansible. W tej części 3 pokażemy, jak skonfigurować węzły zarządzane Ansible do uruchamiania poleceń ad hoc na zdalnych hostach.

Skonfiguruj uwierzytelnianie SSH bez hasła w węzłach zarządzanych Ansible

Podsumowując nasz ostatni temat, zarządzanie zdalnymi hostami za pomocą Ansible wymaga skonfigurowania uwierzytelniania SSH bez hasła między węzłem kontrolnym Ansible a zarządzanymi hostami. Obejmuje to wygenerowanie pary kluczy (publiczny i prywatny klucz SSH) w węźle Ansible Control i skopiowanie klucza publicznego do wszystkich zdalnych hostów. Będzie to kluczowy krok w przyszłości i znacznie ułatwi Ci pracę.

Skonfiguruj eskalację uprawnień w zarządzanych węzłach

Po zalogowaniu się jako zwykły użytkownik może być konieczne wykonanie pewnych zadań na zarządzanych węzłach, które wymagają podwyższonych uprawnień lub uprawnień roota. Zadania te obejmują zarządzanie pakietami, dodawanie nowych użytkowników i grup oraz modyfikowanie konfiguracji systemu, żeby wymienić tylko kilka. Aby to osiągnąć, musisz wywołać określone dyrektywy w podręczniku, aby uruchomić zadania jako użytkownik uprzywilejowany na zdalnych hostach.

stać się

Ansible pozwala stać się innym użytkownikiem zarządzanego węzła, innym niż ten, na którym jest aktualnie zalogowany. Dyrektywa become:yes podnosi Twoje uprawnienia i umożliwia wykonywanie zadań, które wymagają uprawnień roota, takich jak instalowanie i aktualizowanie pakietów oraz ponowne uruchamianie systemu.

Rozważ podręcznik httpd.yml, który instaluje i uruchamia serwer WWW Apache, jak pokazano:

---
- name: install and start Apache webserver
  hosts: webservers

  tasks:
       - name: install httpd
         yum: name=httpd  state=latest
         become: yes
       - name: check httpd status
         service: name=httpd state=started

Dyrektywa become: Yes umożliwia wykonywanie poleceń jako użytkownik root na zdalnym hoście.

zostań_użytkownikiem

Kolejną dyrektywą, za pomocą której możesz zostać kolejnym użytkownikiem, jest polecenie become_user. Dzięki temu po zalogowaniu możesz przełączyć się na użytkownika sudo na zdalnym hoście, a nie na użytkownika, na którego się logujesz.

Na przykład, aby uruchomić polecenie jako użytkownik tecmint na pilocie, użyj dyrektywy, jak pokazano.

- name: Run a command as the apache user
  command: somecommand
  become: yes
  become_user: tecmint

stać się_metodą

Ta dyrektywa zastąpi domyślną metodę ustawioną w pliku ansible.cfg, która zwykle jest ustawiona na Sudo.

stać się_flagami

Używa się ich na poziomie zabawy lub zadania, na przykład gdy trzeba przełączyć się na użytkownika, gdy powłoka jest ustawiona na nologin.

Na przykład,

- name: Run a command as nobody
  command: somecommand
  become: true
  become_method: su
  become_user: nobody
  become_flags: '-s /bin/sh'

Opcje wiersza poleceń w eskalacji uprawnień

Przyjrzyjmy się niektórym opcjom wiersza poleceń, których możesz użyć do podniesienia swoich uprawnień podczas uruchamiania poleceń:

  • --ask-become-pass, -K – powoduje monit o podanie hasła użytkownika sudo w systemie zdalnym, z którym próbujesz się połączyć.
ansible-playbook myplaybook.yml --ask-become-pass

  • --become, -b – umożliwia uruchomienie zadania jako użytkownik root bez pytania o hasło.
ansible-playbook myplaybook.yml --become 
  • --become-user=BECOME_USER – umożliwia uruchamianie zadań jako inny użytkownik.
ansible-playbook myplaybook.yml --become-user=tecmint

Sprawdź działającą konfigurację za pomocą poleceń Ansible Ad-Hoc

Czasami możesz chcieć wykonać szybkie i proste zadania na zdalnych hostach lub serwerach w Ansible bez konieczności tworzenia podręcznika. W takim przypadku konieczne byłoby uruchomienie polecenia ad hoc.

Co to jest polecenie adhoc?

Polecenie ad hoc ansible to jednowierszowe polecenie, które pomaga wykonywać proste zadania w prosty, ale skuteczny sposób, bez konieczności tworzenia scenariuszy. Do takich zadań zalicza się kopiowanie plików pomiędzy hostami, ponowne uruchamianie serwerów, dodawanie i usuwanie użytkowników oraz instalowanie pojedynczego pakietu.

W tym samouczku omówimy różne zastosowania poleceń Ansible Ad-Hoc. Do demonstracji użyjemy poniższego pliku asortymentowego.

[webservers]
173.82.115.165

[database_servers]
173.82.202.239

Podstawowe użycie poleceń Adhoc

Najbardziej podstawowym zastosowaniem poleceń Ansible-Adhoc jest pingowanie hosta lub grupy hostów.

ansible -m ping all

W powyższym poleceniu parametr -m jest opcją modułu. Ping to polecenie adhoc, a drugi parametr all reprezentuje wszystkie hosty w pliku inwentarza. Wynik polecenia pokazano poniżej:

Aby pingować konkretną grupę hostów, zamień parametr „all” na nazwę grupy. W poniższym przykładzie testujemy łączność z hostami w grupie serwerów WWW.

ansible -m ping webservers

Dodatkowo możesz użyć atrybutu -a, aby określić zwykłe polecenia systemu Linux w podwójnym cudzysłowie. Na przykład, aby sprawdzić czas pracy systemów zdalnych, uruchom:

ansible -a "uptime" all

Aby sprawdzić wykorzystanie dysku przez hosty zdalne, uruchom.

ansible -a "df -Th" all

Istnieją setki modułów, których można używać z poleceniem Adhoc. Aby wyświetlić całą listę modułów wraz z ich opisami, uruchom poniższą komendę.

ansible-doc -l

Aby wyświetlić szczegółowe informacje o konkretnym module, uruchom komendę.

ansible-doc module_name

Na przykład, aby wyszukać więcej szczegółów na temat uruchomienia modułu yum:

ansible-doc yum

Zarządzanie pakietami/usługami za pomocą Ansible

Poleceń Ansible adhoc można używać do instalowania i usuwania pakietów za pomocą menedżerów pakietów yum i apt.

Aby zainstalować serwer WWW Apache na hoście CentOS 7 w grupie serwerów WWW w pliku inwentarza, uruchom polecenie:

ansible webservers -m yum -a "name=httpd  state=present"

Aby zweryfikować instalację serwera WWW Apache, zaloguj się do klienta zdalnego i uruchom.

rpm -qa | grep httpd

Aby odinstalować Apache, po prostu zmień stan z obecny na nieobecny.

ansible webservers -m yum -a "name=httpd  state=absent"

Ponownie, aby potwierdzić usunięcie httpd run.

rpm -qa | grep httpd

Jak zauważono, pakiety serwera WWW Apache zostały usunięte.

Tworzenie użytkowników i grup za pomocą Ansible

Podczas tworzenia użytkowników przydaje się moduł „użytkownik”. Aby utworzyć nowego użytkownika james z hasłem redhat na serwerze bazy danych systemu klienckiego, wydaj komendę.

ansible database_server -m user -a "name=james password=redhat"

Aby potwierdzić utworzenie nowego użytkownika, uruchom komendę:

ansible database_servers -a "id james"

Aby usunąć użytkownika, uruchom komendę:

ansible database_servers -m user -a "name=james state=absent"

Eskalacja uprawnień

Jeśli używasz Ansible jako zwykły użytkownik, Ansible zapewnia eskalację uprawnień na zdalnych hostach za pomocą opcji --become, aby uzyskać uprawnienia roota i -k, aby zapytać o hasło.

Na przykład, aby uruchomić polecenie Ansible adhoc „netstat -pnltu” z uprzywilejowaną opcją –-become i opcją -K, aby wyświetlić monit o podanie hasło użytkownika root, aby uruchomić polecenie.

ansible webservers -m shell -a 'netstat -pnltu' --become -K

Aby zostać innym użytkownikiem niż root, użyj atrybutu --become-user.

Na przykład, aby uruchomić „df -Th” jako użytkownik tecmint na zdalnych hostach i wyświetlić monit o podanie hasła:

ansible all -m shell -a 'df -Th' --become-user tecmint -K

Zbieranie faktów na temat systemów hostów

Fakty odnoszą się do szczegółowych informacji o systemie. Obejmuje to między innymi informacje o adresie IP, architekturze systemu, pamięci i procesorze.

Aby pobrać informacje o zdalnych hostach, uruchom komendę:

ansible all -m setup 

Przesyłanie plików/kopiowanie plików

Ansible używa modułu copy do bezpiecznego kopiowania plików z kontrolki Ansible do wielu zdalnych hostów.

Poniżej znajduje się przykład operacji kopiowania:

ansible webservers -m copy -a "src=/var/log/secure dest=/tmp/"

Polecenie kopiuje plik /var/log/secure w węźle Ansible Control do zdalnych hostów w grupie serwerów WWW w miejscu docelowym /tmp.

Możesz użyć modułu plików, aby zmienić uprawnienia i własność plików.

ansible webservers -m file -a "dest=/tmp/secure mode=600"

Dodatkowo możesz dołączyć argumenty właściciela i grupy, jak pokazano:

ansible webservers -m file -a "dest=/tmp/secure mode=600 owner=tecmint group=tecmint"

Możesz także tworzyć katalogi w sposób podobny do mkdir -p, jak pokazano.

ansible webservers -m file -a "dest=/path/to/directory mode=755 owner=tecmint group=tecmint state=directory"

Na przykład,

ansible webservers -m file -a "dest=/home/tecmint/data mode=755 owner=tecmint group=tecmint state=directory"

Wniosek

W tym artykule rzucamy światło na sposób konfiguracji zarządzanych węzłów do uruchamiania poleceń ad hoc Ansible w celu zarządzania zdalnymi hostami. Mamy nadzieję, że okazał się przydatny. Spróbuj i daj nam znać, jak poszło.