arista.eos-system
Systemrolle für EOS
Die Rolle arista.eos-system erstellt eine Abstraktion für gemeinsame, globale Systemkonfigurationen. Das bedeutet, dass Sie keine Ansible-Aufgaben schreiben müssen. Erstellen Sie einfach ein Objekt, das den untenstehenden Anforderungen entspricht, und diese Rolle wird dieses Objekt einlesen und die erforderliche Konfiguration durchführen.
Diese Rolle ermöglicht speziell die Konfiguration von IP-Routing, dem Hostnamen und den CLI-Benutzern.
Installation
ansible-galaxy install arista.eos-system
Anforderungen
Erfordert eine SSH-Verbindung zu Ihrem Arista-Gerät. Sie können eine der integrierten eos-Verbindungsvariablen oder das praktische provider
-Dictionary verwenden.
Rollenvariablen
Die Aufgaben in dieser Rolle werden von den Objekten hostname
, eos_ip_routing_enabled
und eos_users
gesteuert, die unten beschrieben sind:
hostname
Schlüssel | Typ | Hinweise |
---|---|---|
hostname | string | Der ASCII-String, der für die Konfiguration des Hostnamenswerts in der aktuellen Konfiguration des Knotens verwendet wird. |
eos_ip_routing_enabled
Schlüssel | Typ | Hinweise |
---|---|---|
eos_ip_routing_enabled | boolean: true, false* | Konfiguriert den Zustand des IPv4 'ip routing' auf dem Switch. Standardmäßig starten EOS-Switches mit 'no ip routing' |
eos_users (Liste) Jeder Eintrag enthält die folgenden Schlüssel:
Schlüssel | Typ | Hinweise |
---|---|---|
name | string (erforderlich) | Der eindeutige Benutzername. Der Benutzername muss bestimmten Formatrichtlinien entsprechen. Gültige Benutzernamen beginnen mit A-Z, a-z oder 0-9 und können auch diese Zeichen enthalten: @#$%^&*-_= +;<>,.~ |
encryption | Auswahl: md5, sha512 | Definiert das Verschlüsselungsformat des im entsprechenden Geheimen angegebene Passworts. |
secret | string | Dieser Schlüssel wird zusammen mit der Verschlüsselung verwendet. Der Wert sollte ein zuvor generiertes gehashtes Passwort sein. |
nopassword | boolean: true, false* | Der nopassword-Schlüssel wird verwendet, um einen Benutzer ohne zugewiesenes Passwort zu erstellen. Dieses Attribut ist gegenseitig ausschließend zu secret und encryption. |
role | string | Konfiguriert die Rolle, die dem Benutzer zugewiesen ist. |
privilege | int: 0-15 | Konfiguriert das Berechtigungsniveau für den Benutzer. Erlaubte Werte sind Ganzzahlen zwischen 0 und 15. Der Standardwert für die Berechtigung in EOS ist 1, wenn dieser Schlüssel weggelassen wird. |
sshkey | string | Konfiguriert einen sshkey für den CLI-Benutzer. Dieser sshkey wird in /home/USER/.ssh/authorized_keys gespeichert. |
state | Auswahl: present*, absent | Setzt den Zustand für den CLI-Benutzer |
Hinweis: Ein Sternchen (*) kennzeichnet den Standardwert, wenn nichts angegeben ist
Konfigurationsvariablen
Schlüssel | Auswahl | Beschreibung |
---|---|---|
eos_save_running_config | true*, false | Gibt an, ob Änderungen an der laufenden Konfiguration, die aus der Rollenausführung resultieren, im Speicher gespeichert werden sollen. |
Hinweis: Ein Sternchen (*) kennzeichnet den Standardwert, wenn nichts angegeben ist
Verbindungsvariablen
Ansible EOS-Rollen benötigen die folgenden Verbindungsinformationen, um die Kommunikation mit den Knoten in Ihrem Inventar herzustellen. Diese Informationen können in den Ansible group_vars- oder host_vars-Verzeichnissen oder im Playbook selbst vorhanden sein.
Schlüssel | Erforderlich | Auswahl | Beschreibung |
---|---|---|---|
host | ja | Gibt den DNS-Hostnamen oder die Adresse an, um eine Verbindung zum Remote-Gerät über den angegebenen transport herzustellen. Der Wert von host wird als Zieladresse für den Transport verwendet. | |
port | nein | Gibt den Port an, der beim Aufbau der Verbindung zum Remote-Gerät verwendet werden soll. Dieser Wert gilt für jeden akzeptablen Wert von transport. Der Port wird auf den entsprechenden Standardport gesetzt, wenn in der Aufgabe nichts angegeben ist (cli=22, http=80, https=443). | |
username | nein | Konfiguriert den Benutzernamen, der zur Authentifizierung der Verbindung zum Remote-Gerät verwendet wird. Der Wert von username wird zur Authentifizierung entweder beim CLI-Login oder bei der eAPI-Authentifizierung verwendet, abhängig davon, welcher transport verwendet wird. Wenn der Wert in der Aufgabe nicht angegeben wird, wird der Wert der Umgebungsvariable ANSIBLE_NET_USERNAME stattdessen verwendet. | |
password | nein | Gibt das Passwort an, das zur Authentifizierung der Verbindung zum Remote-Gerät verwendet wird. Dies ist ein gängiges Argument für jeden akzeptablen Wert von transport. Wenn der Wert in der Aufgabe nicht angegeben wird, wird der Wert der Umgebungsvariable ANSIBLE_NET_PASSWORD stattdessen verwendet. | |
ssh_keyfile | nein | Gibt die SSH-Keydatei an, die zur Authentifizierung der Verbindung zum Remote-Gerät verwendet werden soll. Dieses Argument wird nur verwendet, wenn transport=cli. Wenn der Wert in der Aufgabe nicht angegeben wird, wird der Wert der Umgebungsvariablen ANSIBLE_NET_SSH_KEYFILE stattdessen verwendet. | |
authorize | nein | ja, nein* | Weist das Modul an, den privilegierten Modus auf dem Remote-Gerät zu betreten, bevor Befehle gesendet werden. Wenn nicht angegeben, versucht das Gerät, alle Befehle im nicht-privilegierten Modus auszuführen. Wenn der Wert in der Aufgabe nicht angegeben wird, wird der Wert der Umgebungsvariable ANSIBLE_NET_AUTHORIZE stattdessen verwendet. |
auth_pass | nein | Gibt das Passwort an, das erforderlich ist, um in den privilegierten Modus auf dem Remote-Gerät zu gelangen. Wenn authorize=no, hat dieses Argument keine Wirkung. Wenn der Wert in der Aufgabe nicht angegeben wird, wird der Wert der Umgebungsvariable ANSIBLE_NET_AUTH_PASS stattdessen verwendet. | |
transport | ja | cli*, eapi | Konfiguriert den Transportverbindung, die beim Verbinden mit dem Remote-Gerät verwendet werden soll. Das Argument transport unterstützt die Konnektivität zum Gerät über cli (ssh) oder eapi. |
use_ssl | nein | ja*, nein | Konfiguriert den Transport, um SSL zu verwenden, wenn auf true gesetzt (nur wenn transport=eapi). Wenn transport=cli, wird dieser Wert ignoriert. |
provider | nein | Praktische Methode, die es ermöglicht, alle oben angegebenen Verbindungsargumente als Dictionary-Objekt zu übergeben. Alle Einschränkungen (erforderlich, Auswahl usw.) müssen entweder durch einzelne Argumente oder Werte in diesem Dictionary erfüllt sein. |
Hinweis: Ein Sternchen (*) kennzeichnet den Standardwert, wenn nichts angegeben ist
Ansible Variablen
Schlüssel | Auswahl | Beschreibung |
---|---|---|
no_log | true, false* | Verhindert, dass Modulargumente und Ausgaben während der Ausführung des Playbooks protokolliert werden. Standardmäßig ist no_log für Aufgaben, die EOS-Konfigurationsinformationen sammeln und speichern, auf true gesetzt, um die Ausgabegröße zu reduzieren. Setzen Sie dies auf true, um alle Ausgaben außer den Aufgabenergebnissen zu verhindern. |
Hinweis: Ein Sternchen (*) kennzeichnet den Standardwert, wenn nichts angegeben ist
Abhängigkeiten
Die Rolle eos-system basiert auf Modulen, die im Kerncode von Ansible enthalten sind. Diese Module wurden in der Ansible-Version 2.1.0 hinzugefügt.
- Ansible 2.1.0
Beispiel-Playbook
Das folgende Beispiel verwendet die Rolle arista.eos-system, um CLI-Benutzer, IP-Routing und den Switch-Hostnamen vollständig einzurichten, ohne irgendwelche Aufgaben zu schreiben. Wir erstellen eine hosts
-Datei mit unserem Switch, dann eine entsprechende host_vars
-Datei und schließlich ein einfaches Playbook, das nur die eos-system-Rolle referenziert. Durch das Einfügen der Rolle erhalten wir automatisch Zugriff auf alle Aufgaben zur Konfiguration von Systemfunktionen. Das Schöne daran ist, dass Aufgaben, die für einen Host ohne Systemkonfiguration gedacht sind, ohne Probleme übersprungen werden.
Beispiel-Hosts-Datei:
[leafs]
leaf1.example.com
Beispiel 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
Ein einfaches Playbook zur Konfiguration des Brückens, leaf.yml
- hosts: leafs
roles:
- arista.eos-system
Dann ausführen mit:
ansible-playbook -i hosts leaf.yml
Entwicklerinformationen
Entwicklungskontributionen sind willkommen. Bitte siehe Arista Roles for Ansible - Entwicklungshinweise (test/arista-ansible-role-test/README) für weitere Informationen, einschließlich wie man Testfälle für die Rollentwicklung entwickelt und ausführt.
Lizenz
Copyright (c) 2015, Arista Networks EOS+ Alle Rechte vorbehalten.
Die Weitergabe und Nutzung in Quell- und Binärform, mit oder ohne Änderungen, ist erlaubt, sofern die folgenden Bedingungen erfüllt sind:
Bei der Weitergabe des Quellcodes muss der obige Copyright-Hinweis, diese Liste der Bedingungen und der folgende Haftungsausschluss beibehalten werden.
Bei der Weitergabe in binärer Form muss der obige Copyright-Hinweis, diese Liste der Bedingungen und der folgende Haftungsausschluss in der Dokumentation und/oder anderen Materialien, die mit der Verteilung bereitgestellt werden, wiedergegeben werden.
Weder der Name von Arista noch die Namen seiner Mitwirkenden dürfen zur Unterstützung oder Werbung für Produkte verwendet werden, die aus dieser Software abgeleitet sind, ohne vorherige schriftliche Genehmigung.
DIESE SOFTWARE WIRD VOM COPYRIGHT-VERLEGER UND DEN MITWIRKENDEN "WIE BESEHEN" BEREITGESTELLT UND ALLE AUSDRÜCKLICHEN ODER IMPLIZITEN GARANTIEN, EINSCHLIESSLICH, ABER NICHT BEGRENZT AUF, DIE IMPLIZITEN GARANTIEN DER MARKTFÄHIGKEIT UND EIGNUNG FÜR EINEN BESTIMMTEN ZWECK WERDEN ABGELEHNT. IN KEINEM FALL SIND DER COPYRIGHT-VERLEGER ODER DIE MITWIRKENDEN FÜR IRGENDEINE DIREKTE, INDIREKTE, NEBEN-, BESONDERE, EXEMPLARISCHE ODER FOLGESCHÄDEN (EINSCHLIESSLICH, ABER NICHT BEGRENZT AUF, DEN ERWERB VON ERSATZGUTEN ODER -DIENSTEN; VERLUST DER NUTZUNG, DATEN ODER GEWINNE; ODER DAS GESCHÄFTSUNTERBRECHEN) HAFTBAR, UNABHÄNGIG DAVON, WIE SIE AUS DER NUTZUNG DIESER SOFTWARE ENTSTANDEN SIND, SELBST WENN AUF DIE MÖGLICHKEIT SOLCHER SCHÄDEN HINGEWIESEN WURDE.
Autoreninformationen
Bitte melden Sie Probleme über unser GitHub-Repo oder senden Sie uns eine E-Mail an ansible-dev@arista.com
Role for managing EOS global system configuration
ansible-galaxy install arista.eos-system