Ansible: Outputs parsen mit TEXTFSM (z.B. von Cisco)

Um Outputs von Kommandos z.B. von Cisco zu parsen in Ansible kann man TEXTFSM verwenden. Dazu muss neben Ansible das textfsm Modul mit pip installiert werden. TEXTFSM ist ein Template basierender Parser für Outputs. Installation der benötigten Pakete: Beispiel TEXTFSM Parser Datei inventory_cisco_ios.textfsm: Für viele Netzwerk Hersteller wie z.B. Cisco gibt es bereits fertige Templates, … Weiterlesen

VIM for YAML editing

Anpassen der ~/.vimrc mit „vim ~/.vimrc“ Im Detail: „set number“ aktiviert die Anzeige der Zeilennummern „autocmd FileType yaml,yml setlocal ts=2 sts=2 sw=2 et ai“ wandelt Tab in 2 Spaces um & Einrückung wird bei neuer Zeile beibehalten für Dateien mit der Endung yaml oder yml „set colorcolumn=80“ zeigt eine rote Line an bei Spalte 80 … Weiterlesen

Ansible Playbooks für Cisco Geräte

Ich habe jetzt mal angefangen kleine Snippets / Playbooks in einem Github Repo zu sammeln. lanbugs/cisco_ansible_playbooks: Ansible playbooks collection for Cisco network devices (github.com) Freue mich auf Feedback und viel Spaß damit 🙂 Beispiel „Interface Description setzen bei Interfaces wo ein Access Point angeschlossen ist“:

Ansible: Proxy / no_proxy für einzelnen Task aktivieren / deaktivieren

In meinem AWX Tower habe ich global einen Proxy hinterlegt. Ich hatte jetzt den Fall das ich für einen Task eine Ausnahme benötigt habe. Das geht wie folgt: Im Task kann unter der Variable environment die Variable http_proxy und no_proxy gesetzt werden, diese gilt dann nur für diesen Task. Hier ein komplettes Beispiel, ich hole … Weiterlesen

AWX persistenten Ordner in Container einbinden

Ich verwende den AWX Ansible Tower unter anderem um von Netzwerkgeräten Konfigurationsbackups zu machen. Da die Daten in den Containern nicht persistent sind mappe ich mir einen Ordner in den awx_tasks Container um meine Backups zu speichern. Meine AWX Installation liegt unter /opt/awx, alle Beispiele beziehen sich auf diesen Ordner. Zuerst erstellen wir einen neuen … Weiterlesen

AWX hinter einem Proxy erfolgreich installieren

Um AWX hinter einem Proxy mit dem Playbook erfolgreich zu installieren müssen im System, in GIT, in Docker und in den Containern die Proxyeinstellungen hinterlegt werden. Proxy für APT Im Ordner /etc/apt/apt.conf.d/ eine Datei 90proxy mit folgendem Inhalt anlegen. Proxy für GIT Mit folgendem Befehl kann der Proxy global gesetzt werden für GIT. Proxy für … Weiterlesen

Ansible AWX/Tower Check_MK inventory plugin

Das Script kann als Inventory Plugin verwendet werden für AWX / Tower um Hosts von Check_MK in AWX / Tower zu importieren. Dazu muss ein View angelegt werden mit folgenden Spalten: Host, IPv4 address, Host Tags Der Automation User muss Rechte auf den View und die entsprechende Contact Group haben.

Gitolite mit ansible-playbook post-update hook zum Verteilen von Konfigurationen etc.

Gitolite ist ein einfaches Script um einen GIT Repo Server aufzusetzen. Zusammen mit Ansible nutze ich es um z.B. Zonenfiles auf Bind9 Server zu verteilen. Das werde ich in diesem Beispiel zeigen. Ansible und Gitolite laufen auf dem gleichen Server. Installation Gitolite apt install gitolite3 Während der Installation wird nach dem Public SSH Key des … Weiterlesen

Ansible: Template Engine nutzen um Cisco Konfigurationen zu erzeugen

Ansible verwendet als Template Engine Jinja2. Als Beispiel wird für einen Switch die Radius Konfiguration erzeugt. Man kann direkt vom Template aus die Konfiguration auf ein Gerät fallen lassen oder so wie in diesem Fall einfach als File speichern. Eine ausführliche Anleitung was man alles mit der Jinja2 Template Engine machen kann ist unter http://jinja.pocoo.org/docs/2.10/ zu … Weiterlesen

Ansible: CLI Kommandos auf Cisco Devices ausführen und Ausgaben speichern

Beispiel Playbook exec_command.yaml: — – hosts: switch1 connection: local gather_facts: False vars: cli: host: „{{ inventory_hostname }}“ username: „{{ ansible_user }}“ password: „{{ ansible_ssh_pass }}“ tasks: – name: Call show inventory ios_command: commands: show inventory provider: „{{ cli }}“ register: output – name: Store output to file copy: content=“{{ output.stdout[0] }}“ dest=“out/inventory_{{ inventory_hostname }}.txt“ Mit … Weiterlesen

Ansible: Cisco Netzwerkautomatisierung mit Ansible – Erste Schritte

Ich habe kürzlich Angefangen meine ersten Gehversuche mit Ansible zu machen. Ziel ist unteranderem meine Linux Maschinen zu managen als auch Cisco Geräte. Hier meine ersten Erfahrungen mit Ansible. Was ist der Vorteil von Ansible? Opensource reichhaltiges Plugin Angebot (Ansible Galaxy) viele Artikel & Tipps im Internet, kein Nischenprodukt es ist in Python geschrieben 😉 … Weiterlesen