IT 自动化
现在市面上用一些实现IT自动化的工具,例如 puppet, chef, salt。Ansible 是一个相对比较新的工具,但目前社区十分活跃。我用过puppet和ansible。这里想讨论一下我偏爱ansible的原因。
架构选择
Puppet和chef这样的工具使用的是master-agent 模式(或者说是拉模式)。在这种模式下,需要部署的节点上需要安装代理。这些代理会定期向主节点传送部署节点的状态信息。主节点再向部署节点发送命令,以保证状态的稳定。这样做有一下几个问题:
- 安装和使用代理无疑代理额外开销和稳定性隐患
- 定期确保状态使得状态的更改和应用的升级变得十分困难,弊大于利.
- 主节点成为单点故障和系统瓶颈,不利于线性扩展
基于上述原因,不少人以及开始在puppet应用中使用无主节点模式 master-less mode。相比之下,ansible没有主节点和代理。它仅仅依赖于SSH,使得应用的部署简单而轻量。更重要的是,ansible很好的支持了持续交付。这是一个例子。当然,如果需要,使用playbook或者ansible tower你也可以让ansible定时检查系统状态。但是,我个人认为,应用的运行状态,往往更应该使用Nagios这样的工具进行检测和预警。
一个好的IT自动化工具应该令其脚本开发简单而易于理解。这里的脚本,Puppet称其为manifest, Chef称其为cookbook,Ansbile称其为playbook。 Puppet manifest和Chef cookbook都是基于ruby的DSL,而ansible playbook是YAML。除非你已经很熟悉ruby,大多数人会觉得playbook更容易写。至于易读性,puppet manifest中需要处处显式说明依赖关系。在中大型项目中,很难理解依赖关系。Ansible默认执行是顺序的。仅仅在需要的时候,使用notify和handlers来说明依赖关系。
供应 (Provisioning)
这里的”provisioning”,我是特指主机的创建。 在很多情况下,Provisioning是IT自动化的一部分,特别是在基于云的部署和自动化测试的情境下。 Ansible提供了大量模块支持Google Compute Engine (GCE), Amazon Web Service(AWS)已经其他环境下的Provisionning。我个人使用过Ansible了创建和销毁GCE节点。我也用过另一个工具Beaker。 它是puppet开发的测试工具,也支持provisioning。相比之下,Ansible的GCE模块更简单,更丰富,也更稳定(特别是最近GCE经常默默更改ssh和sudo的策略)。
性能
Ansible是基于python的,理论上比基本ruby的puppet有更好的性能。无主节点的架构也省去了不少不必要的开销。同时,Ansible对于ssh的使用进行了很多优化(老版本的centos的OpenSSH缺失不少性能优化)。当然我没用看到具体的性能测试数据支持这一点。不过这不会妨碍我对ansible的偏爱。
分享到:
相关推荐
为什么使用 Ansible? * 无需安装 agent,与 Chef 和 Puppet 不同,Ansible 是无代理的,这意味着你不必担心在受控节点上安装或配置任何包 * 使用 SSH 进行通信,Ansible 默认使用 SSH 协议在控制节点和受控节点...
本教程将详细讲解如何使用Ansible来安装和升级Redis,一个高性能的键值存储系统。 首先,我们需要了解Ansible的基本概念。Ansible是基于Python开发的,它通过SSH(Secure Shell)连接到目标主机,并利用YAML语法...
Ansible 使用SSH(Secure Shell)作为默认通信协议,因此在管理远程系统时无需额外的开放端口或安装软件。 标题中的"Ansible-AnsLSL.zip"表明这是一个关于使用Ansible在Windows Subsystem for Linux (WSL)环境中的...
首先,我们要了解什么是Ansible Galaxy。简单来说,它是一个基于Web的平台,提供了一个角色仓库,角色是Ansible中封装好的一套自动化任务和配置集。这些角色可以被看作是“积木”,它们可以被组合起来,快速搭建出...
"Ansible 加密和解密的使用" Ansible 加密和解密的使用需求: 在使用 Ansible 时,存在一些敏感的信息不易暴露的情况,因此需要加密存储机密的文件,在执行的时候加解密。Ansible 提供了两种方式来存储这类数据: ...
Ansible 主机: 10.4.0.57 Mysql Master: 10.4.0.17 Mysql Slave: 10.4.0.22 所有操作都在Ansible主机上进行 执行步骤: 1. 安装ansible 2.9 pip install ansible==2.9 2. 配置 Ansible到Master和Slave主机免密...
Ansible Tower 3.0 中文安装配置及使用指南是一份详细的文档,用于指导用户如何安装、配置和使用Ansible Tower 3.0版本。Ansible Tower是基于Web的IT自动化平台,它为Ansible自动化工具提供了一个更加友好、易于管理...
标题中的“ansible-arm64.zip”表明这是一个与Ansible相关的压缩文件,专为ARM64架构(也称为AArch64)设计。Ansible是一款强大的自动化工具,常用于配置管理系统和应用部署。在这个场景中,它被用于在Debian 10操作...
2. **Ansible配置**:创建一个名为`hadoop-ansible`的目录,作为Ansible项目的基础。在该目录下,创建`hosts`文件,列出所有Hadoop集群节点的IP地址或主机名,按照角色进行分组,例如,`namenode`、`datanode`等。 ...
### Ansible Tower 使用指南 #### 一、简介 Ansible Tower 是一款由 Red Hat 开发的企业级自动化平台,它基于开源工具 Ansible 构建,提供了丰富的图形化界面和高级功能,如工作流编排、任务调度、权限管理等。本...
Rancher-Ansible, 使用Ansible运行Rancher平台和 register 主机 rancher-ansible这个playbook使用Rancher自动安装平台和 register 主机,这个playbook可以使用cloudformation自动在AWS上创建主机,或者使用 static ...
Ansible自动化部署Kubernetes,超级简单,几分钟就可以部署完成,有部署过程及源代码,Ansible的简单使用以及playbook的使用例子,有完整代码
Ansible 是一个开源的自动化工具,它在IT领域中被广泛使用,特别是在配置管理、应用程序部署和任务自动化方面。Ansible 的设计理念是简洁易用,通过SSH(Secure Shell)连接到目标节点,无需在远程服务器上安装任何...
在这个"Ansible-grafana.zip"压缩包中,我们关注的是如何使用Ansible来设置和管理Grafana。 Grafana是一款流行的开源数据可视化和分析工具,常用于监控和展示各种时间序列数据,如系统性能指标、日志数据等。通过...
当我们将Ansible与Nomad结合使用时,可以利用Ansible的强大配置管理和部署能力来自动化Nomad集群的搭建、配置和管理。例如,我们可以用Ansible来: 1. **安装Nomad**: 定义一个Ansible playbook,包含必要的任务来...
在“Ansible-ansible-grafana.zip”这个压缩包中,我们可以看到与使用Ansible自动化部署和配置Grafana相关的资源。Grafana是一款流行的数据可视化和分析平台,常用于监控和分析系统性能指标。通过Ansible,我们可以...
3. **Semaphore 配置**:配置 Semaphore 的数据库连接(通常为 PostgreSQL 或 MySQL)、用户认证和权限设置,以及与 Ansible 的集成。这通常涉及修改配置文件和数据库初始化。 4. **安全与备份**:确保所有敏感信息...
Rocket.Chat.Ansible, 使用Ansible部署 Rocket.Chat ! Rocket.Chat 部署 Rocket.Chat,最终开源网络聊天平台,具有 Ansible 。 !注释如果需要最新代码,master 已经被重新初始化为 role,现在最常用的代码就是( 而...
在IT行业中,自动化工具是提升效率的关键之一,而Ansible就是这样一个强大且广泛使用的开源自动化平台。本资源“Ansible-ansible-fluentd.zip”聚焦于利用Ansible配置和管理Fluentd,一个高效的数据收集系统,常用于...
注意, Ansible的使用涉及到yaml语法、角色(roles)、模块(modules)等概念。例如,你可以使用`copy`模块将文件复制到远程服务器,或者使用`yum`模块来安装软件包。此外,Ansible还支持条件语句、循环、变量、模板...