Hey, I can DevOPS my Network too! – Manual-configured OSPF (Part 5)

17 minute read

In the previous post we setup our OSPF routing topology auto-configured using Ansible. Which works really nice when we already know what our variable definitions are and the end result looks like. But maybe we do not know that yet and need to model what our topology and configurations will be. Well, this is a great learning environment to do just that. So at this point you might be thinking to yourself “We have already configured OSPF and now I want to manually configure? I must have to blow everything away and start over right?”. The answer is rather quite simple thanks to our Ansible role and our variables. I will now show you how to get everything back to a starting point by only adjusting a few variables in our group_vars/quagga-routers file.

So to validate that our OSPF configuration from the previous post is still implemented let’s do the following.

Assuming you still have an ssh session established with router1 (r1). If not make sure to do so now.

cd /vagrant
ip route
....
default via 10.0.2.2 dev eth0
1.1.1.0/24 dev eth6  proto kernel  scope link  src 1.1.1.10
2.2.2.0/24 via 192.168.250.102 dev eth1  proto zebra  metric 20
3.3.3.0/24 via 192.168.250.103 dev eth1  proto zebra  metric 20
4.4.4.0/24 via 192.168.250.104 dev eth1  proto zebra  metric 20
5.5.5.0/24 via 192.168.250.105 dev eth1  proto zebra  metric 20
10.0.2.0/24 dev eth0  proto kernel  scope link  src 10.0.2.15
192.168.12.0/24 dev eth2  proto kernel  scope link  src 192.168.12.11
192.168.14.0/24 dev eth3  proto kernel  scope link  src 192.168.14.11
192.168.15.0/24 dev eth4  proto kernel  scope link  src 192.168.15.11
192.168.23.0/24  proto zebra  metric 20
    nexthop via 192.168.250.102  dev eth1 weight 1
    nexthop via 192.168.250.103  dev eth1 weight 1
192.168.31.0/24 dev eth5  proto kernel  scope link  src 192.168.31.11
192.168.41.0/24 via 192.168.250.104 dev eth1  proto zebra  metric 20
192.168.51.0/24 via 192.168.250.105 dev eth1  proto zebra  metric 20
192.168.250.0/24 dev eth1  proto kernel  scope link  src 192.168.250.101
```bash

As you can see from the output above all of our routing is still
configured and now we want to get back to a base OSPF configuration
without any routing defined in order to manually set this all up.

We will simply do that by modifying our _quagga_config_ospfd_ variable
towards the end of _group_vars/quagga-routers_ file. We will change
this variable from true to false. So let's do that now.

```bash
nano group_vars/quagga-routers
```yaml

Current:

```yaml
quagga_config_ospfd: true  #defines if quagga ospfd should be configured based on quagga_ospf_ vars...makes it easy to disable auto routing in order to define your routes manually
```yaml

New:

```yaml
quagga_config_ospfd: false  #defines if quagga ospfd should be configured based on quagga_ospf_ vars...makes it easy to disable auto routing in order to define your routes manually
```bash

And to do a quick check to also validate that our OSPF configuration is
in place we can view _/etc/quagga/ospfd.conf_

```bash
cat /etc/quagga/ospfd.conf
....
## Ansible managed: /etc/ansible/roles/mrlesmithjr.quagga/templates/etc/quagga/ospfd.conf.j2 modified on 2015-09-10 13:10:26 by root on r1
!
! Zebra configuration saved from vty
!   2014/09/28 16:51:40
!
hostname r1
password quagga
enable password quagga
log file /var/log/quagga/ospfd.log
log stdout
log syslog
log monitor
service password-encryption
!
debug ospf event
debug ospf packet all
!
!
!
router ospf
 ospf router-id 192.168.250.101
  log-adjacency-changes
 redistribute connected
 network 192.168.250.101/24 area 51
!
line vty
!
```bash

Now let's run our Ansible playbook we ran previously but this time with
the above variable changed to false and see what happens.

```bash
ansible-playbook -i hosts playbook.yml
```bash

After the playbook finishes you will see that our ospf configuration has
changed and restarted the quagga service to reflect the changes. So what
does our _/etc/quagga/ospfd.conf_ look like now?

```bash
cat /etc/quagga/ospfd.conf
....
## Ansible managed: /etc/ansible/roles/mrlesmithjr.quagga/templates/etc/quagga/ospfd.conf.j2 modified on 2015-09-10 13:10:26 by root on r1
!
! Zebra configuration saved from vty
!   2014/09/28 16:51:40
!
hostname r1
password quagga
enable password quagga
log file /var/log/quagga/ospfd.log
log stdout
log syslog
log monitor
service password-encryption
!
debug ospf event
debug ospf packet all
!
!
!
!
line vty
!
```bash

And a quick route check again.

```bash
ip route
....
default via 10.0.2.2 dev eth0
1.1.1.0/24 dev eth6  proto kernel  scope link  src 1.1.1.10
10.0.2.0/24 dev eth0  proto kernel  scope link  src 10.0.2.15
192.168.12.0/24 dev eth2  proto kernel  scope link  src 192.168.12.11
192.168.14.0/24 dev eth3  proto kernel  scope link  src 192.168.14.11
192.168.15.0/24 dev eth4  proto kernel  scope link  src 192.168.15.11
192.168.31.0/24 dev eth5  proto kernel  scope link  src 192.168.31.11
192.168.250.0/24 dev eth1  proto kernel  scope link  src 192.168.250.101
```bash

And to validate that our OSPF daemon is still running and ready for
configuration let's telnet to the daemon again and do some checks in
preparation of manually configuring OSPF.

```bash
telnet localhost 2604
....
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.

Hello, this is Quagga (version 0.99.22.4).
Copyright 1996-2005 Kunihiro Ishiguro, et al.


User Access Verification

Password:
r1> en
Password:
r1#
```bash

Now run the following to validate we are in a base configuration state.

```bash
sh run
....
Current configuration:
!
hostname r1
password 8 easGhRG2CUfNw
enable password 8 uE0E.09Znr01M
log file /var/log/quagga/ospfd.log
log stdout
log syslog
service password-encryption
!
debug ospf event
debug ospf packet all
!
!
interface eth0
!
interface eth1
!
interface eth2
!
interface eth3
!
interface eth4
!
interface eth5
!
interface eth6
!
interface lo
!
line vty
!
end

sh ip ospf
....
 OSPF Routing Process not enabled
```bash

As you can see from above we are in a base configuration with the OSPF
daemon running and ready for our manual configurations.

So let's look at our diagram again and start configuring some of our
OSPF topology. You will want to keep this drawing open here on out so
right click and open link in new tab.

![ossrouting-bgp-drawing - NewPage](../../assets/ossrouting-bgp-drawing-New-Page-300x232.png)

We are currently connected to router1 (r1) with our ssh connection but
we now need to connect to router2 (r2) as well. In order to do this we
need to open another terminal window and change to our directory where
our project has been pulled down from GitHub into. In my case it
is _/Users/larrysmith/projects/vagrant-ansible-routing-template_

```bash
cd /Users/larrysmith/projects/vagrant-ansible-routing-template
```bash

Let's connect to router2 (r2).

```bash
vagrant ssh r2
```text

Validate that there are not any routes as we did on router1 (r1).

```bash
ip route
....
default via 10.0.2.2 dev eth0
2.2.2.0/24 dev eth4  proto kernel  scope link  src 2.2.2.10
10.0.2.0/24 dev eth0  proto kernel  scope link  src 10.0.2.15
192.168.12.0/24 dev eth3  proto kernel  scope link  src 192.168.12.12
192.168.23.0/24 dev eth2  proto kernel  scope link  src 192.168.23.12
192.168.250.0/24 dev eth1  proto kernel  scope link  src 192.168.250.102
```text

Now connect to the OSPF daemon as we did on router1 (r1).

```bash
telnet localhost 2604
....
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.

Hello, this is Quagga (version 0.99.22.4).
Copyright 1996-2005 Kunihiro Ishiguro, et al.


User Access Verification

Password:
r2> en
Password:
r2#
```bash

Looking at our diagram let's configure router1 (r1) as follows.

```bash
conf t
router ospf
ospf router-id 192.168.250.101
log-adjacency-changes
network 192.168.250.101/24 area 1
```bash

Now validate our running configuration to ensure our configuration from
above is indeed in place.

```bash
do sh run
....
Current configuration:
!
hostname r1
password 8 easGhRG2CUfNw
enable password 8 uE0E.09Znr01M
log file /var/log/quagga/ospfd.log
log stdout
log syslog
service password-encryption
!
debug ospf event
debug ospf packet all
!
!
interface eth0
!
interface eth1
!
interface eth2
!
interface eth3
!
interface eth4
!
interface eth5
!
interface eth6
!
interface lo
!
router ospf
 ospf router-id 192.168.250.101
 log-adjacency-changes
 network 192.168.250.101/24 area 0.0.0.1
!
line vty
!
end
```bash

Let's show our OSPF neighbors and see what that looks like.

```bash
sh ip ospf neighbor
....
r1# sh ip ospf neighbor

    Neighbor ID Pri State           Dead Time Address         Interface            RXmtL RqstL DBsmL
r1#
```bash

As you can see from above there are currently not any OSPF neighbors at
this point. Why is that?

Let's now configure router2 (r2) as we did on router1 (r1) by doing the
following on router2 (r2).

```bash
conf t
router ospf
ospf router-id 192.168.250.102
log-adjacency-changes
network 192.168.250.102/24 area 1
```bash

Now validate our running configuration on router2 (r2).

```bash
do sh run
....
Current configuration:
!
hostname r2
password 8 BpxcNI0tq1ucU
enable password 8 yRT9wFRpJ3H5k
log file /var/log/quagga/ospfd.log
log stdout
log syslog
service password-encryption
!
debug ospf event
debug ospf packet all
!
!
interface eth0
!
interface eth1
!
interface eth2
!
interface eth3
!
interface eth4
!
interface lo
!
router ospf
 ospf router-id 192.168.250.102
 log-adjacency-changes
 network 192.168.250.102/24 area 0.0.0.1
!
line vty
!
end
```text

Now while still on router2 (r2) let's do the following.

```bash
end
....
sh ip ospf neighbor
....
    Neighbor ID Pri State           Dead Time Address         Interface            RXmtL RqstL DBsmL
192.168.250.101   1 Full/DR           35.006s 192.168.250.101 eth1:192.168.250.102     0     0     0

sh ip ospf route
....
============ OSPF network routing table ============
N    192.168.250.0/24      [10] area: 0.0.0.1
                           directly attached to eth1

============ OSPF router routing table =============

============ OSPF external routing table ===========
```text

What do you see? You should see we now have an OSPF neighbor which is
router1 (r1).

So now let's jump over to router1 (r1) and show our OSPF neighbors
there as well.

```bash
sh ip ospf neighbor
....
r1# sh ip ospf neighbor

    Neighbor ID Pri State           Dead Time Address         Interface            RXmtL RqstL DBsmL
192.168.250.102   1 Full/Backup       38.534s 192.168.250.102 eth1:192.168.250.101     0     0     0
r1#
```text

We see our OSPF neighbor is indeed router2 (r2) on router1 (r1) now as
well.

And if we look at our routes on router1 (r1).

```bash
sh ip ospf route
....
r1# sh ip ospf route
============ OSPF network routing table ============
N    192.168.250.0/24      [10] area: 0.0.0.1
                           directly attached to eth1

============ OSPF router routing table =============

============ OSPF external routing table ===========

r1#
```text

What did you notice on router1 (r1) and router2 (r2) when showing our
routes?
Let's see what is going on. But before we go further let's write our
configuration and save it on both router1 (r1) and router2 (r2). In order to
do that we need to do the following on both routers.

Router1 (r1):

```bash
wr mem
....
r1# wr mem
Configuration saved to /etc/quagga/ospfd.conf
r1#
```text

Router2 (r2):

```bash
wr mem
....
r2# wr mem
Configuration saved to /etc/quagga/ospfd.conf
r2#
```text

And now exit the OSPF daemon on each router to get us back to a command
prompt.

```bash
exit
```text

Now back on our command prompt on each router (router1 (r1) and router2
(r2)). Let's look at our diagram again and run some ping tests to see
what is going on.

Sitting on router1 (r1) let's run some ping tests to router2 (r2).

```bash
ping -c 4 2.2.2.10
....
vagrant@r1:/vagrant$ ping -c 4 2.2.2.10
PING 2.2.2.10 (2.2.2.10) 56(84) bytes of data.

--- 2.2.2.10 ping statistics ---
4 packets transmitted, 0 received, 100% packet loss, time 3025ms
....
ping -c 4 192.168.23.12
....
vagrant@r1:/vagrant$ ping -c 4 192.168.23.12
PING 192.168.23.12 (192.168.23.12) 56(84) bytes of data.

--- 192.168.23.12 ping statistics ---
4 packets transmitted, 0 received, 100% packet loss, time 3025ms
....
ping -c 4 192.168.12.12
....
vagrant@r1:/vagrant$ ping -c 4 192.168.12.12
PING 192.168.12.12 (192.168.12.12) 56(84) bytes of data.
64 bytes from 192.168.12.12: icmp_seq=1 ttl=64 time=0.000 ms
64 bytes from 192.168.12.12: icmp_seq=2 ttl=64 time=0.302 ms
64 bytes from 192.168.12.12: icmp_seq=3 ttl=64 time=0.269 ms
64 bytes from 192.168.12.12: icmp_seq=4 ttl=64 time=0.380 ms

--- 192.168.12.12 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3000ms
rtt min/avg/max/mdev = 0.000/0.237/0.380/0.144 ms
```text

What happened? We cannot reach the interfaces on router2 (r2) other than
192.168.12.12 correct? Why is that?

Here is why...

We can reach 192.168.12.12 because we are directly connected to the same
network from router1 (r1) with our interface 192.168.12.11 whereas
2.2.2.10 and 192.168.23.12 are on interfaces on the other side of the
router not directly connected. So what went wrong here and how do we
configure router2 (r2) to allow us to reach those interfaces from
router1 (r1)?

We can fix it a few different ways actually.

One way is to add redistribute connected to our OSPF configuration;
which if you remember from our configuration back on the Auto-configured
OSPF post is what was configured (via Ansible variables - seen below),
but maybe that is not what we want to do in this scenario.

Ansible variables
(_/etc/ansible/roles/mrlesmithjr.quagga/defaults/main.yml_) which
defined which redistribute modes to add.

```yaml
quagga_ospf_redistribute:
  - connected
##  - kernel
##  - static
##  - isis
##  - rip
```text

But for the sake of validating and learning let's add this on router2
(r2).

So jump over to our ssh session to router2 (r2) and connect back into
the OSPF daemon as we did above and add redistribute connected to our
OSPF configuration.

```bash
telnet localhost 2604
....
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.

Hello, this is Quagga (version 0.99.22.4).
Copyright 1996-2005 Kunihiro Ishiguro, et al.


User Access Verification

Password:
r2>
....
en
....
r2> en
Password:
r2#
....
conf t
router ospf
redistribute connected
```text

Now jump back over to router1 (r1) command prompt and run our ping tests
again.

```bash
ping -c 4 2.2.2.10
....
vagrant@r1:/vagrant$ ping -c 4 2.2.2.10
PING 2.2.2.10 (2.2.2.10) 56(84) bytes of data.
64 bytes from 2.2.2.10: icmp_seq=1 ttl=64 time=0.332 ms
64 bytes from 2.2.2.10: icmp_seq=2 ttl=64 time=0.277 ms
64 bytes from 2.2.2.10: icmp_seq=3 ttl=64 time=0.344 ms
64 bytes from 2.2.2.10: icmp_seq=4 ttl=64 time=0.253 ms

--- 2.2.2.10 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 2998ms
rtt min/avg/max/mdev = 0.253/0.301/0.344/0.041 ms
....
ping -c 4 192.168.23.12
....
vagrant@r1:/vagrant$ ping -c 4 192.168.23.12
PING 192.168.23.12 (192.168.23.12) 56(84) bytes of data.
64 bytes from 192.168.23.12: icmp_seq=1 ttl=64 time=0.313 ms
64 bytes from 192.168.23.12: icmp_seq=2 ttl=64 time=0.291 ms
64 bytes from 192.168.23.12: icmp_seq=3 ttl=64 time=0.298 ms
64 bytes from 192.168.23.12: icmp_seq=4 ttl=64 time=0.255 ms

--- 192.168.23.12 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 2998ms
rtt min/avg/max/mdev = 0.255/0.289/0.313/0.024 ms
```text

Boom! Look there now! Our routing is working from router1 (r1) to
router2 (r2) now. But again this is because why? Because we added
redistribute connected to our OSPF configuration on router2 (r2).
Let's look at our OSPF routes on router1 (r1)

```bash
telnet localhost 2604
....
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.

Hello, this is Quagga (version 0.99.22.4).
Copyright 1996-2005 Kunihiro Ishiguro, et al.


User Access Verification

Password:
r1> en
Password:
r1# sh ip ospf route
============ OSPF network routing table ============
N    192.168.250.0/24      [10] area: 0.0.0.1
                           directly attached to eth1

============ OSPF router routing table =============
R    192.168.250.102       [10] area: 0.0.0.1, ASBR
                           via 192.168.250.102, eth1

============ OSPF external routing table ===========
N E2 2.2.2.0/24            [10/20] tag: 0
                           via 192.168.250.102, eth1
N E2 10.0.2.0/24           [10/20] tag: 0
                           via 192.168.250.102, eth1
N E2 192.168.12.0/24       [10/20] tag: 0
                           via 192.168.250.102, eth1
N E2 192.168.23.0/24       [10/20] tag: 0
                           via 192.168.250.102, eth1

r1#
```text

As you see from the above we now have routes populated from router2 (r2)
to router1 (r1). How about if we look at our routes on router2 (r2)?

```bash
telnet localhost 2604
....
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.

Hello, this is Quagga (version 0.99.22.4).
Copyright 1996-2005 Kunihiro Ishiguro, et al.


User Access Verification

Password:
r2> en
Password:
r2# sh ip ospf route
============ OSPF network routing table ============
N    192.168.250.0/24      [10] area: 0.0.0.1
                           directly attached to eth1

============ OSPF router routing table =============

============ OSPF external routing table ===========

r2#
```text

What do you see? No routes have been configured to be redistributed from
router1 (r1) right?
Validate from router2 (r2) that you cannot ping the following interfaces
(reference the diagram again).

```bash
ping -c 4 1.1.1.10
....
vagrant@r2:~$ ping -c 4 1.1.1.10
PING 1.1.1.10 (1.1.1.10) 56(84) bytes of data.

--- 1.1.1.10 ping statistics ---
4 packets transmitted, 0 received, 100% packet loss, time 3000ms

vagrant@r2:~$
....
ping -c 4 192.168.14.11
....
vagrant@r2:~$ ping -c 4 192.168.14.11
PING 192.168.14.11 (192.168.14.11) 56(84) bytes of data.

--- 192.168.14.11 ping statistics ---
4 packets transmitted, 0 received, 100% packet loss, time 3016ms

vagrant@r2:~$
```text

We are indeed not able to reach those interfaces as you can see. So
let's solve this another way instead of adding redistribute connected
to our OSPF configuration on router1 (r1).

On router1 (r1) we will define our networks (subnets) in our OSPF
configuration to solve these routing issues this time. What this method
is doing for us is enabling OSPF on the interface in which these
networks are connected, and in turn the neighbor will establish a
connection and our routes will be added.

We will do that by doing the following.

Make sure that you have established a telnet session with the OSPF
daemon on router1 (r1) and execute the following.
Validate that our OSPF configuration looks like the following on router1
(r1) first.

```bash
sh run
....
!
router ospf
 ospf router-id 192.168.250.101
 log-adjacency-changes
 network 192.168.250.101/24 area 0.0.0.1
!
```bash

Now let's configure our networks (subnets)

```bash
conf t
router ospf
network 1.1.1.0/24 area 1
network 192.168.14.0/24 area 1
do sh run
....
router ospf
 ospf router-id 192.168.250.101
 log-adjacency-changes
 network 1.1.1.0/24 area 0.0.0.1
 network 192.168.14.0/24 area 0.0.0.1
 network 192.168.250.101/24 area 0.0.0.1
!
```bash

Now jump over to router2 (r2) and run the ping tests again that we did
previously.

```bash
ping -c 4 1.1.1.10
....
vagrant@r2:~$ ping -c 4 1.1.1.10
PING 1.1.1.10 (1.1.1.10) 56(84) bytes of data.
64 bytes from 1.1.1.10: icmp_seq=1 ttl=64 time=0.262 ms
64 bytes from 1.1.1.10: icmp_seq=2 ttl=64 time=0.423 ms
64 bytes from 1.1.1.10: icmp_seq=3 ttl=64 time=0.304 ms
64 bytes from 1.1.1.10: icmp_seq=4 ttl=64 time=0.304 ms

--- 1.1.1.10 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3001ms
rtt min/avg/max/mdev = 0.262/0.323/0.423/0.061 ms
vagrant@r2:~$
....
ping -c 4 192.168.14.11
....
vagrant@r2:~$ ping -c 4 192.168.14.11
PING 192.168.14.11 (192.168.14.11) 56(84) bytes of data.
64 bytes from 192.168.14.11: icmp_seq=1 ttl=64 time=0.312 ms
64 bytes from 192.168.14.11: icmp_seq=2 ttl=64 time=0.394 ms
64 bytes from 192.168.14.11: icmp_seq=3 ttl=64 time=0.315 ms
64 bytes from 192.168.14.11: icmp_seq=4 ttl=64 time=0.337 ms

--- 192.168.14.11 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3000ms
rtt min/avg/max/mdev = 0.312/0.339/0.394/0.037 ms
vagrant@r2:~$
```bash

Success!!!!!
Now look at your routing table once again on router2 (r2).

```bash
ip route
....
vagrant@r2:~$ ip route
default via 10.0.2.2 dev eth0
1.1.1.0/24 via 192.168.250.101 dev eth1  proto zebra  metric 20
2.2.2.0/24 dev eth4  proto kernel  scope link  src 2.2.2.10
10.0.2.0/24 dev eth0  proto kernel  scope link  src 10.0.2.15
192.168.12.0/24 dev eth3  proto kernel  scope link  src 192.168.12.12
192.168.14.0/24 via 192.168.250.101 dev eth1  proto zebra  metric 20
192.168.23.0/24 dev eth2  proto kernel  scope link  src 192.168.23.12
192.168.250.0/24 dev eth1  proto kernel  scope link  src 192.168.250.102
vagrant@r2:~$
```bash

What is the other way to look at our routes on router2 (r2)? I know, I
am getting a little less forthcoming with all of the details now right?
Well we ARE learning here right? :)

```bash
vagrant@r2:~$ telnet localhost 2604
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.

Hello, this is Quagga (version 0.99.22.4).
Copyright 1996-2005 Kunihiro Ishiguro, et al.


User Access Verification

Password:
r2> en
Password:
r2# sh ip ospf route
============ OSPF network routing table ============
N    1.1.1.0/24            [20] area: 0.0.0.1
                           via 192.168.250.101, eth1
N    192.168.14.0/24       [20] area: 0.0.0.1
                           via 192.168.250.101, eth1
N    192.168.250.0/24      [10] area: 0.0.0.1
                           directly attached to eth1

============ OSPF router routing table =============

============ OSPF external routing table ===========

r2#
```bash

So now I have shown you two different ways on how we can redistribute
our routes from each router into our OSPF topology here. There are of
course; many other ways to accomplish this but this should get you
started.

Now using the diagram go on and configure the remaining routers and see
what your results are. And feel free to report back on your findings so
that others can learn from this as well. Including myself of course :)

**Tip**...If you somehow get things out of sorts....simply run the
Ansible playbook again to get you back into a default configuration from
any one of the routers.

```bash
cd /vagrant
ansible-playbook -i hosts playbook.yml
```bash

Also make sure to save your router configurations as you make changes to
write those configurations out to disk.

```bash
wr mem
```bash

And...validate and decide if you want to save your configuration
changes that were made during this post to GIT. I will let you decide :)

```bash
git status
....
On branch dev
Your branch is up-to-date with 'origin/dev'.
Changes not staged for commit:
  (use "git add ..." to update what will be committed)
  (use "git checkout -- ..." to discard changes in working directory)

    modified:   group_vars/quagga-routers

no changes added to commit (use "git add" and/or "git commit -a")

Remember what we changed in the file above? A variable? Is it important? If so, commit those changes and push them up to your GitHub repository.

Also keep in mind that doing our configurations manually we may want to define our Ansible variables differently to dictate our Auto-configured OSPF method. More on this later.

Enjoy!

Up next…Auto-configured OSPF from Manual-configured OSPF…