Jak wywołać role w playbooku Ansible?
sobes.tech AI
Odpowiedź od AI
Role w Ansible można wywołać na kilka sposobów w ramach playbooka.
-
Użycie słowa kluczowego
rolesna poziomie playbooka:# playbooks/my_playbook.yml - name: Zastosuj role do serwerów hosts: webservers become: yes roles: - role: common # Wywołanie roli 'common' - role: nginx # Wywołanie roli 'nginx' vars: # Przekazanie zmiennych do roli nginx_port: 8080 - another_role # Skrócona forma wywołaniaMetoda ta służy do wywoływania ról, które będą wykonywane kolejno dla wszystkich hostów zdefiniowanych w sekcji
hosts. -
Użycie modułu
include_rolena liście zadań:# playbooks/my_playbook.yml - name: Zastosuj role z warunkami hosts: appservers tasks: - name: Dołączenie roli bazy danych (tylko dla dev) include_role: name: database when: env == 'dev' # Wywołanie roli warunkowe - name: Dołączenie roli aplikacji include_role: name: app vars: app_version: 1.2.0 # Przekazanie zmiennych do roliModuł
include_rolewykonuje rolę tak, jakby była listą zadań dołączoną do bieżącego playbooka. Pozwala na użycie warunków (when) i pętli (loop) do kontrolowania wykonania roli. -
Użycie modułu
import_rolena liście zadań:# playbooks/my_playbook.yml - name: Import roli aplikacji hosts: appservers tasks: - name: Import roli aplikacji dla wszystkich hostów import_role: name: app vars: app_config_file: /etc/app/config.conf # Przekazanie zmiennychModuł
import_rolejest przetwarzany na etapie parsowania playbooka, przed jego faktycznym wykonaniem. Oznacza to, że wszystkie dyrektywy, takie jakwhen, będą miały zastosowanie do wszystkich zadań w roli, a nie tylko do samego wywołania roli. Zmienne przekazywane przezvarsbędą dostępne wewnątrz roli.
Różnica główna między include_role a import_role polega na czasie przetwarzania: import_role jest przetwarzany statycznie na etapie parsowania, podczas gdy include_role jest przetwarzany dynamicznie podczas wykonywania playbooka. Wpływa to na możliwość używania warunków i pętli:
| Funkcja | include_role |
import_role |
|---|---|---|
| Przetwarzanie | Dynamiczne | Statyczne |
Użycie when do wywołania |
Tak | Nie |
Użycie loop do wywołania |
Tak | Nie |
| Możliwość użycia zmiennych zdefiniowanych wcześniej w play | Tak | Nie |
Wybór między tymi metodami zależy od wymaganego poziomu elastyczności i momentu przetwarzania. Do prostego dołączania ról zwykle wystarcza słowo kluczowe roles lub import_role. Dla bardziej złożonych scenariuszy z warunkami i pętlami używa się include_role.