一、在单个设备上配置OSPF
1、剧本案例与释义
注意!!!:由于版本原因,实际需要将11行的过时参数“transport”更换为“auth_pass”
yaml 剧本总是以三个破折号开头
2行,name为playbook名称
15行,模块“ios_config”,用以允许我们对网络设备进行配置更改。
18行,parents即父命令,是相对于其下的命令而言的。(想象实际配置,需要先进入OSPF配置模式,然后再进行各种其下的命令配置)
更多释义:
我们将在主机R1上进行配置。
我们不会收集有关设备的事实。
我们将使用本地连接。
我们将在本地服务器上运行逻辑。
“基本上,我们将在服务器上运行我们的剧本,而不是通过SSH 连接远程运行它。”
注意 Ansible 中的空格。这个非常重要。与 Python 类似,我们需要小心间距。
2、执行与验证
执行playbook:
被执行者验证:
(最顶部的输出所依命令为:sh ip pro)
【非常】"discovered_interpreter_python": "/usr/bin/python3"
搜解:这个一般是由于ansible的版本太高,而官方推荐你放弃py2而使用py3 我们只需要在ansible.cfg的 [default] 字段中插入简单的选项即可. interpreter_python = /usr/bin/python3
但我因为担心教程中使用的是python2,而若此时修改可能会导致复刻教程时某个环节出现问题,故未尝试更改。
二、在更多设备上配置OSPF
1、验证连通性与ssh是否可用
在控制节点处分配别ping“R1”-“S2”(被控制设备);再使用如下命令挨个ssh登录测试
2、执行与验证
将新主机添加入yaml中的hosts处
最后且最关键的改变在于两个文件中“connection”的值,需要将教程中展示的“local”换成了“network_cli”。从此处得到的启发:[unable to check privilege level]
(成功之后才发现正确的修正答案原来就在“资源”文件中,我还在莫名其妙为什么这些给出的配置文件都和教程中的不一样呢)
hosts文件代码
yml文件代码
注意:此处hosts值使用了hosts文件中定义的组名。若用all则代表hosts中定义的所有组的所有设备。
成功提示:
设备上验证:
(第一个是“sh ip pro”命令的输出)
注意:需要再交换机上使用“vtp mode transparent”,否则被下发的配置并不会应用的running-config中,重复执行playbook下发命令也会看到提示中显示“changed”。
3、VTP的Transparent模式
-
可以添加、修改、删除本地VLAN
【非常】为什么使用vtp命令后依然会显示“changed”——因为在playbook中对vlan的配置如下:
而在设备的“sh run”中的实际配置显示为:
您必须按照在配置文件中看到的方式将其添加到剧本中。详情见:Config changes are always applied, even when is equal to running configuration