Ansible Play book 实现网络自动化

环境准备阶段,利用EVE模拟器桥接Centos 7 系统实现此次实验
在这里插入图片描述

整体网络拓扑
在这里插入图片描述
eve桥接设置

一.创建网络yum源

1.进入yum源所在文件路径
cd /etc/yum.repos.d/
2.用wget命令下载repo文件
wget https://mirrors.aliyun.com/repo/Centos-7.repo
3.若没有wget命令,则要安装wget命令
yum install -y wget
4.执行yum源更新命令
yum clean all
yum makecache
yum update -y
如果不使用网络yum源那么有些插件可能会导致没有yum源安装失败

二、安装Ansible

1.设置EPEL仓库
Ansible仓库默认不在yum仓库中,因此我们需要使用下面的命令启用epel仓库。
[root@xuegod63 ~]# yum install epel-release -y
2. 使用yum安装Ansible
[root@xuegod63 ~]# yum install ansible -y
安装完成后,检查ansible版本:
[root@xuegod63 ~]# ansible --version

三、Cisco 开启SSH

hostname R1 ;配置设备名称
ip domain name xxx.com ;设置域名
crypto key generate rsa modulus 1024 ;生成密钥对
lin vty 0 4 ;进入虚拟终端
login local ;使用本地认证
transport input ssh ;允许登入
username huawei password hcie ;创建本地用户名密码
enable password CCIE ;设置enable模式密码

四、linux系统配置域名

vi /etc/hosts

[root@localhost ~]# ssh huawei@R1 ;测试
Password:
R1>
R1>

五、设置ansible主机清单&忽略接收指纹信息

5.1 设置主机清单
(1)修改配置文件

vi /etc/ansible/hosts                            **;编辑主机清单文件**
[cisco]                                          **;创建cisco组**
[cisco:vars]								     **;定义cisco组模块变量**
ansible_ssh_user="cisco"                         **;ssh用户名为cisco**
ansible_ssh_pass="CCIE"			       		     **;ssh用户组名为CCIE**
ansible_connection=network_cli				     **;连接方式使用cli** 
ansible_network_os=ios				             **;操作系统为cisco ios** 
ansible_become=yes					             **;是否获取高级权限**
ansible_become_method=enable		             **;获取enable 的权限**
ansible_become_pass=CCIE			             **;enable的密码为CCIE**
[cisco:children]                                 **;定义cisco组的孩子**
router									         **;cisco组中有Router 组**
switch									         **;cisco组中有switch组**
[router]									     **;定义router组**
R1										         **;router组中有R1,与R2**
R2
[switch]							             **;定义switch组**
sw1								                 **;switch组中有sw1与sw2**
sw2

(2)查看主机清单

[root@localhost ~]# ansible-inventory --list        **;查看主机清单信息**

(3)ping 测试

ansible cisco -m ping                    
 **;针对cisco组设备使用ping模块,在组中的设备会回复pong ,与正常的不一样**

ps:这只是一个cisco组,同样情况下,可以定义很多很多组,针对不同型号的设备**

5.2 设置忽略接受指纹信息

 vi /etc/ansible/ansible.cfg                   **;编辑ansible配置文件**
[defaults]
host_key_checking = False

六、ad-hoc模式测试

ansible cisco -m ios_command -a "commands='show run '"     
 **;针对cisco组中设备,-m调用ios_command模块,-a指定参数,参数为查看所有配置**
ansible cisco -m ios_command -a "commands='show ip int br  '"  -u huawei -k hcie  
 **;-u指定登入用户名,-k指定登入密码,凌驾在主机清单上**
ansible R1 -m ios_static_route -a "prefix=2.2.2.2 mask=255.255.255.255 interface=ethernet0/1 next_hop=12.1.1.2 "       
 **;利用ios_static_route 模块配置静态路由**
ansible cisco -m ios_config -a "backup=True"   
**;调用 ios_config模块 执行backup参数备份cisco组中所有配置**

查看
在这里插入图片描述

七、Ansible play book 部署

(1)典型Ansible 配置
配置需求:
针对R1

  • 使用ios_system模块配置设备名称
  • 使用ios_config模块给R1配置环回口
  • 使用ios_config模块给R1E0/1接口配置ip地址
  • 运行OSPF 设置RID 1.1.1.1并宣告网段
  • 给R1创建一个新的用户名密码,admin123 密码admin123

编写剧本文件:

vim lab_R1.yml
---
 - hosts: R1
   tasks:
           - name: R1 hostname
             ios_system: hostname=R1
           - name: R1 lookpback config
             ios_config:
                   lines:
                        - ip add 1.1.1.1 255.255.255.0
                        - no shutdown
                   parents:
                        - int loo 0
           - name: R1 e0/1 config
             ios_config:
                   lines:
                        - ip add 12.1.1.1 255.255.255.0
                        - no shutdown
                   parents:
                        - int e0/1
           - name: R1 ospf config
             ios_config:
                   lines:
                        - router-id 1.1.1.1
                        - network 12.1.1.0 0.0.0.255 area 0
                        - network 1.1.1.0  0.0.0.255 area 0
                   parents:
                        - router ospf 110
           - name: R1 useradd
             ios_config:
                   lines:
                        - username admin123 password admin123
ansible-playbook lab_R2.yml    #执行剧本

针对R2

  1. 使用ios_system模块配置设备名称
  2. 使用ios_config模块给R2 配置环回口
  3. 使用ios_config模块给R2 E0/1接口配置ip地址
  4. 运行OSPF 设置RID 2.2.2.2 并宣告网段
  5. 给R2创建一个新的用户名密码,admin123 密码admin123

编写剧本文件
ps:与R1大同小异,直接复制粘贴,修改细节即可

vim lab_R2.yml
---
 - hosts: R2
   tasks:
           - name: R2 hostname
             ios_system: hostname=R1
           - name: R2 lookpback config
             ios_config:
                   lines:
                        - ip add 2.2.2.2 255.255.255.0
                        - no shutdown
                   parents:
                        - int loo 0
           - name: R2 e0/1 config
             ios_config:
                   lines:
                        - ip add 12.1.1.2 255.255.255.0
                        - no shutdown
                   parents:
                        - int e0/1
           - name: R2 ospf config
             ios_config:
                   lines:
                        - router-id 2.2.2.2
                        - network 12.1.1.0 0.0.0.255 area 0
                        - network 2.2.2.0  0.0.0.255 area 0
                   parents:
                        - router ospf 110
           - name: R2 useradd
             ios_config:
                   lines:
                        - username admin123 password admin123
ansible-playbook lab_R2.yml   #执行剧本

查看验证
在这里插入图片描述

(2)使用数组,与变量定义Ansible剧本
配置需求:
针对R1

分别在e0/1口,e0/0口,lookpback 0口配置DHCP中继,中继地址为 3.3.3.3与2.2.2.2
编写剧本文件:

vim dhcp_relay.yml 
---
- hosts: R1

  tasks:
          - name: config config DHCP relay for all inter on R1
            ios_config:
                    lines:
                             ["ip helper-address 3.3.3.3","ip helper-address 2.2.2.2"]
                    parents: "{{ item }}"        #调用变量
            with_items:                          #定义变量
                    - interface loopback 0
                    - interface e0/1
                    - interface e0/0

知识点解析:

  • [“ip helper-address 3.3.3.3”,“ip helper-address 2.2.2.2”]
    #定义数组,可以在数组中定义N条命令;
  • “{{ item }}” #调用变量 item
  • with_items: #定义变量,变量中可以包含多个内容 利用数组和变量,可以节省play-book的代码量,节省时间

(3)调用外部变量,
配置需求:
针对R2

  1. 创建账号为Tigerlab ,密码为XCIE,优先级为15的账号
  2. 创建账号为 CISCO1,密码为CCIE,优先级为10的账号
  3. 创建账号为HUAWEI1,密码为HCIE,优先级为5的账号

编写变量文件:

users:  #变量名称为users 
        - {username: Tigerlab,password: XCIE,privilege: 15}
        - {username: CISCO1,password: CCIE,privilege: 10}
        - {username: HUAWEI1,password: HCIE,privilege: 5}

编写剧本文件:

vim user.yml
- hosts: R2
  vars_files: uservars.yml   #调用外部变量指定文件名,可以是绝对路径或相对路径
  tasks:
          - name: add user on R2
            ios_user:
                    name: "{{ item.username }}"    #调用item变量
                    configured_password: "{{ item.password }}"
                    password_type: password
                    privilege: "{{ item.privilege }}"
            with_items: "{{ users }}"    #调用user变量到items 

知识点解析:

  • 通过外部变量特性,如果在需要增加新的用户直接修改外部变量文件即可
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值