res*_*ing 83 scripting provisioning configuration-management puppet chef
Puppet 和 Chef 工具的新功能。似乎他们正在做的工作可以用 shell 脚本来完成。也许它是在 shell 脚本中完成的,直到这些出现。
我同意它们更具可读性。但是,除了可读性之外,是否还有其他优于 shell 脚本的优点?
Pau*_*ear 57
特定领域的语言对您编写的代码量有很大影响。例如,您可能会争辩说:
chmod 640 /my/file
Run Code Online (Sandbox Code Playgroud)
和
file { "/my/file":
mode => 640,
}
Run Code Online (Sandbox Code Playgroud)
但它们之间有很大的不同:
FILE=/my/file
chmod 640 $FILE
chown foo $FILE
chgrp bar $FILE
wget -O $FILE "http://my.puppet.server/dist/$FILE"
# where the URL contains "Hello world"
Run Code Online (Sandbox Code Playgroud)
和
file { "/my/file":
mode => 640,
owner => foo,
group => bar,
content => "Hello world",
}
Run Code Online (Sandbox Code Playgroud)
如果 wget 失败会发生什么?你的脚本将如何处理?如果在您的脚本之后有某些内容需要 $FILE 包含正确的内容,会发生什么情况?
您可能会争辩说,可以只放入echo "Hello world" > $FILE
脚本,但在第一个示例中,脚本必须在客户端上运行,而 puppet 在服务器上编译所有这些。因此,如果您更改内容,您只需在服务器上更改它,它会为您想要安装的任意数量的系统更改它。并且 puppet 会自动为您处理依赖项和传输问题。
没有可比性 - 适当的配置管理工具可以节省您的时间和复杂性。你尝试做的越多,越多的 shell 脚本看起来不够用,用 puppet 做它可以节省更多的精力。
ken*_*ada 33
这将是一个不受欢迎的观点,但配置管理系统不一定更好。有时候简单真的是最好的。
您选择的配置系统有一定的学习曲线和管理开销。毕竟,您正在引入依赖项。与任何自动化一样,您还必须注意在部署的配置中维护安全性。
我只有几个实例,我们部署了配置管理并且它卡住了。总是有大量系统具有重复配置并且需要执行可配置的千篇一律的部署。
eww*_*ite 24
你已经回答了你自己的问题...
自动化正在变得更具可扩展性和形式化。如今,Puppet 和 Chef 被视为标准(查看招聘广告)。
拼凑在一起的 shell 脚本有其一席之地,但它们在DevOps 运动的背景下不可扩展。可读性是其中的一部分。
小智 14
Chef 使管理和版本变得更容易复杂基础设施的设置,尤其是在任何类型的云环境中,而不必手动 ftp 或 scp 一堆以非标准化方式组织的 shell 脚本。根据您需要管理多少依赖关系,这种胜利的大小可能会有很大差异,这使得迁移到 CM 解决方案的决定对很多人来说并不明显。
Chef 的真正(通常是无名的)好处是幂等性。能够确定资源的状态而不管以重叠的兴趣运行的配方的组合是比 shell 脚本配置的巨大好处。如果您现在有用于配置的 shell 脚本,请问自己有多少可以多次运行而不会产生意外/不良后果?
适当的 CM 解决方案有助于通过简化跨平台自动化和团队协作来确保大规模成功。虽然可以通过组织良好、维护得当、版本化的 shell 脚本组来完成所有这些工作;你必须问自己“为什么”。Chef/Puppet 和类似技术的出现是因为一群才华横溢的 SysOps 厌倦了一遍又一遍地解决这些相同的问题,并着手为我们提供更好的选择。
小智 11
现代配置管理工具(例如 Puppet 和 Chef)允许您定义系统状态,而不必担心实现已配置服务器所需的活动。
例如,您的 chmod 命令假定文件存在,拥有该文件的用户存在,目录已经创建,等等。因此,您的脚本必须考虑所有这些先决条件。
基于状态的配置管理工具更简单:您只关心文件是否具有正确的权限。如何实现是工具的问题。
如果服务器对您来说是一次性的,或者您有理由一次站起来不止几个,那么成熟的 CM 系统将比一系列 shell 脚本更好地满足您的需求。
如果您的构建需求不大(或者喜欢手工制作有机自由放养公平贸易服务器),那么请保持简单。
就个人而言,在过去的演出中广泛使用 Chef,我试图在这次演出中“保持简单”,但我真的很想念 Chef 提供的原语、抽象和功能。即使您遇到可以从几个 shell 命令获得所需内容的情况,您也可以简单地使用“命令”块运行它们,输入您的 shell 命令,就像您在 shell 中编写它们一样。
话虽如此,您可以在没有服务器的情况下运行 Chef (chef-solo),而且我很确定 Puppet 有一个类似物,您仍然可以在不运行中央服务器的情况下利用其他人的食谱和食谱。
另一个好处是社区:有很多人(其中许多人会比你更聪明和/或更有经验)。就我个人而言,当其他人为我完成工作时,我喜欢它,通常比我更广泛。
归档时间: |
|
查看次数: |
33477 次 |
最近记录: |