Konfigurations-Automation mit Ansible reduziert manuelle Fehler, beschleunigt Rollouts und macht Änderungen reproduzierbar. Statt „per Hand“ auf dutzenden Cisco Switches VLANs, Trunks, SSH oder Syslog zu konfigurieren, definierst du gewünschte Zustände als Code und lässt Ansible diese konsistent umsetzen. Besonders im Campus-Betrieb ist das hilfreich: Standards (Templates), sichere Changes (Check/Diff), Backups und ein klarer Audit-Trail werden plötzlich einfach.
Was Ansible bei Cisco Switches praktisch leistet
Ansible verbindet sich typischerweise per SSH (CLI) oder über APIs (z. B. NETCONF/RESTCONF bei IOS XE). Für viele Umgebungen reicht CLI-Automation vollkommen aus: Befehle ausführen, Konfiguration setzen, Unterschiede prüfen und Änderungen dokumentieren.
- Read-Only Audits:
show-Befehle ausführen und Ergebnisse sammeln - Konfiguration ausrollen: Standards/Templates auf viele Geräte anwenden
- Idempotenz: gleiche Playbooks laufen mehrfach ohne „Konfig-Müll“ zu erzeugen
- Backups und Diffs: Änderungen nachvollziehbar machen
- Change-Sicherheit: Check-Mode, Limit auf Teilmengen, Rollback-Strategien
Voraussetzungen: So bereitest du deine Umgebung vor
Für Cisco Automation brauchst du eine saubere Management Plane: SSH, stabile Management-IP, ACLs und passende Credentials. Ansible sollte aus einem Admin-Netz (Jump Host) arbeiten, nicht aus Client-VLANs.
- SSH v2 aktiv, Telnet deaktiviert, VTY-ACL gesetzt
- Lokaler Break-Glass-User oder AAA mit Fallback
- Erreichbarkeit der Management-IP (MGMT-VLAN/VRF)
- Git-Repo für Playbooks/Templates und ein klares Naming
Basis-Checks auf dem Switch
show ip interface brief
show running-config | include ip ssh|line vty|transport input
show version
Ansible Grundsetup: Inventory, ansible.cfg und Verbindungsprofil
Für Cisco IOS nutzt du in der Praxis häufig die Connection network_cli (SSH) und Module aus cisco.ios. Damit kannst du sowohl „show“-Kommandos als auch Konfigurationsblöcke ausrollen.
ansible.cfg (Minimal, praxisnah)
[defaults]
inventory = inventory.yml
host_key_checking = False
retry_files_enabled = False
stdout_callback = yaml
interpreter_python = auto
[ssh_connection]
pipelining = True
Inventory (YAML) mit Gruppen und Variablen
all:
children:
cisco_switches:
hosts:
sw-access-01:
ansible_host: 10.1.99.11
sw-access-02:
ansible_host: 10.1.99.12
vars:
ansible_user: netops
ansible_password: "{{ vault_netops_password }}"
ansible_network_os: cisco.ios.ios
ansible_connection: ansible.netcommon.network_cli
ansible_become: true
ansible_become_method: enable
ansible_become_password: "{{ vault_enable_password }}"
Best Practice: Secrets nicht im Klartext (Ansible Vault)
ansible-vault create group_vars/cisco_switches/vault.yml
ansible-vault edit group_vars/cisco_switches/vault.yml
Read-Only Automation: Show-Kommandos standardisiert ausführen
Ein sehr guter Einstieg ist ein Audit-Playbook: Du sammelst „show“-Outputs von vielen Switches, ohne etwas zu verändern. Das ist ideal für Inventarisierung, Compliance und Troubleshooting.
Playbook: Basis-Audit (IOS)
- name: Cisco Switch Audit hosts: cisco_switches gather_facts: false tasks: - name: Show version cisco.ios.ios_command: commands: - show version - show interfaces status - show interfaces trunk - show spanning-tree summary register: audit_outCode- name: Save output locally
ansible.builtin.copy:
content: "{{ audit_out.stdout | to_nice_yaml }}"
dest: "outputs/{{ inventory_hostname }}_audit.yml"Ausführen (gezielt und sicher)
ansible-playbook audit.yml --limit sw-access-01 ansible-playbook audit.yml --limit cisco_switchesKonfiguration ausrollen: Idempotent mit ios_config
Für Standard-Configs (SSH, NTP, Syslog, Hardening-Basics) ist
ios_configein bewährter Ansatz. Du definierst Lines und Ansible sorgt dafür, dass sie vorhanden sind.Playbook: Syslog + NTP Standard
- name: Standardize NTP and Syslog hosts: cisco_switches gather_facts: false vars: mgmt_vlan: 99 ntp_servers: - 10.1.99.30 - 10.1.99.31 syslog_hosts: - 10.1.99.70 - 10.1.99.71 tasks: - name: Apply NTP/Syslog baseline cisco.ios.ios_config: lines: - clock timezone CET 1 0 - clock summer-time CEST recurring last Sun Mar 2:00 last Sun Oct 3:00 - service timestamps log datetime msec - service timestamps debug datetime msec - "ntp source vlan {{ mgmt_vlan }}" - "logging source-interface vlan {{ mgmt_vlan }}" - logging trap notifications - logging buffered 8192 parents: [] notify: save_configCode- name: Configure NTP servers
cisco.ios.ios_config:
lines: "{{ ntp_servers | map('regex_replace', '^(.*)$', 'ntp server \1') | list }}"
notify: save_config
- name: Configure Syslog hosts
cisco.ios.ios_config:
lines: "{{ syslog_hosts | map('regex_replace', '^(.*)$', 'logging host \1') | list }}"
notify: save_confighandlers:
- name: save_config
cisco.ios.ios_config:
save_when: modified
Warum das „sicherer“ ist als Copy/Paste
- Einheitliche Standards auf allen Geräten
- Wiederholbar (idempotent) ohne doppelte Konfigzeilen
- Änderungen werden nur gespeichert, wenn wirklich modifiziert wurde
Templates statt Lines: Standards sauber pflegen
Wenn Konfigurationen wachsen, sind Templates sinnvoll: Du pflegst eine „Golden Config“ pro Rollenprofil (Access, Distribution) und variierst nur wenige Parameter (Hostname, MGMT-IP, VLAN-Listen).
Jinja2 Template Beispiel (Auszug)
hostname {{ hostname }}
ip domain-name {{ domain_name }}
ip ssh version 2
ip ssh time-out 60
ip ssh authentication-retries 3
logging source-interface vlan {{ mgmt_vlan }}
{% for host in syslog_hosts %}
logging host {{ host }}
{% endfor %}
ntp source vlan {{ mgmt_vlan }}
{% for s in ntp_servers %}
ntp server {{ s }}
{% endfor %}
Template ausrollen
- name: Deploy baseline template
hosts: cisco_switches
gather_facts: false
tasks:
- name: Render template to running-config
cisco.ios.ios_config:
src: "templates/baseline.j2"
notify: save_config
Backups und Restore: Konfig-Sicherung automatisieren
Vor Changes ist ein Backup Pflicht. Mit Ansible kannst du Running-Config ziehen, versionieren und bei Bedarf vergleichen. Das ist die Basis für Rollback-Prozesse.
Running-Config sichern
- name: Backup running-config hosts: cisco_switches gather_facts: false tasks: - name: Get running-config cisco.ios.ios_command: commands: - show running-config register: run_cfgCode- name: Store backup
ansible.builtin.copy:
content: "{{ run_cfg.stdout[0] }}"
dest: "backups/{{ inventory_hostname }}_running.cfg"Restore (kontrolliert, als Change)
- name: Restore configuration snippet hosts: cisco_switches gather_facts: false tasks: - name: Push known-good snippet cisco.ios.ios_config: src: "restore_snippets/{{ inventory_hostname }}.cfg" match: none notify: save_configChange-Sicherheit: Check Mode, Diff und Limit nutzen
Automation ist nur dann betriebssicher, wenn du Änderungen kontrolliert ausrollst. Nutze Check-Mode, Diffs und Rollouts in Wellen (z. B. erst ein Switch, dann ein Stack, dann Standort).
Dry-Run und Diff
ansible-playbook ntp_syslog.yml --check --diff --limit sw-access-01 ansible-playbook ntp_syslog.yml --check --diff --limit cisco_switchesRollout in Etappen
ansible-playbook ntp_syslog.yml --limit "sw-access-01,sw-access-02"Typische Stolperfallen und wie du sie vermeidest
Viele Automation-Probleme entstehen nicht durch Ansible, sondern durch inkonsistente Switch-Basics oder fehlende Standards.
- SSH/AAA instabil: Management-Plane vorher härten und testen
- Enable/Privilege Probleme:
ansible_becomekorrekt setzen - Konfig driftet: Templates + Git + Reviews statt ad-hoc Lines
- Zu breite Changes: immer
--limitund Check/Diff zuerst - Fehlende Rollback-Strategie: Backups vor jedem Rollout
Operativer Betrieb: Git, Reviews und Standard-Workflows
Der größte Gewinn entsteht, wenn du „Netzwerk als Code“ auch organisatorisch lebst: Änderungen per Pull Request, einheitliche Templates, automatisierte Checks und klare Freigaben.
- Git-Repo als Single Source of Truth für Standards und Templates
- Pull Requests mit Review (Vier-Augen-Prinzip)
- Check-Mode + Diff als Pflicht vor Merge/Rollout
- Backups und Outputs als Artefakte (Audit-Trail)
Standard-Kommandoblock für den Alltag
ansible-playbook audit.yml --limit sw-access-01
ansible-playbook baseline.yml --check --diff --limit sw-access-01
ansible-playbook baseline.yml --limit sw-access-01
Konfiguriere Cisco Router & Switches und liefere ein Packet-Tracer-Lab (CCNA)
Hallo! Ich bin ein CCNA-Network Engineer und unterstütze Sie bei Cisco Router- und Switch-Konfigurationen – inklusive eines vollständigen Cisco Packet-Tracer-Labs (.pkt). Ideal für Lern-/Übungsszenarien, Validierung oder eine saubere Demo-Topologie.
Was ich (je nach Paket) umsetze
-
Switching: VLANs, Trunking (802.1Q), Port-Zuweisung, STP-Basics (PortFast/BPDU Guard wo sinnvoll)
-
Routing: Default/Static Routing oder OSPF, Inter-VLAN Routing (Router-on-a-Stick)
-
Services: DHCP (Pools/Scopes), NAT/PAT für Internet-Simulation
-
Optional Security: Basic ACLs und SSH-Hardening
-
Test & Verifikation: Ping/Traceroute + wichtige Show-Commands (mit erwarteten Ergebnissen)
Sie erhalten
-
✅ Packet Tracer .pkt Datei
-
✅ Saubere Konfigurations-Notizen pro Gerät
-
✅ Verifikations-Checkliste + erwartete Outputs
-
✅ Kurze Dokumentation (wie die Topologie funktioniert)
Bitte schreiben Sie mir vor der Bestellung, damit wir Scope, Packet-Tracer-Version, Geräteanzahl und Deadline klären.
Konfiguriere Cisco Router & Switches | Cisco Packet-Tracer-Labs. Finden Sie mich auf Fiverr.












