annotations: []
smart_annotations: []
nodes:
  - boot_disk_size: null
    configuration:
      - name: ios_config.txt
        content: |-
          hostname R1
          no ip domain lookup
          ip domain name pinglabz.lab
          username pinglabz privilege 15 secret PingLabz!23
          username admin privilege 15 secret Cisco@123
          username sysadmin privilege 15 secret Cisco@123
          enable secret Cisco@123
          !
          interface Loopback0
           description Router-ID / management loopback
           ip address 10.255.0.1 255.255.255.255
          !
          interface Ethernet0/0
           description LAN to SW1 (10.20.0.0/24)
           ip address 10.20.0.1 255.255.255.0
           no shutdown
          !
          banner motd ^
          *****************************************************
          * PingLabz CCNA Base Topology - R1                  *
          * https://www.pinglabz.com/ccna-labs/               *
          * Authorized practice use only                      *
          *****************************************************
          ^
          !
          line con 0
           login local
           logging synchronous
           exec-timeout 0 0
          line vty 0 4
           login local
           transport input telnet ssh
          !
          end
    cpu_limit: null
    cpus: null
    data_volume: null
    hide_links: false
    id: n0
    image_definition: null
    label: R1
    node_definition: iol-xe
    parameters: {}
    ram: null
    tags: []
    x: -200
    y: -50
    interfaces:
      - id: i0
        label: Loopback0
        mac_address: null
        type: loopback
      - id: i1
        label: Ethernet0/0
        mac_address: null
        type: physical
        slot: 0
      - id: i2
        label: Ethernet0/1
        mac_address: null
        type: physical
        slot: 1
      - id: i3
        label: Ethernet0/2
        mac_address: null
        type: physical
        slot: 2
      - id: i4
        label: Ethernet0/3
        mac_address: null
        type: physical
        slot: 3
  - boot_disk_size: null
    configuration:
      - name: ios_config.txt
        content: |-
          hostname R2
          no ip domain lookup
          ip domain name pinglabz.lab
          username pinglabz privilege 15 secret PingLabz!23
          username admin privilege 15 secret Cisco@123
          username sysadmin privilege 15 secret Cisco@123
          enable secret Cisco@123
          !
          interface Loopback0
           description Router-ID / management loopback
           ip address 10.255.0.2 255.255.255.255
          !
          interface Ethernet0/0
           description LAN to SW1 (10.20.0.0/24)
           ip address 10.20.0.2 255.255.255.0
           no shutdown
          !
          interface Ethernet0/1
           description P2P to R3 (10.30.30.0/30)
           ip address 10.30.30.1 255.255.255.252
           no shutdown
          !
          banner motd ^
          *****************************************************
          * PingLabz CCNA Base Topology - R2                  *
          * https://www.pinglabz.com/ccna-labs/               *
          * Authorized practice use only                      *
          *****************************************************
          ^
          !
          line con 0
           login local
           logging synchronous
           exec-timeout 0 0
          line vty 0 4
           login local
           transport input telnet ssh
          !
          end
    cpu_limit: null
    cpus: null
    data_volume: null
    hide_links: false
    id: n1
    image_definition: null
    label: R2
    node_definition: iol-xe
    parameters: {}
    ram: null
    tags: []
    x: 200
    y: -50
    interfaces:
      - id: i0
        label: Loopback0
        mac_address: null
        type: loopback
      - id: i1
        label: Ethernet0/0
        mac_address: null
        type: physical
        slot: 0
      - id: i2
        label: Ethernet0/1
        mac_address: null
        type: physical
        slot: 1
      - id: i3
        label: Ethernet0/2
        mac_address: null
        type: physical
        slot: 2
      - id: i4
        label: Ethernet0/3
        mac_address: null
        type: physical
        slot: 3
  - boot_disk_size: null
    configuration:
      - name: ios_config.txt
        content: |-
          hostname R3
          no ip domain lookup
          ip domain name pinglabz.lab
          username pinglabz privilege 15 secret PingLabz!23
          username admin privilege 15 secret Cisco@123
          username sysadmin privilege 15 secret Cisco@123
          enable secret Cisco@123
          !
          interface Loopback0
           description Router-ID / management loopback
           ip address 10.255.0.3 255.255.255.255
          !
          interface Ethernet0/0
           description P2P to R2 (10.30.30.0/30)
           ip address 10.30.30.2 255.255.255.252
           no shutdown
          !
          interface Ethernet0/1
           description Spare LAN via SW2 (10.20.1.0/24)
           no shutdown
          !
          banner motd ^
          *****************************************************
          * PingLabz CCNA Base Topology - R3                  *
          * https://www.pinglabz.com/ccna-labs/               *
          * Authorized practice use only                      *
          *****************************************************
          ^
          !
          line con 0
           login local
           logging synchronous
           exec-timeout 0 0
          line vty 0 4
           login local
           transport input telnet ssh
          !
          end
    cpu_limit: null
    cpus: null
    data_volume: null
    hide_links: false
    id: n2
    image_definition: null
    label: R3
    node_definition: iol-xe
    parameters: {}
    ram: null
    tags: []
    x: 450
    y: -50
    interfaces:
      - id: i0
        label: Loopback0
        mac_address: null
        type: loopback
      - id: i1
        label: Ethernet0/0
        mac_address: null
        type: physical
        slot: 0
      - id: i2
        label: Ethernet0/1
        mac_address: null
        type: physical
        slot: 1
      - id: i3
        label: Ethernet0/2
        mac_address: null
        type: physical
        slot: 2
      - id: i4
        label: Ethernet0/3
        mac_address: null
        type: physical
        slot: 3
  - boot_disk_size: null
    configuration: []
    cpu_limit: null
    cpus: null
    data_volume: null
    hide_links: false
    id: n3
    image_definition: null
    label: HOST1
    node_definition: alpine
    parameters: {}
    ram: null
    tags: []
    x: 0
    y: 150
    interfaces:
      - id: i0
        label: eth0
        mac_address: null
        type: physical
        slot: 0
  - boot_disk_size: null
    configuration: []
    cpu_limit: null
    cpus: null
    data_volume: null
    hide_links: false
    id: n4
    image_definition: null
    label: SW2
    node_definition: unmanaged_switch
    parameters: {}
    ram: null
    tags: []
    x: 650
    y: -50
    interfaces:
      - id: i0
        label: port0
        mac_address: null
        type: physical
        slot: 0
      - id: i1
        label: port1
        mac_address: null
        type: physical
        slot: 1
      - id: i2
        label: port2
        mac_address: null
        type: physical
        slot: 2
      - id: i3
        label: port3
        mac_address: null
        type: physical
        slot: 3
      - id: i4
        label: port4
        mac_address: null
        type: physical
        slot: 4
      - id: i5
        label: port5
        mac_address: null
        type: physical
        slot: 5
      - id: i6
        label: port6
        mac_address: null
        type: physical
        slot: 6
      - id: i7
        label: port7
        mac_address: null
        type: physical
        slot: 7
  - boot_disk_size: null
    configuration:
      - name: ios_config.txt
        content: |-
          hostname SW1
          no ip domain lookup
          ip domain name pinglabz.lab
          username pinglabz privilege 15 secret PingLabz!23
          username admin privilege 15 secret Cisco@123
          username sysadmin privilege 15 secret Cisco@123
          enable secret Cisco@123
          !
          spanning-tree mode rapid-pvst
          spanning-tree extend system-id
          !
          vlan 1
           name DEFAULT
          !
          interface Vlan1
           description Management SVI
           ip address 10.20.0.10 255.255.255.0
           no shutdown
          !
          ip default-gateway 10.20.0.1
          !
          interface range Ethernet0/0 - 3
           description LAN access port
           switchport mode access
           switchport access vlan 1
           spanning-tree portfast
           no shutdown
          !
          banner motd ^
          *****************************************************
          * PingLabz CCNA Base Topology - SW1 (managed)       *
          * https://www.pinglabz.com/ccna-labs/               *
          * Authorized practice use only                      *
          *****************************************************
          ^
          !
          line con 0
           login local
           logging synchronous
           exec-timeout 0 0
          line vty 0 4
           login local
           transport input telnet ssh
          !
          end
    cpu_limit: null
    cpus: null
    data_volume: null
    hide_links: false
    id: n5
    image_definition: null
    label: SW1
    node_definition: ioll2-xe
    parameters: {}
    ram: null
    tags: []
    x: 0
    y: -50
    interfaces:
      - id: i0
        label: Loopback0
        mac_address: null
        type: loopback
      - id: i1
        label: Ethernet0/0
        mac_address: null
        type: physical
        slot: 0
      - id: i2
        label: Ethernet0/1
        mac_address: null
        type: physical
        slot: 1
      - id: i3
        label: Ethernet0/2
        mac_address: null
        type: physical
        slot: 2
      - id: i4
        label: Ethernet0/3
        mac_address: null
        type: physical
        slot: 3
links:
  - id: l0
    n1: n1
    n2: n2
    i1: i2
    i2: i1
    conditioning: {}
    label: R2-Ethernet0/1<->R3-Ethernet0/0
  - id: l1
    n1: n2
    n2: n4
    i1: i2
    i2: i0
    conditioning: {}
    label: R3-Ethernet0/1<->SW2-port0
  - id: l2
    n1: n0
    n2: n5
    i1: i1
    i2: i1
    conditioning: {}
    label: R1-Ethernet0/0<->SW1-Ethernet0/0
  - id: l3
    n1: n1
    n2: n5
    i1: i1
    i2: i2
    conditioning: {}
    label: R2-Ethernet0/0<->SW1-Ethernet0/1
  - id: l4
    n1: n3
    n2: n5
    i1: i0
    i2: i3
    conditioning: {}
    label: HOST1-eth0<->SW1-Ethernet0/2
lab:
  description: Reusable 5-node base topology for the PingLabz CCNA Hands-On Labs library.
    3 iol-xe routers + 1 alpine host + 1 ioll2-xe managed switch + 1 unmanaged switch
    (unmanaged does not count toward the CML Free 5-node cap). Covers ~80% of CCNA
    labs by reconfiguration. PingLabz standardized IP scheme. v3 - includes admin
    and sysadmin users with Cisco@123 password for PyATS automation alongside the
    documented pinglabz user.
  notes: |-
    PingLabz CCNA Base Topology (v3)
    ================================

    PURPOSE
    The reusable foundation for the PingLabz CCNA Labs membership section.

    VERSION HISTORY
    - v1: 2 unmanaged switches. Replaced - no managed switch CLI.
    - v2: SW1 upgraded to ioll2-xe (managed L2 switch).
    - v3: Added admin/Cisco@123 + sysadmin/Cisco@123 users so PyATS automation
      reaches the nodes via the CML controller. pinglabz/PingLabz!23 remains the
      documented user the reader logs in with.

    TOPOLOGY
       R1 (iol-xe) --e0/0-- e0/0 [SW1 ioll2-xe] e0/1 --e0/0-- R2 (iol-xe) --e0/1-- e0/0-- R3 (iol-xe) --e0/1-- [SW2 unmanaged]
                                  | e0/2
                                  |
                              HOST1 (alpine) eth0

    NODE INVENTORY (5 counted + 1 unmanaged)
    - R1     iol-xe              LAN gateway / loopback router (COUNTED)
    - R2     iol-xe              Transit router (LAN + P2P) (COUNTED)
    - R3     iol-xe              Remote router (P2P + spare LAN) (COUNTED)
    - HOST1  alpine              LAN host (default no IP - assign per-lab) (COUNTED)
    - SW1    ioll2-xe            Managed L2 switch with Vlan1 SVI (COUNTED)
    - SW2    unmanaged_switch    Spare LAN broadcast domain (NOT counted)

    CREDENTIALS
    - Documented reader login: pinglabz / PingLabz!23
    - PyATS / automation: admin / Cisco@123 (also sysadmin / Cisco@123)
    - Enable secret: Cisco@123 (required by PyATS profile in this CML)

    USAGE
    - Reader imports the .yaml, starts the lab, logs in as pinglabz
    - PyATS captures work because admin/Cisco@123 is present on every node
    - Reader does not interact with admin/sysadmin in normal use

    EXPORTED .YAML
    - Final asset on Ghost CDN: /content/files/2026/MM/pinglabz-ccna-base-topology-N.yaml
    - Source-of-truth: /seo/labs/yaml/pinglabz-ccna-base-topology.yaml

    PRESERVATION
    - Do NOT delete. This is the foundation for ~40 labs.
  title: PingLabz CCNA Base Topology
  version: 0.3.0
