Jim*_*mmy 16 linux deployment shell chef-infra ansible
目前我将所有部署脚本都安装在shell中,它安装了大约10个程序并对其进行配置.我看到shell的方式是一个很棒的工具:
模块化:每个脚本只有一个程序,这样我就可以在不同的服务器上传播程序.
简单: Shell脚本非常简单,不需要安装任何其他软件.
一键式:我只需运行一次shell脚本,一切都已设置好.
不可知:大多数程序员都可以找出shell而不需要知道如何使用特定的程序.
版本控制:由于我的代码在GitHub上,一个简单的Git pull并重新启动所有的supervisor将运行我的最新代码.
Fai*_*aiz 38
如果你让它们像你需要的那样工作,那么Shell脚本并不是那么糟糕.
人们CFEngine
出于各种原因推荐其他工具(例如,Puppet,Chef,Ansible等等),其中一些是:
make
而不是使用脚本实现构建系统的原因相同.幂等性:所采取的质量确保它可以安全地重新运行任意次数,并且在每次运行时它将达到期望状态,或者保持在那里,或者至少在收敛状态下靠近它//方式
当然,您可以编写脚本,以便最终结果是幂等的:
# Crude example
grep myhost /etc/hosts || echo '1.2.3.4 myhost' >> /etc/hosts
Run Code Online (Sandbox Code Playgroud)
但是使用幂等工具会更好.
Shell脚本是必不可少的.Chef/Ansible/Puppet等工具是声明性的.一般来说,声明会导致更高的生产力,只要有一定的规模门槛.
DSL带走了一些力量,但它们会给你订单,清洁和其他类型的电力.我喜欢shell脚本,但我也爱Ruby,而Puppet人喜欢他们的语言!如果你仍然认为shell是要走的路,因为你更喜欢它,嘿,你没有问题.
[已添加]可重新分发,可重复使用的软件包.Ruby有宝石,Perl有CPAN,Node有npm,Java有maven - 所有语言都有自己的约定,关于如何将可重用的源代码打包并与世界共享.
Shell Scripts没有.
Chef拥有遵循约定的烹饪书,可以像导入gem到ruby应用程序中那样导入,为应用程序提供一些新功能.Puppet有puppetforge和它的模块,Juju有魅力(它们非常接近shell脚本,所以你可能会感兴趣).
这些工具实际上帮助了他们!我是一个顽固的shell脚本编写者,现在还是,但是使用Chef可以让我早点回家,睡个好觉,保持控制,可以在OS上移植,避免混淆 - 我放弃大规模后所体验到的实实在在的好处服务器shell脚本.