【问题标题】:Advantages of a deployment tool such as Ansible over shell [closed]Ansible 等部署工具相对于 shell 的优势 [关闭]
【发布时间】:2013-10-31 09:38:00
【问题描述】:

目前我的所有部署脚本都在 shell 中,它会安装大约 10 个程序并对其进行配置。我认为 shell 是一个很棒的工具:

模块化:每个脚本只有一个程序,这样我可以将程序分布在不同的服务器上。

简单:Shell 脚本非常简单,不需要安装任何其他软件。

一键式:我只需要运行一次 shell 脚本,一切就设置好了。

不可知论者:大多数程序员可以理解 shell,不需要知道如何使用特定的程序。

版本控制:因为我的代码在 GitHub 上,一个简单的 Git 拉取并重新启动所有主管将运行我的最新代码。

拥有所有这些优势,为什么人们总是告诉我使用 AnsibleChef 之类的工具,而不是使用 shell?

【问题讨论】:

  • 我找到了一篇关于这个主题的好文章。它很好地解决了您在尝试说服系统管理员时遇到的反复出现的问题,像 chef/ansible/puppet 这样的工具值得一看:devopsu.com/blog/ansible-vs-shell-scripts
  • 这主要是基于意见而关闭的事实正是我发现stackoverflow的恶化。大多数重要的事情都涉及判断(意见)。
  • 只有“简单”和“不可知”也不适用于例如。 Ansible。

标签: linux shell deployment chef-infra ansible


【解决方案1】:

Shell 脚本并没有那么糟糕,如果你让它们按你需要的方式工作的话。

人们出于各种原因推荐其他工具(例如 CFEngine、Puppet、Chef、Ansible 等等),其中一些是:

  1. 与人们使用 make 之类的工具而不是实施构建的原因相同 带有脚本的系统。
  2. 幂等性:确保其安全的质量 重新运行任意次数,每次运行都会达到所需的 状态,或者保持在那里,或者至少以//收敛//的方式靠近它。

    当然,您可以编写脚本以使最终结果是幂等的:

     # Crude example
     grep myhost /etc/hosts || echo '1.2.3.4  myhost' >> /etc/hosts 
    

    但是使用幂等工具要好得多。

  3. Shell 脚本是必要的。 Chef/Ansible/Puppet 等工具是声明性的。 一般来说,在一定规模阈值的情况下,声明式会带来更高的生产力。

  4. DSL 会带走一些电力,但它们会给你带来秩序、清洁和其他 种权力。我喜欢 shell 脚本,但我也喜欢 Ruby 和 Puppet 人 喜欢他们的语言!如果你仍然认为 shell 是要走的路,因为你喜欢 再多,嘿嘿,那你就没有问题了。

  5. [添加] 可再分发、可重复使用的软件包。 Ruby 有 gems,Perl 有 CPAN,Node 有 npm, Java 有 maven - 所有这些语言都有自己的可重用约定 源代码必须打包并与世界共享。

    Shell 脚本不会。

    Chef 有遵循惯例的食谱,并且可以以几乎相同的方式导入 您将 gem 导入到您的 ruby​​ 应用程序中,以赋予您的应用程序一些新的能力。 Puppet 有 puppetforge 和它的模块,Juju 有魅力(它们非常接近 到 shell 脚本,所以你可能会感兴趣)。

  6. 这些工具确实帮助了他们!我是一个顽固的 shell 脚本编写者,现在仍然是, 但是使用 Chef 可以让我早点回家,睡个好觉,保持控制, 可以跨操作系统移植,避免混淆——我在之后体验到的实实在在的好处 放弃大规模服务器 shell 脚本。

【讨论】:

    猜你喜欢
    • 2010-11-13
    • 2010-09-17
    • 1970-01-01
    • 2010-10-22
    • 1970-01-01
    • 1970-01-01
    • 2019-05-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多