Ansible

Ansible 简介

Ansible是一款开源的自动化平台。它是一种简单的自动化语言,能够在Ansible playbook中完美地描述IT应用基础架构。Ansible 是近年来越来越火的一款开源运维自动化工具,通过Ansible可以实现运维自动化,提高运维工程师的工作效率,减少人为失误。Ansible 通过本身集成的非常丰富的模块可以实现各种管理任务,其自带模块超过上千个。更为重要的是,它操作非常简单,即使小白也可以轻松上手,但它提供的功能又非常丰富,在运维领域,几乎可以做任何事。

为什么Ansible备受青睐

业界也有很多款自动化的工具,比如Puppet、SaltStack等,那么为什么Ansible备受青睐呢?

工具领域特定语言描述
AnsibleYAMLPython,可维护性较高,架构简单,Windows平台支持有限
SaltStackSLS,支持YAMLPython,简单快速灵活,Windows平台支持有限,大规模多功能支持欠缺
PuppetRubyRuby,成熟度高,但学习曲线较陡
ChefRubyRuby,成熟度高,但学习曲线较陡

总结就是Ansible优秀,出色的原因是简单易用,内置丰富的模块,几乎可以满足一切需求,而且能够支持跨平台,高可读性易于维护,高重用性提升效率,能够快速有效完成自动化运维工作。

Ansible 架构

在这里插入图片描述
上图为ansible的基本架构,从上图可以了解到其由以下部分组成:

  1. 核心:ansible
  2. 核心模块(Core Modules):这些都是ansible自带的模块
  3. 扩展模块(Custom Modules):如果核心模块不足以完成某种功能,可以添加扩展模块
  4. 插件(Plugins):完成模块功能的补充
  5. 剧本(Playbooks):ansible的任务配置文件,将多个任务定义在剧本中,由ansible自动执行
  6. 连接插件(Connectior Plugins):ansible基于连接插件连接到各个主机上,虽然ansible是使用ssh连接到各个主机的,但是它还支持其他的连接方法,所以需要有连接插件
  7. 主机群(Host Inventory):定义ansible管理的主机

Ansible 工作流程

在这里插入图片描述

  1. 根据指定的设备清单
  2. 调用指定的模块函数,传入指定的参数,实现批量配置。复杂编排中可能涉及到一些判断循环以及通知调用(比如升级完设备通知一个脚本重启设备)

对于网工,为什么需要了解Ansible

简单来讲三个字“自动化”。自动化一般被认为是速度快,但是,考虑到一些任务并不要求速度,这就是为什么一些 IT 团队没有认识到自动化的价值所在。VLAN 配置是一个非常好的例子,因为,你可能会想,“创建一个 VLAN 到底有多快?一般情况下每天添加多少个 VLAN?我真的需要自动化吗?”
综上所述,那么标题就可以替换为对于网络自动化,为什么要使用Ansible。且听我为你分解。

无代理:

现网中从 DMZ 和园区,到分支机构和数据中心,最大份额的设备 并不具有最新 API 的设备。从自动化的角度来看,API 可以使做一些事情变得很简单,像 Ansible 这样的无代理平台有可能去自动化和管理那些 老旧(传统) 的设备。但是Ansible 是一个无代理架构,它实现自动化是非常简单的,而不仅仅是对那些没有 API 的传统设备,但也有通过 REST API 的软件定义网络解决方案,在所有的终端上不需要有额外的软件(指的是代理)。最终的结果是,使用 Ansible,无论有或没有 API,可以使任何类型的设备都能够自动化。

自由开源软(FOSS):

Ansible 是一个开源软件,它的全部代码在 GitHub 上都是公开可访问的,使用 Ansible 是完全免费的。它可以在几分钟内完成安装并为网络工程师提供有用的价值。虽然 Ansible 是开源的,它也有一个叫 Ansible Tower 的企业产品,它增加了一些特性,比如,基于规则的访问控制(RBAC)、报告、 web UI、REST API、多租户等等,(相比 Ansible)它更适合于企业去部署,这里不做重点介绍了。

可扩展性:

Ansible 主要是为部署 Linux 应用程序而构建的自动化平台,虽然从早期开始已经扩展到 Windows。但是,Ansible 开源项目并没有“自动化网络基础设施”的目标。事实上是,Ansible 社区更明白如何在底层的 Ansible 架构上更具灵活性和可扩展性,对于他们的自动化需要(包括网络)更容易成为一个 扩展 的 Ansible。网络系统供应商的领导者,比如,Huawei、Arista、Juniper、Cumulus、Cisco、F5、和 Palo Alto Networks等。

集成到已存在的DevOps工作流中:

Ansible 在 IT 组织中被用于应用程序部署。它被用于需要管理部署、监视和管理各种类型的应用程序的运维团队中。通过将 Ansible 集成到网络基础设施中,当新应用程序到来或迁移后,它扩展了可能的范围。而不是去等待一个新的顶架交换机(TOR,一种数据中心设备接入的方式)的到来、去添加一个 VLAN、或者去检查接口的速度/双工,所有的这些以网络为中心的任务都可以被自动化,并且可以集成到 IT 组织内已经存在的工作流中。

幂等性:

幂等性的本质是允许定义的任务,运行一次或者上千次都不会在目标系统上产生不利影响,仅仅是一种一次性的改变。换句话说,如果有一个要做的改变去使系统进入到它期望的状态,这种改变完成之后,并且,如果这个设备已经达到这种状态,就不会再发生改变。举一个例子,如果你有一个配置 10 个 VLAN 的文件文件或者脚本,那么 每次 运行这个脚本,相同的命令命令会被输入 10 次。如果使用一个幂等的 Ansible 模块,首先会从网络设备中采集已存在的配置,并且,每个新的 VLAN 被配置后会再次检查当前配置。仅仅当这个新的 VLAN 需要被添加(或者,比如说改变 VLAN 名字)是一个变更,命令才会真实地推送到设备。

Ansible 实施篇章,点击 click here跳转查阅

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Alex-Liu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值