Ruby 包流浪者/厨师构建,所有依赖项
当前设置: 我有一个项目是用Vagrant/Chef(一堆其他工具,docker,bundler等)构建的,但这是重点)目标只有Ubuntu 14.04 64位 1) Vagrant建立了一个ubuntu虚拟机,运行带有Berkshelf和所有其他Ruby构建工具的Chef 2) 厨师长浏览了所有的食谱:Ruby 包流浪者/厨师构建,所有依赖项,ruby,ubuntu,vagrant,chef-infra,chef-recipe,Ruby,Ubuntu,Vagrant,Chef Infra,Chef Recipe,当前设置: 我有一个项目是用Vagrant/Chef(一堆其他工具,docker,bundler等)构建的,但这是重点)目标只有Ubuntu 14.04 64位 1) Vagrant建立了一个ubuntu虚拟机,运行带有Berkshelf和所有其他Ruby构建工具的Chef 2) 厨师长浏览了所有的食谱: 可能通过aptitude下载任何缺少的依赖项,通过dpkg安装软件包 从git repos获取/构建源代码 初始化数据库,可能设置权限和创建文件等 有一些工具声称可以有效地“冻结”ruby
- 可能通过aptitude下载任何缺少的依赖项,通过dpkg安装软件包
- 从git repos获取/构建源代码
- 初始化数据库,可能设置权限和创建文件等
到目前为止,我的想法是运行一个干净的构建并复制chef cache文件夹和aptitude cache。据我所知,所有chef资源都可以指定本地文件系统的路径,因此下载包不必来自网络。如果您还询问烹饪书,您可以下载它们,并在“流浪者”中为它们显示本地路径。复制缓存有时不起作用。这需要我浏览每一本烹饪书和每一块宝石来追踪他们使用的每一个库。。。有100多个宝石和一打或两本烹饪书,这似乎是一个愚蠢的差事。是的,但宝石你可以安装一次,它们永远留在那里。我不知道你到底在用什么烹饪书,但在我的书中只有一个主要的下载源,让它们离线并不难。复制缓存可以做到这一点,但有时——对我来说——它拒绝从此文件夹获取资源,并试图再次下载它们。但我真的不知道为什么。这是一个合理的问题,它证明了像Chef这样的环境所固有的讽刺性——Chef是一个依赖关系管理工具,它没有管理自身依赖关系的概念。Ruby社区缺乏远见和纪律性使问题更加严重。我花了大约两周的时间在这方面(部分是因为这是我第一次使用Ruby),我将在回答中概述我的经验。据我所知,所有Chef资源都可以指定本地文件系统的路径,所以下载包不必来自网络。如果您还询问烹饪书,您可以下载它们,并在“流浪者”中为它们显示本地路径。复制缓存有时不起作用。这需要我浏览每一本烹饪书和每一块宝石来追踪他们使用的每一个库。。。有100多个宝石和一打或两本烹饪书,这似乎是一个愚蠢的差事。是的,但宝石你可以安装一次,它们永远留在那里。我不知道你到底在用什么烹饪书,但在我的书中只有一个主要的下载源,让它们离线并不难。复制缓存可以做到这一点,但有时——对我来说——它拒绝从此文件夹获取资源,并试图再次下载它们。但我真的不知道为什么。这是一个合理的问题,它证明了像Chef这样的环境所固有的讽刺性——Chef是一个依赖关系管理工具,它没有管理自身依赖关系的概念。Ruby社区缺乏远见和纪律性使问题更加严重。我花了大约两周的时间在这方面(部分是因为这是我第一次使用Ruby),我将在回答中概述我的经验。