【发布时间】:2023-04-08 11:33:01
【问题描述】:
我有以下设置:
- 许多不同的项目是独立的 git 存储库,但都具有大致相同的服务器配置
- 每个项目又依赖于许多其他项目,我们使用 composer 依赖管理器将它们组合在一起(此处为 PHP 语言)。
我想使用 Vagrant 并在每个存储库中包含一个 Vagrant 文件,因此我的团队成员可以克隆一个存储库,运行 vagrant up 并准备好使用。
我的问题现在针对配置。我需要安装几个工具和包,如 apache、git、mysql 和几个 php 包,然后下载一些文件(如最近开发的数据库转储),在 /var/www 中设置所有内容并运行 composer install 命令。
因此,一种选择是使用使用厨师或木偶等食谱的经理。 另一种方法是编写一个 bash 文件并使用 shell 配置。
我对厨师/木偶没有太多经验,所以自然地,使用 shell 选项似乎更容易,但我想了解从长远来看这是否不是一个好的/可行的选项。
为什么在我看来,使用木偶/厨师似乎是一种不好的方法:
我知道我将不得不使用几种不同的配方,并且几乎总是为我的不同存储库使用相同的配方,因此我必须将它们全部包含在所有存储库中。考虑拥有 20 个存储库并需要 10 个配方,这意味着我需要添加 200 个配方作为 git-submodule 或类似的(每个团队成员也需要克隆存储库,然后克隆 10 个配方存储库,然后才为每个运行 vagrant up项目)。相比之下,我只需要使用我的 shell 脚本创建一个小型 repo 并克隆它 20 次。
我可能遗漏了一些东西,所以请告知我是否应该选择 chef/puppet,以及为什么即使我的存储库都有非常相似的服务器设置也有意义。
【问题讨论】:
-
如果您认为 shell 配置器是可行的方法,那么就使用它。你会发现它更快,因为你不会有一个新的工具来学习。学习厨师或木偶的最好方法是尝试一下。为了让你开始看这个:stackoverflow.com/questions/19125374/…
-
@MarkO'Connor 感谢您的评论。 berkshelf 工具看起来很有趣,似乎解决了我需要单独下载所有代码配方的问题 :) 我知道我可以使用 shell 脚本更快,但可能有非常正当的理由使用 chef / puppet我还没有完全掌握。所以问题是使用 chef / puppet 比 shell 脚本有什么优势 - 还是只是偏好?
-
听起来你想要完成的事情会更容易使用 Docker 和一个小的 bash 脚本(或任何你想要的 ansible/chef/puppet 东西)。我刚刚经历了这个,并使用了 Docker 和 Bash
标签: shell chef-infra vagrant puppet provisioning