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.