`
tongqingqiu
  • 浏览: 23978 次
  • 性别: Icon_minigender_1
  • 来自: 亚特兰大
社区版块
存档分类
最新评论

为何使用Ansible

阅读更多
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的偏爱。
0
1
分享到:
评论

相关推荐

    使用ansible安装zookeeper

    使用ansible安装zookeeper,包含所需安装介质

    ansible tower 使用文档

    如何使用ansible tower 使用中文文档。方便使用。很好的ansible tower文档

    Rancher-Ansible, 使用Ansible运行Rancher平台和 register 主机.zip

    Rancher-Ansible, 使用Ansible运行Rancher平台和 register 主机 rancher-ansible这个playbook使用Rancher自动安装平台和 register 主机,这个playbook可以使用cloudformation自动在AWS上创建主机,或者使用 static ...

    Ansible自动化部署K8S集群(包含Ansible,Playbook的使用)

    Ansible自动化部署Kubernetes,超级简单,几分钟就可以部署完成,有部署过程及源代码,Ansible的简单使用以及playbook的使用例子,有完整代码

    教你在 Centos8 中安装并使用 Ansible.doc

    教你在 Centos8 中安装并使用 Ansible.doc

    利用ansible 自动 安装Hadoop 集群

    利用ansible 自动 安装Hadoop 集群

    Rocket.Chat.Ansible, 使用Ansible部署 Rocket.Chat !.zip

    Rocket.Chat.Ansible, 使用Ansible部署 Rocket.Chat ! Rocket.Chat 部署 Rocket.Chat,最终开源网络聊天平台,具有 Ansible 。 !注释如果需要最新代码,master 已经被重新初始化为 role,现在最常用的代码就是( 而...

    红帽8系统ansible安装包及依赖包 ansible-rhel 8.zip

    适用于python 3.6.8-2.el8_0版本,安装前检查python版本 压缩包包含 ansible-2.8.0-1.el8ae.noarch.rpm python3-jmespath-0.9.0-11.el8.noarch.rpm sshpass-1.06-3.el8ae.x86_64.rpm ...以上安装包的ansible版本为2.8.0

    Ansible-ansible-ssh.zip

    Ansible-ansible-ssh.zip,使用ansible inventory和config.ansible-ssh连接到托管主机的脚本,ansible是一个简单而强大的自动化引擎。它用于帮助配置管理、应用程序部署和任务自动化。

    Ansible-ansible-junos-ztp.zip

    Ansible-ansible-junos-ztp.zip,使用ansible自动设置和管理ztp服务器以向junos设备提供软件和启动配置的示例项目。,ansible是一个简单而强大的自动化引擎。它用于帮助配置管理、应用程序部署和任务自动化。

    ansible-arm64.zip

    ansible2.7 在 debian10(UOS 20)离线环境中安装,所有依赖都已经下好(可有多个版本选择)

    Ansible-kubernetes-ansible.zip

    Ansible-kubernetes-ansible.zip,使用ansible部署kubernetes使用ansible部署kubernetes,ansible是一个简单而强大的自动化引擎。它用于帮助配置管理、应用程序部署和任务自动化。

    Ansible部署Mysql 5.7.28主从

    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文档

    Ansible-docker-ansible-playbook.zip

    Ansible-docker-ansible-playbook.zip,Ansible的Docker映像,用于对外部安装的Ansible Playbook集合执行Ansible Playbook命令Ansible Playbook Docker映像,ansible是一个简单而强大的自动化引擎。它用于帮助配置管理...

    ansible离线安装包

    离线安装ansible 把安装包放到/data目录并解压 tar xvf ansible_packages.tar.gz rpm -ivh deltarpm-3.6-3.el7.x86_64.rpm rpm -ivh python-deltarpm-3.6-3.el7.x86_64.rpm rpm -ivh createrepo-0.9.9-28.el7....

    Ansible之Playbook使用

    Ansible之Playbook使用

    Ansible-wordpress-ansible.zip

    Ansible-wordpress-ansible.zip,在digitalocean.com上使用ansible在ubuntu 16.04上安装wordpress...wordpress ansible,ansible是一个简单而强大的自动化引擎。它用于帮助配置管理、应用程序部署和任务自动化。

    Ansible-40ansible.zip

    Ansible-40ansible.zip,使用rest api40ansible的fortinet产品的ansible模块和示例,ansible是一个简单而强大的自动化引擎。它用于帮助配置管理、应用程序部署和任务自动化。

    Ansible-ansible-role-ansible_bastion.zip

    Ansible-ansible-role-ansible_bastion.zip,ansible module部署osas使用ansible管理一组服务器的ansible部署bastionansible模块。,ansible是一个简单而强大的自动化引擎。它用于帮助配置管理、应用程序部署和任务...

Global site tag (gtag.js) - Google Analytics