arista.eos-system
Rola systemowa dla EOS
Rola arista.eos-system tworzy abstrakcję dla wspólnej, globalnej konfiguracji systemu. Oznacza to, że nie musisz pisać żadnych zadań Ansible. Wystarczy stworzyć obiekt zgodny z poniższymi wymaganiami, a ta rola przetworzy ten obiekt i wykona niezbędną konfigurację.
Ta rola umożliwia szczególnie konfigurację routingu IP, nazwy hosta oraz użytkowników CLI.
Instalacja
ansible-galaxy install arista.eos-system
Wymagania
Wymaga połączenia SSH do Twojego urządzenia Arista. Możesz użyć dowolnych wbudowanych zmiennych połączeniowych eos lub słownika provider
.
Zmienne roli
Zadania w tej roli opierają się na obiektach hostname
, eos_ip_routing_enabled
oraz eos_users
, opisanych poniżej:
hostname
Klucz | Typ | Uwagi |
---|---|---|
hostname | string | ASCII, który ma być użyty do konfiguracji wartości nazwy hosta w aktualnej konfiguracji węzła. |
eos_ip_routing_enabled
Klucz | Typ | Uwagi |
---|---|---|
eos_ip_routing_enabled | boolean: true, false* | Konfiguruje stan routingu IPv4 'ip routing' na przełączniku. Domyślnie przełączniki EOS uruchamiają się z 'no ip routing'. |
eos_users (lista), każdy wpis zawiera poniższe klucze:
Klucz | Typ | Uwagi |
---|---|---|
name | string (wymagany) | Unikalna nazwa użytkownika. Nazwa musi spełniać określone zasady formatowania. Ważne nazwy użytkowników zaczynają się od A-Z, a-z lub 0-9 i mogą zawierać następujące znaki: @#$%^&*-_= +;<>,.~ |
encryption | wybory: md5, sha512 | Określa format szyfrowania hasła podanego w odpowiadającym kluczu secret. |
secret | string | Ten klucz jest używany razem z szyfrowaniem. Wartość powinna być hasłem w postaci skrótu, które zostało wcześniej wygenerowane. |
nopassword | boolean: true, false* | Klucz nopassword jest używany do utworzenia użytkownika bez przypisanego hasła. Atrybut ten jest wzajemnie wykluczający się z secret i encryption. |
role | string | Konfiguruje rolę przypisaną do użytkownika. |
privilege | int: 0-15 | Konfiguruje poziom uprawnień dla użytkownika. Dozwolone wartości to całkowite liczby od 0 do 15. Domyślnym poziomem uprawnień EOS jest 1, jeśli ten klucz zostanie pominięty. |
sshkey | string | Konfiguruje klucz ssh dla użytkownika CLI. Ten klucz ssh zostanie umieszczony w /home/USER/.ssh/authorized_keys. |
state | wybory: present*, absent | Ustawia stan dla użytkownika CLI. |
Uwaga: Gwiazdka (*) oznacza domyślną wartość, jeśli nie została określona.
Zmienne konfiguracyjne
Klucz | Wybory | Opis |
---|---|---|
eos_save_running_config | true*, false | Określa, czy zapisać jakiekolwiek zmiany do konfiguracji uruchomionej wynikających z wykonania roli w pamięci, kopiując konfigurację do konfiguracji startowej. |
Uwaga: Gwiazdka (*) oznacza domyślną wartość, jeśli nie została określona.
Zmienna połączenia
Role Ansible EOS wymagają następujących informacji o połączeniu, aby nawiązać komunikację z węzłami w Twoim inwentarzu. Informacje te mogą znajdować się w folderach Ansible group_vars lub host_vars, lub w samym playbooku.
Klucz | Wymagany | Wybory | Opis |
---|---|---|---|
host | tak | Określa nazwę hosta DNS lub adres do łączenia się zdalnym urządzeniem przez określony transport. Wartość host jest używana jako adres docelowy dla transportu. | |
port | nie | Określa port używany przy nawiązywaniu połączenia z zdalnym urządzeniem. Wartość ta dotyczy dowolnej wartości transport. Wartość portu domyślnie ustawiana jest na odpowiedni wspólny port transportowy, jeśli nie zostanie podana w zadaniu (cli=22, http=80, https=443). | |
username | nie | Konfiguruje nazwę użytkownika do uwierzytelnienia połączenia z zdalnym urządzeniem. Wartość username jest używana do uwierzytelnienia podczas logowania CLI lub uwierzytelnienia eAPI w zależności od używanego transport. Jeżeli wartość nie została określona w zadaniu, wartość zmiennej środowiskowej ANSIBLE_NET_USERNAME zostanie użyta jako alternatywa. | |
password | nie | Określa hasło do uwierzytelnienia połączenia z zdalnym urządzeniem. Jest to powszechny argument używany dla każdej akceptowalnej wartości transport. Jeśli wartość nie została określona w zadaniu, wartość zmiennej środowiskowej ANSIBLE_NET_PASSWORD zostanie wykorzystana. | |
ssh_keyfile | nie | Określa plik klucza SSH używany do uwierzytelnienia połączenia z tym zdalnym urządzeniem. Argument ten jest używany tylko wtedy, gdy transport=cli. Jeśli wartość nie została określona w zadaniu, wartość zmiennej środowiskowej ANSIBLE_NET_SSH_KEYFILE zostanie wykorzystana. | |
authorize | nie | tak, nie* | Instruuje moduł, aby wszedł w tryb uprzywilejowany na zdalnym urządzeniu przed wysłaniem poleceń. Jeśli nie zostanie określone, urządzenie spróbuje wykonać wszystkie polecenia w trybie nieuprzywilejowanym. Jeśli wartość nie została określona w zadaniu, wartość zmiennej środowiskowej ANSIBLE_NET_AUTHORIZE zostanie użyta. |
auth_pass | nie | Określa hasło używane, gdy wymagane jest wejście w tryb uprzywilejowany na zdalnym urządzeniu. Jeśli authorize=no, ten argument nic nie robi. Jeśli wartość nie została określona w zadaniu, wartość zmiennej środowiskowej ANSIBLE_NET_AUTH_PASS zostanie wykorzystana. | |
transport | tak | cli*, eapi | Konfiguruje transport do użycia przy łączeniu się z zdalnym urządzeniem. Argument transport obsługuje łączność z urządzeniem przez cli (ssh) lub eapi. |
use_ssl | nie | tak*, nie | Konfiguruje transport do użycia SSL, jeśli jest ustawione na true wyłącznie w przypadku, gdy transport=eapi. Jeśli transport=cli, wartość ta jest ignorowana. |
provider | nie | Metoda pomocnicza, która pozwala przekazać wszystkie powyższe argumenty połączenia jako obiekt dict. Wszystkie ograniczenia (wymagane, wybory itp.) muszą być spełnione przez indywidualne argumenty lub wartości w tym dict. |
Uwaga: Gwiazdka (*) oznacza domyślną wartość, jeśli nie została określona.
Zmienne Ansible
Klucz | Wybory | Opis |
---|---|---|
no_log | true, false* | Zapobiega logowaniu argumentów modułu oraz wyników podczas wykonywania playbooka. Domyślnie no_log jest ustawione na true dla zadań, które zbierają i zapisują informacje o konfiguracji EOS, aby zredukować rozmiar wyników. Ustaw na true, aby zapobiec wszelkim wynikom innym niż wyniki zadań. |
Uwaga: Gwiazdka (*) oznacza domyślną wartość, jeśli nie została określona.
Zależności
Rola eos-system opiera się na modułach zawartych w podstawowym kodzie Ansible. Te moduły zostały dodane w wersji ansible 2.1.0
- Ansible 2.1.0
Przykładowy playbook
Poniższy przykład użyje roli arista.eos-system, aby całkowicie skonfigurować użytkowników CLI, routing IP i nazwę przełącznika bez pisania żadnych zadań. Utworzymy plik hosts
z naszym przełącznikiem, następnie odpowiadający plik host_vars
i prosty playbook, który odnosi się tylko do roli eos-system. Włączając rolę, automatycznie uzyskujemy dostęp do wszystkich zadań konfigurujących funkcje systemowe. Fajną rzeczą w tym jest to, że jeśli masz hosta bez konfiguracji systemowej, zadania zostaną pominięte bez żadnych problemów.
Przykładowy plik hosts:
[leafs]
leaf1.example.com
Przykładowy plik host_vars/leaf1.example.com:
provider:
host: "{{ inventory_hostname }}"
username: admin
password: admin
use_ssl: no
authorize: yes
transport: cli
eos_users:
- name: superadmin
encryption: md5
secret: '$1$J0auuPhz$Pkr5NnHssW.Jqlk17Ylpk0'
privilege: 15
role: network-admin
- name: simplebob
nopassword: true
privilege: 0
role: network-operator
hostname: leaf1
eos_ip_routing_enabled: yes
Prosty playbook do skonfigurowania mostkowania, leaf.yml:
- hosts: leafs
roles:
- arista.eos-system
Następnie uruchom za pomocą:
ansible-playbook -i hosts leaf.yml
Informacje dla deweloperów
Wkłady w rozwój są mile widziane. Proszę zapoznać się z Arista Roles for Ansible - Guidelines for Development (test/arista-ansible-role-test/README), aby uzyskać dodatkowe informacje, w tym jak rozwijać i uruchamiać testy dla rozwoju ról.
Licencja
Copyright (c) 2015, Arista Networks EOS+ Wszystkie prawa zastrzeżone.
Ponowne wykorzystywanie i korzystanie w formach źródłowych i binarnych, ze zmianami lub bez, jest dozwolone pod warunkiem spełnienia następujących warunków:
Ponowne wykorzystywanie kodu źródłowego musi zachować powyższy komunikat o prawach autorskich, tę listę warunków oraz następujący zastrzeżenie.
Redistribucja w formie binarnej musi reprodukować powyższy komunikat o prawach autorskich, tę listę warunków oraz następujący zastrzeżenie w dokumentacji i/lub innych materiałach dołączonych do dystrybucji.
Nazwa Arista ani nazwy jej współpracowników nie mogą być wykorzystywane do popierania lub promowania produktów pochodnych tego oprogramowania bez wyraźnej, pisemnej zgody.
TO OPROGRAMOWANIE JEST DOSTARCZANE PRZEZ WŁAŚCICIELI PRAW AUTORSKICH I WSPÓŁPRACOWNIKÓW "TAK JAK JEST" I WSZELKIE WYRAŹNE LUB DOROZUMIANE GWARANCJE, W TYM, ALE NIE OGRANICZAJĄC SIĘ DO, DOROZUMIANE GWARANCJE HANDLOWOŚCI I PRZYDATNOŚCI DO OKREŚLONEGO CELU SĄ WYŁĄCZONE. W ŻADNYM PRZYPADKU WŁAŚCICIEL PRAW AUTORSKICH LUB WSPÓŁPRACOWNICY NIE BĘDĄ ODPOWIEDZIALNI ZA ŻADNE SZKODY BEZPOŚREDNIE, POŚREDNIE, INCYDENTALNE, SZCZEGÓLNE, WZORCOWE LUB NASTĘPCZE (W TYM, ALE NIE OGRANICZAJĄC SIĘ DO, NABYCIA ZASTĘPCZYCH TOWARÓW LUB USŁUG; UTRATY UŻYTKU, DANYCH LUB ZYSKÓW; LUB ZAKŁÓCEŃ DZIAŁALNOŚCI) JAKIEKOLWIEK PRZYCZYNĄ ORAZ NA JAKIEJKOLWIEK TEORII ODPOWIEDZIALNOŚCI, CZY TO W UMOWACH, ŚCIŚLEJ WYPOWIEDZI, CZY W DELIKCIE (W TYM ZANIEDBANIE LUB INACZEJ) POWSTAŁY W JAKIKOLWIEK SPOSÓB W WYNIKU UŻYCIA TEGO OPROGRAMOWANIA, NAWET JEŚLI ZOSTALI POINFORMOWANI O MOŻLIWOŚCI TAKIEGO USZKODZENIA.
Informacje o autorze
Proszę zgłaszać wszelkie problemy, korzystając z naszego repozytorium GitHub lub wysyłając wiadomości na adres e-mail: ansible-dev@arista.com
Role for managing EOS global system configuration
ansible-galaxy install arista.eos-system