Ansible 之旅(一) Ansible 简介
什么是 Ansible ?
首先它是一种Simple Automation Language
,在 Ansible Playbook
当中能够完美的描述一个应用的基础架构,同时它又是一个自动化引擎,可以运行 Ansible Playbook
,所以归纳来说:Ansible 是一个开源的自动化平台 。Ansible 能够管理功能强大的自动化任务,同时也可适应多种不同的流程和环境,最重要的是新用户能够快速掌握。
Ansible 特性
- Ansible is Simple:
Ansible Playbook
非常适合人类读写,不需特定编程的技巧就可以书写它们,并且它是按照顺序执行,所以适合人类的理解。Anisble 的设计原则就是简洁,这样的好处可以使工作效率提高。 - Ansible is Powerful:通过 Ansible 可以部署应用、配置的管理,工作流以及网络的自动化,并且可以编排整个应用的
Lifecycle
。 - Ansible is Agenless:首先 Ansible 是围绕着一个无代理架构构建的。它是通过 OpenSSH 和 WinRM 来与托管主机进行通信的。通过向托管主机推送小程序(称之为 Ansible Modules)来执行相关的任务,这些小程序用于将系统设置为一个特定的期望状态,并且在任务完成后,任何的
Ansible Modules
都会被删除。因为没有特殊代理,也没有其它额外定义的安全设置,并且默认使用 OpenSSH ,所以几乎可以立即使用 Ansible,相对其它的方案来说,它更安全也更高效。
Ansible 的优点
- 跨平台:提供了 Linux、Unix、Windows 以及网络设备在物理、虚拟化、云、容器平台环境中无代理的支持。
- 人类易阅读的 Ansible Playbook:
Ansible Playbook
是使用YAML
格式编写的易读文本文件。 - 完美的描述应用程序架构:所有的程序配置更改、软件安装、命令执行都可以通过
Ansible Playbook
来编写。同时应用程序环境的各个方面都可以被描述和记录。 - 版本控制容易管理:因为
Ansible Playbook
和项目都是纯文本文件,所以它们可以像源代码一样进行处理,并放在现有的版本控制系统中,如 Git、SVN 等。 - 对动态 Inventory 的支持:Ansible 可以使用动态的脚本从外部数据源来动态更新托管的机器列表,非常适合一些动态变换的环境,如现在的云计算,实例不断的变化。
- 很容易与其它系统进行集成:因为 Ansible 是开源软件,并且提供了 Api ,所以可以很好的与其它系统进行集成,如:HP SA 、Puttet、Jenkins 等。
归纳来说,Ansible 第一个针对 DevOps
的自动化语言。它贯穿整个应用的生命的周期和流程:
From development to production.
Ansible 架构
在 Ansible 架构中有分两种类型的主机:控制节点和托管主机。
- 控制节点:Ansible 的主程序运行在控制节点上。控制节点可以是单台电脑或多台电脑,亦或者是运行
Tower
的服务器。注意 Windows 主机不能作为控制节点。 - 托管主机:托管主机是由 Ansible 控制的主机。托管主机存在
Inventory
中,在里面还可以对托管主机进行分组,很容易进行管理。inventory
可以是静态的文本文件也可以是根据外部数据进行动态生成的脚本。
Ansible 自动化引擎内部由inventory
、Api
、Modules
、Plugins
构成:
- inventory:Ansible 托管主机清单列表。
- Modules:Ansible 执行命令的功能模块。
- Plugins:插件,针对模块功能的补充。
- Api:供第三方程序调用的应用程序编程接口。
通过Ansible 架构图可以看到用户可以直接执行 Ansible 对主机或者网络设备进行管理,也可以通过 Ansible Playbook
对目标进行管理,同时可以使用静态的inventory
也可以通过外部的 CMDB
数据库或者外部的数据源来动态生成 inventory
。
Ansible 核心原则
- 复杂性杀死生产力:强调越简单越好。
- 优越的可读性:Ansible 自动化语言的设计围绕着简单,基本文本的文件适合人类阅读,并且
Ansible Playbook
可以清晰的记录工作流程。 - 声明状态的方式:只需要声明我所需要的状态即可,具体怎么完成交给 Ansible 吧。如安装 Web 服务器软件
httpd
,并且启动。只需定义最终的状态即可,无需操心 Ansible 怎么去完成。
Ansible 适用场景
- 配置管理
- 应用部署
- 简化系统配置流程
- 持续交付
- 安全性和遵从性
- 编排
评论已关闭