将Vagrant与Chef配置程序一起使用时,排除不相关的外部依赖关系

时间:2014-12-10 20:00:33

标签: dependencies vagrant chef chef-solo

(我认为这是这个问题的正确StackExchange,因为它是一个开发用例,而不是系统管理员用例。如果没有,请随意将其重定位到正确的StackExchange。)

我的应用使用Vagrant + Chef solo provisioner来设置本地开发环境。我随意选择了一个CentOS 6.5盒来托管一个MySQL数据库和一个RabbitMQ总线,因为开发时VM盒并不重要 - 所有重要的是应用程序有一些连接的实例。所以我正在使用mysql社区食谱和rabbitmq社区食谱等。我还使用database食谱来创建数据库和用户。

问题是,即使我的Vagrant环境受到严格控制,Chef似乎也希望我引入一堆不相关的外部依赖关系。例如,rabbitmq想要erlang(显然很好),但erlang想要apt,这与CentOS无关。

同样,database食谱需要awspostgresql,这与我当地的Vagrant环境无关。

我是否可以排除这些依赖关系而无需修改自己的菜谱?怎么样?

1 个答案:

答案 0 :(得分:1)

不,此时Chef不可能做到这一点。有很多关于条件依赖的建议,但没有一个甚至可以称之为理论依据。请记住,这些额外的烹饪书不会伤害任何东西,因为他们的食谱不会被运行。如果您想提出一种处理此类事情的方法,我建议您submit and RFC

较长的版本是在服务器上发生依赖项解析和约束求解,这意味着它需要完全基于静态数据。因此,即使它们不能在运行时使用,也需要声明所有依赖关系。