这是 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 还有其他很多模块,欢迎大家关注,后续会对常用模块分别进行讲解。
有什么不懂或者操作有问题的地方,请大家留言。
◆◆◆◆◆
你的留言和点赞是对我最大的支持
领取专属 10元无门槛券
私享最新 技术干货