Nieobowiązkowe, gdy są warunkowe

Nieobowiązkowe, gdy są warunkowe
Ansible obsługuje oceny warunkowe przed wykonaniem określonego zadania na docelowych hostach. Jeśli warunek ustawiony jest prawdziwy, Ansible pójdzie naprzód i wykonuje zadanie. Jeśli warunek nie jest prawdziwy (niezaspokojony), Ansible pomili określone zadanie.

Aby wdrożyć warunki w Ansible, używamy kiedy słowo kluczowe. Słowo kluczowe przyjmuje wyrażenia logiczne na podstawie wartości lub zmiennej z poprzednich zadań lub faktów zebranych z zdalnych hostów.

Ten przewodnik nauczy Cię, jak wdrażać warunki w Ansible Playbooks za pomocą słowa kluczowego when.

Nieobowiązkowe, gdy warunki: podstawowe użycie

Słowo kluczowe przyjmuje prostą składnię:

Kiedy: (warunek logiczny)

Upewnij się, aby przekazać warunek, który ocenia się na rzecz prawdy lub fałszu.

Na przykład:

Kiedy: ansible_pkg_mgr == „Yum”
Kiedy: ansible_user_shell "=="/bin/bash "

Jeśli chcesz połączyć wiele warunków, możesz użyć operatorów logicznych, takich jak i, lub, i nie.

Kiedy: (warunek 1) i (warunek2)
Kiedy: (warunek1) lub (warunek2)

Aby zrozumieć, jak korzystać z ansible podczas słowa kluczowego, użyjemy praktycznych przykładów.

Przykład 1

Pierwszy przykład utworzy użytkownika, jeśli określony użytkownik nie istnieje na zdalnym hoście.

---
- Gospodarze: Wszyscy
GACED_FAFTS: Nie
staje się prawdą
Zadania:
- Nazwa: CheckIfDirectoryExist
STAT:
ścieżka: /home /ubuntu
Zarejestruj się: Dir
- Nazwa: createFileifDirectoryExists
plik:
ścieżka:/home/ubuntu/plik.tekst
Stan: dotyk
Kiedy: Dir.Stat.istnieje

Powyższy przykład rozpoczyna się od sprawdzenia, czy dostępny jest katalog domowy użytkownika Ubuntu. Następnie używamy warunku, aby utworzyć plik tekstowy, jeśli katalog jest dostępny.

Przykład 2

Następny przykład wyłącza wszystkie zdalne hosty Ubuntu za pomocą warunków, gdy.

---
- Gospodarze: Wszyscy
GACED_FAFTS: Tak
staje się prawdą
Zadania:
- Nazwa: ShutdownubUntUservers
polecenie: /sbin /shutdown-tnow
Kiedy: ansible_facts ['OS_FAMILY'] == „Ubuntu”

W powyższym przykładzie używamy zebranych faktów, aby ocenić, czy serwery pochodzą z rodziny Ubuntu. Jeśli prawda, zamknij serwery.

Przykład 3

W poniższym przykładzie łączymy dwa warunki, które używają operatora.

---
- Gospodarze: Wszyscy
GACED_FAFTS: Tak
staje się prawdą
Zadania:
- Nazwa: InstaldeApacheserver
Ansible.wbudowany.pakiet:
Nazwa: httpd
Stan: Najnowsze
Kiedy: (ansible_facts ['OS_Family'] == „debian”) i
(ansible_facts ['ansible_distribution_major_version'] == 10)

Powyższy przykład sprawdza, czy gospodarze są hostami debian i czy wersja dystrybucyjna jest równa Debianowi 10.

Przykład 4

Instalujemy Webserver Apache w poniższym podręczniku, jeśli rodzina goszcząca jest hostem Debian lub Ubuntu.

Piłok używa logicznego lub operatora.

---
- Gospodarze: Wszyscy
GACED_FAFTS: Tak
staje się prawdą
Zadania:
- Nazwa: InstaldeApacheserver
Ansible.wbudowany.pakiet:
Nazwa: httpd
Stan: Najnowsze
Kiedy: (ansible_facts ['OS_Family'] == „debian”) lub
(ansible_facts ['os_family'] == "Ubuntu")

Przykład 5

Rozważ poniższy podręcznik, który aktualizuje serwer Nginx do najnowszej wersji za pomocą operatora NOT.

---
- Gospodarze: Wszyscy
- Shell: /sbin /nginx-v2> i 1
Zarejestruj się: wersja
GACED_FAFTS: Tak
staje się prawdą

Zadania:
- Nazwa: InstaldeApacheserver
Ansible.wbudowany.pakiet:
Nazwa: Nginx
Stan: Najnowsze
Kiedy: ('"nginx/1.19.0 "Notinversion.stdout ')

Jeśli wyjście z serwera Nginx nie jest bieżącą wersją, zainstaluj bieżącą wersję pakietu.

Wniosek

W tym przewodniku omówiliśmy, jak pracować z warunkami w Ansible za pomocą słowa kluczowego when.

Dziękuję za przeczytanie!