部署工具(例如Ansible over shell)的优点

Jim*_*mmy 16 linux deployment shell chef-infra ansible

目前我将所有部署脚本都安装在shell中,它安装了大约10个程序并对其进行配置.我看到shell的方式是一个很棒的工具:

模块化:每个脚本只有一个程序,这样我就可以在不同的服务器上传播程序.

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

一键式:我只需运行一次shell脚本,一切都已设置好.

不可知:大多数程序员都可以找出shell而不需要知道如何使用特定的程序.

版本控制:由于我的代码在GitHub上,一个简单的Git pull并重新启动所有的supervisor将运行我的最新代码.

有了所有这些优点,为什么人们不断告诉我使用AnsibleChef等工具,而不是使用shell?

Fai*_*aiz 38

如果你让它们像你需要的那样工作,那么Shell脚本并不是那么糟糕.

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

  1. 人们使用工具make而不是使用脚本实现构建系统的原因相同.
  2. 幂等性:所采取的质量确保它可以安全地重新运行任意次数,并且在每次运行时它将达到期望状态,或者保持在那里,或者至少在收敛状态下靠近它//方式

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

     # Crude example
     grep myhost /etc/hosts || echo '1.2.3.4  myhost' >> /etc/hosts 
    
    Run Code Online (Sandbox Code Playgroud)

    但是使用幂等工具会更好.

  3. Shell脚本是必不可少的.Chef/Ansible/Puppet等工具是声明性的.一般来说,声明会导致更高的生产力,只要有一定的规模门槛.

  4. DSL带走了一些力量,但它们会给你订单,清洁和其他类型的电力.我喜欢shell脚本,但我也爱Ruby,而Puppet人喜欢他们的语言!如果你仍然认为shell是要走的路,因为你更喜欢它,嘿,你没有问题.

  5. [已添加]可重新分发,可重复使用的软件包.Ruby有宝石,Perl有CPAN,Node有npm,Java有maven - 所有语言都有自己的约定,关于如何将可重用的源代码打包并与世界共享.

    Shell Scripts没有.

    Chef拥有遵循约定的烹饪书,可以像导入gem到ruby应用程序中那样导入,为应用程序提供一些新功能.Puppet有puppetforge和它的模块,Juju有魅力(它们非常接近shell脚本,所以你可能会感兴趣).

  6. 这些工具实际上帮助了他们!我是一个顽固的shell脚本编写者,现在还是,但是使用Chef可以让我早点回家,睡个好觉,保持控制,可以在OS上移植,避免混淆 - 我放弃大规模后所体验到的实实在在的好处服务器shell脚本.

  • +1。已收藏。精彩的解释。 (2认同)