0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看威廉希尔官方网站 视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

网络设备自动化运维工具—ansible入门笔记介绍

网络威廉希尔官方网站 干货圈 来源:网络威廉希尔官方网站 干货圈 2024-01-15 13:46 次阅读

Ansible概述:

Ansible是一款自动化运维工具,基于Python开发,集合了众多运维工具 (Puppet、CFengine、Chef、SaltStack)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。

Ansible是基于模块工作的,本身没有批量部署的能力。真正具有批量部署的是ansible所运行的模块,ansible只是提供一种框架。

Ansible支持丰富的的网络模板:

网络设备相关的模板请参照:

https://docs.ansible.com/ansible/2.9/modules/list_of_network_modules.html

例如:cisco ios模块

3f37428a-b369-11ee-8b88-92fbcf53809c.png

Ansible原理:

3f3b168a-b369-11ee-8b88-92fbcf53809c.png

Ansible对local本地的linux系统进行配置;

Ansible通过SSH对node(例如网络设备)进行配置;

在其他linux上装插件,management node通过插件和其他node进行通信,完成自动化配置。

Ansible安装:

Centos:
yum install -y epel-release
yum install -y enable

ansible --version //查看版本号

3f3ed842-b369-11ee-8b88-92fbcf53809c.png

centos8默认使用的是python3.6.8版本

ansible的重要文件:

3f5ffdc4-b369-11ee-8b88-92fbcf53809c.png

ansible.cfg:ansible的系统配置文件。

hosts:定义登陆设备相关的文件。

解决SSH Known host key的问题:ssh第一次连接设备,都会弹出确认密钥的信息。有两种方式可以解决:

3f6b1fe2-b369-11ee-8b88-92fbcf53809c.png

hosts文件配置:
[CSR1] # 定义第一个设备的IP地址
192.168.0.66

[CSR2] # 定义第二个设备的IP地址
192.168.0.77

[CSR:children] # 将两个设备加组
CSR1
CSR2

[CSR:vars]
ansible_become=yes # 说明设备有enable密码,不需要的话可以跳过这一步
ansible_become_method=enable
ansible_become_password=‘cisco’ # enable密码
ansible_password=‘Cisc0123’ # SSH密码
ansible_user=‘prin’ # SSH账号
ansible_connection=network_cli # 连接方式
ansible_network_os=ios

Playbook(剧本)简介:

Playbook是由一个或多个"play"组成的列表。play的主要功能在于将事先归为一组的主机装扮成事先通过ansible中的task定义好的角色。从根本上来讲,所谓的task无非是调用ansible的一个module(在上文给出的官方网站中去找)。将多个play组织在一个playbook中,即可以让他们联通起来按事先编排的机制同唱一台大戏。

剧本本身是一个yaml文件,什么是yaml文件,请参考:https://blog.csdn.net/tushanpeipei/article/details/116883378?spm=1001.2014.3001.5501

例如:

3f6fe626-b369-11ee-8b88-92fbcf53809c.png

可以在其中看到{{}},表示jinja2模板替换,我们通常需要在另外一个yaml文件中保存需要使用的数据。例如:

3f73b184-b369-11ee-8b88-92fbcf53809c.png

实验测试:

实验目的:

完成CSR1和CSR2的基础配置。

前提准备:

两台CSR1000v设备,地址为192.168.0.66和192.168.0.77。

在两台设备上提前配置好SSH。

步骤一: 解决SSH Known host key的问题和配置hosts文件。

步骤二: 实验ping模块测试连通性(实际上是用ping和ssh)

ansibleCSR-mping-o

CSR为组名,会测试组中所有的设备,连通性无误后再进行后续步骤。

步骤三: 找到需要配置的具体模块,例如,需要配置接口的IP地址:

3f866342-b369-11ee-8b88-92fbcf53809c.png

找到对应的模板信息:

3f8a1d66-b369-11ee-8b88-92fbcf53809c.png

步骤四: 组织各个模板信息组成playbook并且组织记录数据。

config_data.yaml:

---
csr_ifs:
-{ip:1.1.1.1/32,port:Loopback0,router:192.168.0.66}
-{ip:10.1.1.1/24,port:GigabitEthernet2,router:192.168.0.66}
-{ip:2.2.2.2/32,port:Loopback0,router:192.168.0.77}
-{ip:10.1.1.2/24,port:GigabitEthernet2,router:192.168.0.77}

csr_ospf_nets:
-{area:0,mask:0.0.0.0,network:1.1.1.1,router:192.168.0.66}
-{area:0,mask:0.0.0.255,network:10.1.1.0,router:192.168.0.66}
-{area:0,mask:0.0.0.0,network:2.2.2.2,router:192.168.0.77}
-{area:0,mask:0.0.0.255,network:10.1.1.0,router:192.168.0.77}

csr_ospf_router_id:
-{router:192.168.0.66,routerid:1.1.1.1}
-{router:192.168.0.77,routerid:2.2.2.2}

csr_domain_name:"cisco.com"

csr_name_servers:"114.114.114.1148.8.8.8"


csr_syslog_level:
-{dest:console,level:notifications}

csr_syslog_hosts:
-192.168.0.188
-192.168.0.166

csr_user_db:
-{username:qytadmin,privilege:15,password:Cisc0123}
-{username:otheradmin,privilege:1,password:Cisc0123}

...

csr_config_playbook.yaml:

---
-hosts:CSR#playbook操作的设备,这里是CSR组,包含CSR1和CSR2,也就是两个设备都将执行一遍playbook
gather_facts:fase
connection:local
vars_files:
-config_data.yaml#加载数据记录的yaml文件

tasks:
-name:CSR_task_interface#ios_l3_interface(配置IP)
ios_l3_interfaces:
config:
-name:"{{item.port}}"#item为csr_ifs中的每一个元素,可以看到每个元素是一个字典,.port是提取其中port对应的value,替换到模板中
ipv4:
-address:"{{item.ip}}"
with_items:"{{csr_ifs}}"#导入config_data.yaml中csr_ifs这个部分的配置内容
when:(item.router==inventory_hostname)#条件判断,当IP地址等于router的IP才执行此任务,用于CSR1和CSR2配置不同的IP地址

-name:noshutdowninterface#ios_interface(打开接口)
ios_interfaces:
config:
-name:"{{item.port}}"
enabled:True
with_items:"{{csr_ifs}}"
when:(item.router==inventory_hostname)

-name:ospfrouter-id#ios_config(配置OSPF的router-id)
ios_config:
lines:
-router-id{{item.routerid}}
parents:routerospf1
with_items:"{{csr_ospf_router_id}}"
when:(item.router==inventory_hostname)

-name:ospfnetwork#ios_config(通告接口到OSPF进程)
ios_config:
lines:
-network{{item.network}}{{item.mask}}area{{item.area}}
parents:routerospf1
with_items:"{{csr_ospf_nets}}"
when:(item.router==inventory_hostname)

-name:domain#配置域名
ios_system:
domain_name:"{{csr_domain_name}}"

-name:DNS#配置DNS
ios_system:
name_servers:
-"{{csr_name_servers}}"

-name:logging_level#配置日志level
ios_logging:
dest:"{{item.dest}}"
facility:local7
level:"{{item.level}}"
state:present
with_items:"{{csr_syslog_level}}"

-name:logging_host#配置logging服务器
ios_logging:
dest:host
name:"{{item}}"
state:present
with_items:"{{csr_syslog_hosts}}"

-name:ios_user#管理和创建用户
no_log:true
ios_user:
name:"{{item.username}}"
privilege:"{{item.privilege}}"
configured_password:"{{item.password}}"
password_type:password
state:present
with_items:"{{csr_user_db}}"

-name:SAVECSRSCONFIG#任务名字
ios_config:#模块名字
backup:yes#是否备份
save_when:modified#当配置修改就保存配置
...

步骤五: 找到playbook文件,运行:

ansible-playbookCSR_config_playbook.yaml
3f8daa44-b369-11ee-8b88-92fbcf53809c.png

可以看到上述图片中蓝色的显示,为skipping,也就是剧本里匹配条件没有匹配到,跳过的步骤。

注意: 由于剧本的最后一个任务设置的备份配置,那么在哪运行了剧本,会在哪个目录下产生一个backup目录,其中记录了备份的配置。







审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Linux
    +关注

    关注

    87

    文章

    11295

    浏览量

    209347
  • CSR
    CSR
    +关注

    关注

    3

    文章

    118

    浏览量

    69627
  • SSH
    SSH
    +关注

    关注

    0

    文章

    188

    浏览量

    16335
  • python
    +关注

    关注

    56

    文章

    4792

    浏览量

    84631

原文标题:网络设备自动化运维工具——ansible入门笔记

文章出处:【微信号:网络威廉希尔官方网站 干货圈,微信公众号:网络威廉希尔官方网站 干货圈】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    诚聘高级自动化工程师

    猎头职位:高级自动化工程师【合肥】工作职责: 1、根据基础架构管理需求,规划设计
    发表于 12-12 10:37

    锐捷助互联网数据中心网络自动化、可视

    数据中心网络提出了相当高的要求。开放、标准、模块、软件定义、虚拟自动
    发表于 01-25 09:42

    【深圳】诚聘开发工程师

    自动化平台、负载均衡、调度系统开发经验者优先;6. 理解HTTP/HTTPS、DNS、LDAP等常见服务原理;7. 熟悉Ansible自动化
    发表于 07-04 14:34

    学习Linux发展方向

    及丢失等)、对网站的故障进行监控、解决网站运行的潜在安全问题、开发自动化脚本程序提高工作效率、规划网站架构、程序发布流程和规范,制定工作制度和规范、配合开发人员部署并调试产品研发需要的测试环境、代码
    发表于 07-25 17:15

    ansible-first-book 自动化工具

    ansible-first-book 自动化工具
    发表于 09-08 09:31 5次下载

    配电自动化实用指标研究

    根据《配电自动化实用化验收细则》中对配电自动化考核要求,重点围绕终端在线率、遥信动作正确率、遥控使用率与遥控成功率四项指标进行考核。目前对配电
    发表于 03-05 14:55 0次下载

    厉害了!山东电力自动化平台正式投

    日前,国网山东省电力集团公司通过了山东信息通信威廉希尔官方网站 监督装备及支撑工具开发实施项目的验收,代表着
    发表于 04-30 11:18 4449次阅读

    如何区分Puppet,Ansible,Saltstack的作用特点?

    目前主流的自动化工具有puppet、ansible、saltstack,实际上每一个工具都基
    的头像 发表于 08-05 09:00 4810次阅读

    Ansible企业级自动化探索的详细资料说明

    本文档的主要内容详细介绍的是Ansible企业级自动化探索的详细资料说明主要内容包括了:场景一:自动
    发表于 06-03 08:00 2次下载
    <b class='flag-5'>Ansible</b>企业级<b class='flag-5'>自动化</b><b class='flag-5'>运</b><b class='flag-5'>维</b>探索的详细资料说明

    利用Ansible实现OpenStack自动化

    方法行之有效。 简介本文介绍为何Ansible Tower是使用playbook,在OpenStack中创建、部署和配置虚拟机最简单的方法之一。系统性能、IT自动化、复杂系统的部署和快速生产力
    的头像 发表于 12-03 17:29 2808次阅读
    利用<b class='flag-5'>Ansible</b>实现OpenStack<b class='flag-5'>自动化</b>

    一文详解Ansible自动化

    CMDB:CMDB 存储和管理者企业IT架构中的各项配置信息,是构建 ITIL 项目的核心工具人员可以组合 CMDB 和 Ansible,通过 CMDB 直接下发指令调用
    的头像 发表于 05-19 17:06 4343次阅读
    一文详解<b class='flag-5'>Ansible</b>的<b class='flag-5'>自动化</b><b class='flag-5'>运</b><b class='flag-5'>维</b>

    使用Ansible的OpenStack自动化

    通过将 Ansible Tower 与 OpenStack 集成到 Cyber Range 软件中,我们能够构建一个应用程序,为全球客户提供按需培训和真实场景。将 Ansible REST API 与行动手册集成,极大地利用了配置到更系统
    的头像 发表于 12-21 14:12 1172次阅读
    使用<b class='flag-5'>Ansible</b>的OpenStack<b class='flag-5'>自动化</b>

    什么是Ansible

    Ansible是一种自动化工具软件,用来批量配置服务器或网络设备(目标主机)。
    的头像 发表于 02-15 14:06 1041次阅读

    为什么需要用Ansible管理crontab呢?

    Ansible 是使用 Python 开发的自动化工具。它可以配置管理,部署软件并编排更高级的任务,例如持续部署或零停机滚动升级。
    的头像 发表于 08-17 09:53 601次阅读

    使用Python批量连接华为网络设备

    随着网络规模的扩大和设备数量的增加,手动配置和管理每台网络设备变得越来越不现实。因此,自动化工具和脚本变得尤为重要。Python语言以其简洁性和强大的第三方库支持,成为了
    的头像 发表于 08-12 17:48 453次阅读