Tag: 厨师配方

厨师rubygem安装程序失败

我正在尝试通过厨师在CentOS VM上设置cassandra,但它失败并出现以下错误。 我已经尝试清除捆绑缓存无济于事。 配方适用于另一台机器,但关键的区别是我事先在那台机器上运行了其他配方,所以我怀疑我缺少一个厨师依赖(这就是为什么我没有尝试直接修复包)。 如果这是一个显而易见的问题,我对ruby也非常陌生。 机器配置 厨师:11.4.0 ruby 1.9.3p286(2012-10-12修订版37165)[x86_64-linux] gem1.8.24 Linux somehost 2.6.32-276.el6.x86_64#1 SMP Tue May 29 17:38:19 EDT 2012 x86_64 x86_64 x86_64 GNU / Linux 错误消息chef-client输出: 启动Chef Client,版本11.4.0 解决运行清单的食谱:[“chef-client”,“cassandra”] 同步Cookbook: – minitest-handler – chef_handler – 百胜 – cron – selinux – sysctl – openssh – iptables – 厨师 – 客户 – 卡桑德拉 – apt […]

如何使用Chef懒惰地评估任意变量

我正在编写一个Chef配方来安装我们的应用程序代码并执行它。 配方需要特别关注此代码最终的目录(用于运行模板,设置日志转发等)。 因此,目录本身会在不同的食谱中出现在很多地方。 我试图获取/定义一个变量,所以我可以在我的资源块中使用字符串插值重新使用它。 这非常简单: home = node[‘etc’][‘passwd’][node[‘nodejs’][‘user’]][‘dir’] 一个示例用法是运行npm install同时告诉它在主目录中插入repo下载,如下所示: execute “npm install” do command “npm install #{prefix}#{app} –prefix #{home}” end 除了定义home变量的第一个块将在编译时运行。 在新的服务器上,我的nodejs用户帐户可能尚不存在,这是一个问题,给出了一个 NoMethodError undefined method ‘[]’ for nil:NilClass 我有一些解决方法,但我想要一个特定的解决方案,使home变量只在配方执行时获取,而不是编译时。 解决方法1 动态评估ruby块内的home变量,如下所示: ruby_block “fetch home dir” do block do home = node[‘etc’][‘passwd’][node[‘nodejs’][‘user’]][‘dir’] end end 这似乎没有实际效果,当你尝试做类似这样的事情时, 为Chef :: Resource :: Directory提供一个NoMethodError未定义方法的主页 : directory “.npm” do path […]