1.1 Ansible 介绍
IT 自动化配置管理最近20年获得了迅猛的发展,特别最近几年再移动互联、云计算、大数据、互联网+ 等大规模应用平台的需求推动下,涌现出一大批成熟的大规模值工具,比如 Puppet、Chef、Salt、Ansible 等。
在开源仓库 Github 上自动化工具关注程度信息表如下,可以看出 Ansible 是最受欢迎的。 (截止2019年3月23日)
配置工具 | Watch | Star | Fork | 开始时间 | 开发语言 |
---|---|---|---|---|---|
ansible/ansible | 2037 | 36057 | 14822 | 2012.2.5 | Python |
puppetlabs/puppet | 503 | 5228 | 2073 | 2005.4.10 | Ruby |
saltstack/salt | 618 | 9750 | 4518 | 2011.2.20 | Python |
Chef/chef | 442 | 5694 | 2304 | 2008.5.2 | Ruby |
Ansible 使用 Python 作为开发语言,巧妙的设计、实现了简单易用、功能强大的管理工具。Ansible 由 Mickael DeHaan 发起、开发创建,第一个版本发布于2012年2月。
Ansible 名称的由来
最早是厄休拉.勒古恩(Ursula K. Le Guin)在1966年的小说《罗卡农的星球》(Rocannon‘s World)中创造了 Ansible 这个词。
这个词从 answerable 演变而来,用以表示一种能在浩瀚宇宙中即时通讯的装置。
并且很快传播到了很多科幻作家的作品中,Ansible 往往作为一种比光速还快的虚拟通信工具。
在《安德的游戏》(Ender's Game)中,地球两次遭遇过虫族的进攻。
国际舰队认为必须在世界各地寻找天资聪颖的孩童,将他们塑造成舰队指挥官,使人类在和虫族的战斗中占领先机,并且得到存活的希望。
安德使用 Ansible 装置实时远程指挥前线的舰队,这是相聚数光年作战的唯一可行方式。
Mickael DeHaan 想用这个词来比喻控制远端大量的服务器。
Ansible 的编排引擎可以出色的完成配置管理、流程控制、资源部署等多方面工作。与其他 IT 自动化产品相比较,Ansible 可以提供一种不需要安装客户端软件、管理便捷、功能强大的基础架构配置、维护工具。
Ansible 基于 Python 语言实现,由 Paramiko 和 PyYAML 两个关键模块构成。
Ansible 的优点:
- 简单
- 人类可读的自动化
- 不需要特殊的编程技巧
- 任务顺序执行
- 快速用于生产
- 强大
- 应用程序部署
- 配置管理
- 工作流的编排
- 应用生命周期的编排
- 无agent
- 无代理的架构
- 基于 OpenSSH 和 WinRM
- 不需要更新 agent
- 高效、安全
Ansible 主要用在 配置管理、服务即时开通、应用部署、流程编排四个领域。
Ansible 公司服务
Ansible 既可以指开源软件的名称,也可以指运营开源项目的公司名称。Michael DeHaan 是 Ansible 软件的创始人也是 Ansible 公司的技术总监。
Ansible 公司是负责 Ansible 软件开发、开源社区的管理,确保 Ansible 软件工具适合 IT 自动化的需求。同时 Ansible 公司在开源 Ansible 软件的基础上,开发了基于 Web 界面友好的 Ansible Tower 专有 IT 自动化管理工具。
Ansible 公司提供如下服务,
- Ansible 健康检查服务
- 协助重大迁移服务
- 推进 IT 自动化项目
- 客户咨询服务
Ansible 架构模式
Ansible 维护模式通常由控制机和被管机组成。控制机是用来安装 Ansible 工具软件、执行维护指令的服务器或工作站,是 Ansible 维护的核心。被管机是运行业务服务的服务器,由控制机通过 SSH 来进行管理。
Ansible Architecture
+--------------+
| |
| CMDB +-----+
| | |
+--------------+ |
|
|
+--------------+ | +--------------------------------------------------------+
|Public/Private| | | |
| +--+ | | ANSIBLE'S AUTOMATION ENGINE |
| Cloud | | | | |
+--------------+ | | +--------------------------------------------------------+
| +->+ |
| | | +--------------+
| | +------------+ +--------------+ | | |
+---->+ | | | | +--------> | HOSTS |
| | INVENTORY | | API | | | |
+--------------+ | | | | | | +--------------+
| | | +------------+ +--------------+ |
| Users | | |
| | | |
+--+-----+-----+ | |
| | | |
| +------------->+ +------------+ +-------------+ |
v | | | | | | +--------------+
+--+-----------+ | | MODULES | | PLUGINS | | | |
| Ansible | | | | | | +--------> | NETWORKING |
| +------->+ +------------+ +-------------+ | | |
| Playbook | | | +--------------+
+--------------+ +--------------------------------------------------------+
Ansible Tower
Tower pricing(2019.03)
Standard | 5*8 support | up to 100 nodes | $10000/year |
---|---|---|---|
Premium | 7*24 support | up to 100 nodes | $14000/year |
Note: Ansible Tower must be installed on RHEL 7, CentOS 7, or Ubuntu 14.04 LTS or 16.04 LTS, and requires Ansible Core 2.1.X or later.