Ansible 初体验

这是 Ansible 系列的开篇,主要给大家普及一下什么是 Ansible,它是用来做什么的,以及 Ansible 的安装和简单使用。

什么是 Ansible

Ansible 是一款使用开发的自动化管理工具,由 Michael DeHaan 发起、开发、创建,现已被 Redhat 收购。Ansible 在 GitHub 上也是排名前 10 的 Python 项目,可以看到其火热程度。

官网对 Ansible 的定义是:Ansible is the simplest way to automate apps and IT infrastructure. 即 Ansible 是一个实现应用程序和 IT 基础组件自动化的东东,这里他们自信的用了,最简单便捷!

Ansible 这个名字其实来源于的一本书 --《罗卡农的星球》,用以表示一种能在浩瀚宇宙中即时通讯的装置。那么,勒古恩又是怎么想到这个单词的呢?在 2001 年 Usenet 的一个帖子里,戴夫•古德曼宣称勒古恩曾经告诉他是从(可以应答)演变来的,她后来发现把这个词的字母换一下顺序就变成了(女同性恋者),这一点也使她觉得相当有趣。

Ansible 的应用领域

应用部署

配置管理

任务流编排

通过使用 Ansible,无论是系统管理员、运维团队、开发者、基础架构管理员,都可以从中受益。

一张图简单了解 Ansible

解释一下,就是我们可以通过编排一些文件,从而可以实现对远程服务、应用的批量管理。就像它的名称来源小说里写得一样,Ansible 是可以用来实时远程指挥前线舰队的!

Ansible 的安装

下文的操作全部是在下执行的,Windows 系统暂时没有涉及。由于涉及操作其他主机,建议用 VirtualBox 创建几台虚拟机。

直接使用安装即可,安装完成后可以查看下 Ansible 版本,确认是否安装成功。

Ansible 主要组件

Ansible 主要组件

Ansible:Ansible 的核心程序

Host Inventory:记录了每一个由 Ansible 管理的主机信息,信息包括 ssh 端口,root 帐号密码,ip 地址等等。

Playbooks:YAML 格式文件,多个任务定义在一个文件中,使用时可以统一调用,用来定义那些主机需要调用那些模块来完成的功能。

Core Modules:Ansible 执行任何管理任务都不是由 Ansible 自己完成,而是由核心模块完成;Ansible 管理主机之前,先调用中的模块,然后指明管理 Host Inventory 中的主机,就可以完成管理主机。

Custom Modules:自定义模块,完成 Ansible 核心模块无法完成的功能,此模块支持任何语言编写。

Connection Plugins:连接插件,Ansible 和 Host 通信使用。

这里我们先主要讲解下和 一些模块的简单使用,后续在针对进行讲解。

Host Inventory 清单文件

Ansible 使用清单文件来了解要使用的服务器,以及如何将它们分组以并行执行任务。

默认的清单文件是,也可以在运行时通过参数来指定清单文件。

Ansible Inventory 内置参数

可以参考上面的清单文件配置自己的服务器及登录信息。

Ansible 小试身手

Ansible 操作远程主机时,包含很多模块,其中常用的有 ping、yum、service、file、copy等,这里我们使用其中几个演示一下。

准备工作

测试前将 Ansible 配置文件中的下面一句注释打开,即禁止 SSH key host 的检查。

测试过程中使用的清单文件如下:

测试主机连通性

发现执行结果异常,这是因为只纳管定义在清单文件中的主机,因此需要将主机配置到上述的清单文件中。

对 servers 组进行 ping 操作:

这里 ansible 命令后面跟组名,也可以指定某个主机,表示使用哪个模块。

需要注意的是,这里的 ping 操作并不是平常所说的 ping,而是进行 ssh 连通性检查。

执行远程指令

这里使用模块在远程主机上运行,用于指定模块参数。也可以使用模块:

模块和模块的区别后续会再介绍。

总结

Ansible 使用下来,个人感觉它像一种语言,它做的就是对 shell 进行封装,提供更可靠、更丰富、可重用、易编排的功能。

这次仅仅是对 Ansible 进行一个简单的介绍,让大家对其有个大体的认识。这里仅仅列举了两三个模块的使用,其实 Ansible 还有其他很多模块,欢迎大家关注,后续会对常用模块分别进行讲解。

有什么不懂或者操作有问题的地方,请大家留言。

◆◆◆◆◆

你的留言和点赞是对我最大的支持

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180612G1WOOC00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

同媒体快讯

扫码关注腾讯云开发者

领取腾讯云代金券