- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
问题
谁能解释为什么选择 puppet 或 chef vagrant provisioner 而不是 shell provisioner 会更好?
背景
我正在开始使用 Vagrant。我遇到的问题之一是决定使用哪个供应商。到目前为止,我已经使用 shell provisioner 取得了一些成功,但是要让它可靠地运行比我预期的要多。
目前,我不熟悉 ruby、puppet 或 chef,但如果需要的话,我很乐意学习其中的任何一个或全部。我早期使用 puppet 和 chef 的经验是,如果其他人的 Recipe 完全符合您的要求,那么它的效果非常好,但是做一些非标准的事情意味着退回到用 ruby 编写解决方案。
我知道比较 puppet and chef 的文章,而且我不太担心使用它们中的哪一个,而不是完全知道何时以及为什么应该使用它们。
最佳答案
完全披露:我是 Puppet Labs 的员工。但在加入他们之前的 2 年多时间里,我选择了 Puppet 作为产品。
如果您的配置将 a) 具有任何程度的复杂性并且 b) 将随着时间而改变,或者您希望您的安装环境本身以可能发生的方式改变,我建议您在 shell 上使用 Puppet 或 Chef改变部署的执行方式。您的脚本可能非常好,但最终,除非您围绕它们遵循出色的编程实践、对其进行测试和 QA,否则它们最终会在某个时候失败。
围绕 DevOps 有很多有文化的人在讨论这个概念,但它归结为“技术债务”的原则——我们现在倾向于以简单的方式做事,因此认为它们更简单,但代价是增加复杂性和难度稍后。
Puppet 的优势之一是其确定性 - 您编写的 list 必须能够由 Puppet 以编程方式转换为您正在构建的服务器模型。人们认为这更“困难”,但我认为,如果您沿着技术生命周期的曲线对其进行平均,难度就会降低。换句话说,Puppet 迫使您现在就思考,然后轻松部署以扩大规模,而不是事后思考并在进行时重新设计。现在用现金支付,而不是以后用信用卡支付利息。
如果你纯粹是拉下其他人的 list ,你会在某个时候遇到麻烦 - 虽然我们不希望这样,但今天使用 Puppet 肯定是这样,因为他们正在写它们是为了解决一般情况,而不是您的特定系统。只有当您更好地理解 Puppet 时,许多通用 list 才会变得有用。
因此,与其从那里开始,我会努力完成出色的 Learning Puppet指导开始掌握基础知识。 Puppet 的学习曲线很陡峭,但很快就会趋于平稳。
使用其他配置器或工具还有其他原因,但我肯定会争辩说,使用 Puppet 或 Chef 比尝试确保您的 shell 脚本完全按照您认为它们应该做的做更好,因为只要您需要产生新的环境。
关于bash - 选择一个 vagrant provisioner,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7747328/
我想创建 x 个实例并运行相同的配置器。 resource "aws_instance" "workers" { ami = "ami-08d658f84a6d84a80" count = 3
问题 谁能解释为什么选择 puppet 或 chef vagrant provisioner 而不是 shell provisioner 会更好? 背景 我正在开始使用 Vagrant。我遇到的问题之
每次我尝试保存时,我都会收到以下消息:“您的生产证书已被 Apple 拒绝。它可能已过期、撤销或无效。”我还尝试将 .p12 文件上传到 firebase messaging,它立即起作用了!所以 O
我正在尝试使用它的 ansible 供应器供应一台由 packer 构建的机器; 配置无法找到我在自定义 ansible.cfg 文件中设置的一些角色,如下所示: [defaults] stdout_
这是我的应用崩溃时调试区域中的内容 *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason
我正在处理 main.tf 文件,用于在 azure 中创建具有远程执行功能的虚拟机,并且我还想在此文件中创建并下载 SSH key .pem 文件以访问 Linux VM。 主要。 tf 文件 #
我已经按照efs-provisioner中概述的步骤成功部署了efs-provisioner。 但是PVC卡在Pending State中,显示相同的消息: waiting for a volume
我正在处理 main.tf 文件,用于在 azure 中创建具有远程执行功能的虚拟机,并且我还想在此文件中创建并下载 SSH key .pem 文件以访问 Linux VM。 主要。 tf 文件 #
这个问题在这里已经有了答案: "CAUTION: provisional headers are shown" in Chrome debugger (36 个答案) 关闭 8 年前。 我无法调试一
我正在尝试将我的应用程序提交到 App Store,但是我在使用配置文件时遇到了问题。 归档应用程序后单击提交时,我收到错误消息: 未找到匹配的临时配置文件 - 没有任何有效的配置文件允许特定权利:a
如何让 Vagrantfile 将文件的内容附加到 ~/.bashrc 文件? 在我的 Vagrantfile 中,我试图将文件/vagrant/dev_env_config 的内容附加到 ~/.ba
我创建了一个 api,当我调用它时必须从数据库中删除图像。我使用 mongodb 作为数据库,使用 gridfs 来管理图像。 这是调用 api 从数据库中删除图像的代码。 vm.delete = f
我正在尝试在 angularjs 应用程序中进行 ajax 调用。但随机我收到这条警告说“显示了临时 header ”,每当调试器控制台出现这条警告时,我从服务器得到的响应非常慢(大约 30 到 45
我正在尝试为 Azure 实例管理数据库用户和数据库,这令人惊讶……不可能。我以为我找到了一种使用 local-exec 提供程序的方法,但是……好吧,显然不是。代码和错误消息如下。 它归结为 ter
我正在使用 terraform 0.14 并有 2 个资源,一个是 local_file,它根据变量在本地机器上创建一个文件,另一个是带有 local_exec 供给者。 这一切都按预期工作,但我只能
我正在编辑我的 homestead.yaml 文件,我确定缩进是正确的——但是我收到以下错误: Bringing machine 'default' up with 'virtualbox' prov
我认为“ Provider ”和“ Provisioner ”这两个词听起来非常相似,这可能会导致混淆,尤其是在遇到文档的初学者中,这两个术语混在一起或使用同义词(已经在互联网)。当初学者看到 Doc
Vagrant 使用 VirtualBox 创建一个开发环境,然后使用 ansible 提供它。作为配置的一部分,ansible 运行重启,然后等待 SSH 恢复。这按预期工作,但因为 vagrant
使用 terraform 为 hash Vault 创建一些自签名 tlf 证书,我的模块中主要有问题的 terraform 位如下,我尝试了 2 种方法来让它工作。 第一种方式,理论上,我认为应该可
我有一个有效的 TF 设置,可以在 Azure 中启动多个 Linux VM。我在 null_resource 中运行本地执行配置程序来执行 Ansible playbook。我从 TF 状态文件中提
我是一名优秀的程序员,十分优秀!