伍佰目录 短网址
  当前位置:海洋目录网 » 站长资讯 » 站长资讯 » 文章详细 订阅RssFeed

运维少年系列- ansbile and cisco (2)

来源:本站原创 浏览:102次 时间:2022-08-08
运维少年系列- ansbile and cisco (2)

骚年 运维少年

ansible and cisco (2)

一、ansible playbook
二、playbook的使用
1) 第一个playbook的使用
2) 第二个playbook
3) 最后一个playbook
三、最后

一、ansible playbook
  • playbook
    playbook 翻译过来就是剧本,什么是剧本?就是编剧写好了所有的情景话语,演员去执行、表达出来。在ansible中,我们就是编剧,而路由器交换机等设备就是演员。所以这个剧本需要我们去写,然后由设备去执行。(讲得不太专业,大家可以自行百度ansible playbook),playbook要以yaml格式编写。

  • playbook可以做什么
    之前的我们的文章演示了单条命令执行,playbook相对于之前的模式更加灵活,我们可以在playbook中加入循环、判断、调用多个模块、执行多个命令等等…所以playbook是(装13)必不可少的。
二、playbook的使用
  • YAML
    YAML跟JSON和XML的区别不大,都有特定的格式。大家可以去看一下YAML的简单用法。一定要注意空格,缩进只能使用空格缩进。

  • 模块
    需要查看网络模块可以点击这里查看。我们今天主要使用的是ios_command和ios_config模块,如下图:

点击模块名,可以看到里面的参数和使用的例子,如下图:

  • ios_command
    ios_command 模块,可以在IOS的路由器交换机上面使用,该模块只能在(# )特权模式下使用,而不能在(config# )全局配置模式下使用。

  • ios_config
    ios_config 模块,同上,不过只能在(config# )全局配置模式下使用,而不能在(# )特权模式下使用
1) 第一个playbook的使用

第一个playbook比较简单,以下注释我以编剧的身份来解释:

 1[root@yunwei ~]# cat ywsn_playbook1.yaml  2---  # yaml以---开头  # 一定要注意以下参数的空格,-和: 后面一定要有空格!!! 3- name: show clock  # 剧本的名字 4  hosts: cisco-2    # 表演的演员 -- 执行的主机(在hosts文件中) 5  gather_facts: false # 检查演员的基本信息 -- 检查主机配置等信息 6  connection: local # 剧本在谁的手里 7  tasks:  # 剧情 8    - name: show clock # 剧情的名字(第1集) 9      ios_command:    # 使用ios_command模块10        commands:     # 使用ios_command模块下的commands参数(即命令执行)11          - show clock # 执行的命令12      register: print_output # 保存在一个文件中(执行的目录下会多出一个.retry文件)13    - debug: var=print_output.stdout_lines # 将文件中的内容打印出来1415    - name: configure loop interfact # 剧情的名字(第2集)16      ios_config:  # 使用ios_config模块17        parents: int loop 0  # 使用 parents参数,表示执行了这个命令之后,才能执行lines18        lines:  # 使用lines参数,执行多条命令19          - ip add 1.1.1.1 255.255.255.020          - no sh21      register: print_output22    - debug: var=print_output2324... # yaml以...结尾

执行效果如下(动图比较慢):

2) 第二个playbook

第二个playbook,我将实现免密登录和循环。playbook如下:

 1[root@yunwei ~]# cat ywsn_playbook2.yaml  2--- 3- name: yunweishaonian ansible and cisco 2  4  hosts: cisco-1 5  gather_facts: false 6  connection: local 7 8  vars:  # 定义一个变量 9    authinfo: # 变量名称10      username: "cisco"  # 变量值11      password: "123456" # 变量值1213  tasks:14    - name: config loop interfact15      ios_config:16        provider: "{{ authinfo }}"  # 验证,验证时使用前面定义的变量17        lines:  # 命令18          - switchport trunk encapsulation dot1q19          - switchport mode trunk20        parents: "{{ item }}"  # 父配置 -- 执行这个,再执行上面的lines(子配置)21      with_items:  # 循环以下变量,循环的值为 item22        - int Ethernet 1/023        - int Ethernet 1/124        - int Ethernet 1/225    - name: show int trunk26      ios_command:27        provider: "{{ authinfo }}"28        commands:29          - show int trunk30      register: print_output31    - debug: var=print_output.stdout_lines3233...3435[root@yunwei ~]# 

执行结果如下(动图比较慢):

3) 最后一个playbook

最后一个playbook,实现引用外部文件的变量、判断。

外部文件config.yaml内容,里面是字典dict,当循环inter的时候,会有三个key,分别是switch、ip、port

1---2inter:3  - {switch: 192.168.108.251, ip: 1.1.1.1, port: loop 1}4  - {switch: 192.168.108.252, ip: 2.2.2.2, port: loop 2}5  - {switch: 192.168.108.253, ip: 3.3.3.3, port: loop 3}6...

hosts 文件

1[root@yunwei ~]# cat /etc/ansible/hosts2[cisco]3192.168.108.2514192.168.108.2525192.168.108.2536[root@yunwei ~]# 

最终代码:

 1[root@yunwei ~]# cat ywsn_playbook3.yaml  2--- 3- name: yunweishaonian ansible and cisco 2 4  hosts: cisco 5  gather_facts: false 6  connection: local 7  vars_files:  # 变量文件,多个变量文件的变量名请不要重复 8    - config.yaml   910  vars:11    authinfo:12      username: "cisco"13      password: "123456"1415  tasks:16    - name: config int loop17      ios_config:18        provider: "{{ authinfo }}"19        lines:20          - ip add {{ item.ip }} 255.255.255.021          - no sh22        parents:23          - interface {{ item.port }}24      with_items: "{{ inter }}"  # 循环inter 字典,得到switch\ip\port三个key25      when: (item.switch == inventory_hostname)  # 判断 switch的值是否等于登录的IP,inventory_hostname是一个默认参数,判断之后,执行上parents和lines2627    - name: config ospf28      ios_config:29        provider: "{{ authinfo }}"30        lines:31          - network 0.0.0.0 255.255.255.255 area 032        parents:33          - router ospf 103435    - name: save switch configure  # 保存配置36      ios_config: 37        provider: "{{ authinfo }}"38        save_when: modified  # 保存配置的条件是,配置发生变化。39...

运行效果如下(动图比较慢):

查看swithc1的路由表,如图:

三、最后

运维少年系列- ansible and cisco 估计就到这了,在看的兄弟右下角点个【在看】好吗感谢~

  推荐站点

  • At-lib分类目录At-lib分类目录

    At-lib网站分类目录汇集全国所有高质量网站,是中国权威的中文网站分类目录,给站长提供免费网址目录提交收录和推荐最新最全的优秀网站大全是名站导航之家

    www.at-lib.cn
  • 中国链接目录中国链接目录

    中国链接目录简称链接目录,是收录优秀网站和淘宝网店的网站分类目录,为您提供优质的网址导航服务,也是网店进行收录推广,站长免费推广网站、加快百度收录、增加友情链接和网站外链的平台。

    www.cnlink.org
  • 35目录网35目录网

    35目录免费收录各类优秀网站,全力打造互动式网站目录,提供网站分类目录检索,关键字搜索功能。欢迎您向35目录推荐、提交优秀网站。

    www.35mulu.com
  • 就要爱网站目录就要爱网站目录

    就要爱网站目录,按主题和类别列出网站。所有提交的网站都经过人工审查,确保质量和无垃圾邮件的结果。

    www.912219.com
  • 伍佰目录伍佰目录

    伍佰网站目录免费收录各类优秀网站,全力打造互动式网站目录,提供网站分类目录检索,关键字搜索功能。欢迎您向伍佰目录推荐、提交优秀网站。

    www.wbwb.net