Struktura ról w Ansible pozwala nam automatycznie importować określone parametry, działania, dokumenty, skrypty i kontrolery oparte na predefiniowanym formacie dokumentów w Ansible. Główną metodą podziału podręcznika na wiele dokumentów jest rola. Ułatwia tworzenie skomplikowanych podręczników, a także ułatwia sposób ich wykorzystania w Ansible. Dzieląc podręcznik, możesz go podzielić na wiele części wielokrotnego użytku. Tak więc każda rola jest ograniczona do określonej funkcji lub zamierzonych wyników. Każda z procedur, wymagana do wydania wniosku, która była utrzymywana w samej tej konkretnej roli, jest zdefiniowany jako osoby utrzymujące w innych role.
Struktura ról w Ansible
Teraz zrozummy podstawową strukturę ról Ansible. Do korzystania z ról w Ansible stworzymy nowy katalog z dokładną tożsamością każdej roli. W hierarchii ról dokumenty są ułożone w sposób podlokdrendoryczny. Aby utworzyć katalog, zastosujemy następujące polecenie roli Ansible-Galaxy:
[root@master ansible]# ansible-galaxy init win_package_install_role
Po uruchomieniu powyższego polecenia otrzymamy następujący pożądany wynik:
- Rola Win_Package_Install_Role została pomyślnie utworzona
Ponieważ sama ansible-galaxy jest zawarta w narzędziu Ansible, nie musimy instalować żadnych dalszych komponentów. Jeśli chcesz sprawdzić hierarchiczną strukturę roli i kilka katalogów z modyfikowalnym układem, dokumenty zostaną wyświetlone po uruchomieniu polecenia poniżej:
[root@master ansible]# Tree Win_Package_Install_Role
Jak pokazano, mamy teraz w sumie 8 dostępnych katalogów w roli o nazwie „Win_Package_install_Role” i 8 wymiennych dokumentów.
Czasami musimy aktualizować dokumenty takie jak Readme.MD i Meta/Main.YML do prawidłowego opisania swojej roli, nawet jeśli funkcjonowanie roli nie jest konieczne. Niezbędne jest uwzględnienie wszelkich wymagań w meta/main.YML, jeśli rola musi uzyskać dostęp do dodatkowych ról do uruchomienia. Umożliwi to ansible osiągnięcie tego w razie potrzeby. Aby wejść do nowego katalogu, który niedawno utworzyliśmy, napiszemy poniższe oświadczenie w terminalu.
[root@master ansible]# cd Win_Package_Install_Role
Następnie pokaże nowy katalog dodany do głównej ścieżki pokazanej poniżej:
[root@master ansible] ~/Win_Package_Install_Role#
Nie ma żadnych warunków niezbędnych do roli win_package_install_role. Funkcjonujący format meta-pliku jest pokazany tutaj jako przykład. Jeśli chcesz go zmienić, aby odzwierciedlić twoje imię, nazwisko Twojej firmy, a w stosownych przypadkach zmień również licencję, pisząc następujące polecenie:
[root@master ansible] ~/win_package_install_role# nano meta/main.yml
Określając zadania roli w Ansible
Najczęściej rola odbyła się jedna lub jeszcze więcej działań w celu skonfigurowania zdalnego urządzenia w ramach kryteriów roli. Instalowanie i konfigurowanie WIN_PACKAGE_INSTALL_ROLE to to, co powinniśmy zrobić w tej sytuacji.
win_package_install_role /zadania /main.YML:
Kiedy uruchamiamy rolę, domyślnie przeszukuje podfolder „zadań” dla dokumentu o nazwie Main.YML, a następnie wymienimy wszystkie zadania w nim. Aby uzyskać bardziej złożone role, możesz podzielić zadania na wiele dokumentów i wywołać je z Main.YML przy użyciu zadań obejmujących moduły zadań importowych. Poniżej znajduje się polecenie, których użyjemy, aby dostać się do katalogu zadania.
# Plik zadań dla win_package_install_role
- Nazwa: Fetching Product_name Status instalacji
Win_Shell: „Get-Itemproperty HKLM: \ Software \ Wow6432Node \ Microsoft \ Windows \ CurrentVersion \ Uninstall \* | Gdzie -obiekt -property displayName -Like "*Product_name*" | Format -Table ImentingNumber, nazwa, nazwa displayName, localPackage -autosize '
Zarejestruj się: instalacja_status
- odpluskwić:
MSG:
- „Produkt już zainstalowany”
- "instalation_status.stdout_lines "
Kiedy: instalacja_status.StDout_Lines jest zdefiniowany i instalacja_status.StDout_Lines | długość> 0
- Meta: end_play
Kiedy: instalacja_status.StDout_Lines jest zdefiniowany i instalacja_status.StDout_Lines | długość> 0
- Nazwa: Utwórz katalog docelowy, jeśli nie istnieje
Win_file:
ścieżka: "Target_Machine_Path"
Stan: Directory
- Nazwa: Pobierz instalator
win_get_url:
URL: "url_to_download_setup"
dest: "Target_Machine_Path"
Zarejestruj się: Pobierz
Kiedy: url_to_download_setup jest zdefiniowany i URL_TO_DOWNLOAD_SETUP != ""
- set_fact:
PACKT_NAME_ZIP: "pobierz.dest "
Kiedy: pobierz.nieudane == Fałsz
- Nazwa: dekompresuj pakiet
Win_unzip:
src: "pakiet_name_zip"
dest: "Target_Machine_Path"
delete_archive: Tak
Zarejestruj się: Decompress_status
Kiedy: (Package_name_zip jest zdefiniowany) i (”.ZIP „W PACKE_NAME_ZIP lub”.GZ „w pakiet_name_zip lub”.GZ "w pakiet_name_zip)
- Nazwa: Znajdź lokalizację pliku konfiguracji
Win_find:
ścieżki: „Target_Machine_Path”
Wzory: ["setup_name"]
Refurse: True
Zarejestruj się: wynik
- Nazwa: Ustawienie ścieżki konfiguracji dla dostarczonego pakietu systemu Windows
set_fact:
setup_path: „wynik.Pliki [0].ścieżka"
Kiedy: wynik.nieudane == Fałsz i wynik.dopasowany> 0
- Nazwa: Instalowanie „setup_name”
Win_package:
ścieżka: "setup_path"
Product_id: Auto
Stan: obecny
Argumenty: /Q
Zarejestruj się: status
- odpluskwić:
MSG: „setUp_name pomyślnie zainstalowany”
Kiedy: status.rc == 0
- set_fact:
Reboot_required: True
Kiedy: status.reboot_required jest zdefiniowany i status.wymagany restart
notyfikować:
- Uruchom ponownie system Windows Server
W tym dokumencie wykonaliśmy zadania, jakbyśmy odzyskaliśmy nazwę produktu. Zrobiliśmy katalog docelowy, jeśli katalog nie jest dostępny. Musimy pobrać adres URL, nie rozpoznać pakietu, znaleziono lokalizację konfiguracji, a także ustawiliśmy lokalizację pakietu okiennego itp.
win_package_install_role /default /main.YML:
Domyślne parametry są zdefiniowane w Dyrektorze domyślnym. Domyślne parametry to te o najwyższym znaczeniu, co czyni je łatwymi do zmodyfikowania. Parametr zdefiniowany w domyślnych/głównych.YML byłby wykorzystywany, jeśli nie zostałby nigdzie zdefiniowany.
---
# domyślnie plik dla Win_Package_Install_Role
Target_Machine_Path: C: \ ProgramFiles
win_package_install_role /var /main.YML:
Aby określić parametry wymagane dla roli, budujemy dokument VAR na tym etapie. Aby uniknąć jakichkolwiek sporów dotyczących parametrów spoza roli, jest to inteligentna opcja, abyśmy poprzedzają identyfikatory parametrów roli.
# vars plik dla win_package_install_role
url_to_download_setUp: https: // archiwum.Apache.org/dist/httpd/binaries/win32/httpd-2.2.25-WIN32-X86-NO_SSL.MSI
Product_name: Apache
Settup_name: httpd-2.2.25-WIN32-X86-NO_SSL.MSI
Target_Machine_Path: C: \ installers
Win_Package_Install_Role /Handlers /Main.YML:
Handlery Ansible będą przechowywane w katalogu przewodnika. Zadania w dokumencie są znane jako obsługi, które można oznaczyć podczas gry w celu wykonania po zakończeniu. Moglibyśmy zatrudnić opiekunów, jak uznamy za konieczne.
# Plik obsługi dla win_package_install_role
- Nazwa: Uruchom ponownie system Windows Server
Win_reboot:
Kiedy: reboot_required
win_package_install_role /meta /main.YML:
Gdy zdecydujemy się na nadanie roli w Galaxy.Ansible.com, wykorzystamy meta katalog do zawierania metadanych autora. Informacje o roli obejmują wydawcę, którym jest „Kalsoom”, systemy wspierające i na utrzymaniu.
galaxy_info:
Autor: Kalsoom
Opis: Zainstaluj pakiet Windows
Firma: Ng Pvt Ltd
Licencja: licencja (GPL-2.0-lub-lateria, MIT itp.)
min_ansible_version: "2.9 "
Platformy:
- Nazwa: Windows
Tworzenie roli_main.Piłka YML:
W tym podręczniku przekazamy nazwę roli, którą początkowo stworzyliśmy wraz z gospodarzem. Zebniemy również informacje związane z gospodarzami. Poniżej znajduje się polecenie używane do utworzenia podręcznika w Ansible:
[root@master ansible]# nano Role_Main.yml
Wszystko:
zastępy niebieskie:
Windows_host:
ansible_host: 192.168.5.220
ansible_user: ansible
ansible_password: ******
ansible_connection: Winrm
ansible_port: 5986
ansible_winrm_server_cert_validation: ignor
Następnie uruchomimy teraz instrukcję, aby uzyskać pożądane dane wyjściowe w terminalu:
[root@master ansible]# Ansible-Playbook Role_Main.YML -i Host.yml
Wniosek
Pojęcie ról i sposobu konstruowania roli w Ansible zostały omówione w tym artykule. Omówiono również hierarchiczną strukturę ról. Każdy katalog, który był przechowywany pod rolą, został szczegółowo wyjaśniony. Aby zrozumieć sposób stosowania ról w Ansible, dodatkowo opracowaliśmy przykład.