一、什么是Ansible?
1、基于Python开发的一个自动化运维工具。
2、可以批量的管理远程的主机,实现批量部署服务、执行命令等。
3、基于模块化来工作,提供了很高的扩展性。
4、基于SSH协议。
二、Ansible 名字的由来?
Ansible 取名自知名小说 <<安德的游戏>>(Ender’s Game),并且这部小说在2013年被改编成电影,2014年1月7号在中国上映。
在电影中,安塞波(Ansible)是虚构的一种以超光速传递信息的通讯装置,片中主角安德(Ender)和他的伙伴们通过安塞波(Ansible)跨越时空指挥无数的战舰,就好比我们控制海量的远端服务器一样。
三、Ansible 能做什么?
电影中的 Ansible 是用来控制战舰,消灭敌人的。那么我们服务器上的 Ansible 可以做些什么呢?
我们通过查看 Ansible 的模块可知,它几乎支持数据中心的一切自动化,包括(不限于)
操作系统层面
:从 Linux(物理机、虚拟机、云环境),Unix,到 Windows。
虚拟化平台
:VMware、Docker、Cloudstack、LXC、Openstack 等。
商业化硬件
:F5、ASA、Citrix、Eos 以及各种服务器设备的管理。
系统应用层
:Apache、Zabbix、RabbitMQ、SVN、GIT 等。
红帽解决方案
:Openshift、Ceph、GlusterFS 等,支持几乎所有红帽解决方案的一键部署和配置。
云平台
: IBM Cloud 、AWS、Azure、Cloudflare、Red Hat CloudForms、Google、Linode、Digital Ocean 等。
四、Ansible 的优点
1、轻量级,远端主机无需安装任何依赖。
2、易读性,playbook 基于 YAML 开发的,而 YAML 是一种易于人类读写的数据格式语言。
3、使用 python 编写,维护更简单。
4、内置上千个模块,可以满足我们工作中绝大多数的需求。
5、开源社区活跃。
五、Ansible 包含哪些组件?
Ansible 的核心组件包括:
1、Modules(模块)
Modules 是 Ansible 的核心资产,有了 Modules , 我们才能调用这些 Modules 来完成我们想要执行的自动化任务。
2、Inventory(管理对象的清单)
Inventory 是 Ansible 要管理对象的清单。在清单中,可以配置分组、主机信息等。
3、Playbook(任务编排)
任务剧本(任务集),编排定义Ansible任务集的配置文件,由Ansible顺序依次执行,通常是JSON格式的YAML文件。
4、Roles(编排Playbook)
Roles 是将 Playbook 分成多个文件的主要机制。这简化了编写复杂的 Playbook,并使其更易于重用。通过 Roles 可以将 Playbook 分解为可重用的组件。
5、Plugins(插件)
Plugins 是增强 Ansible 核心功能的代码。Ansible 附带了许多方便的插件,如果这些插件不够,我们可以编写自己的插件。Ansible 自带的 Plugins 如下图所示:
六、Ansible 如何运作?
流程图
七、Ansible 代码仓库及文档
Ansible 的代码仓库存放在 Github 上,仓库地址为:https://github.com/ansible/ansible 。
Ansible 官方文档地址为:https://docs.ansible.com/ansible/latest/index.html。