【发布时间】:2017-09-14 08:40:53
【问题描述】:
我正在尝试“清理”我的 Chef 配方以安装 Zabbix Agent,我知道那里有一百万个,但这是我理解的测试用例。我将我的厨师指令分成一个类,并为需要完成的每个步骤单独的方法。我把类放在配方文件中。所以,当我执行配方时,linked here at GitHub,我收到了这个错误:
NoMethodError
-------------
undefined method `execute' for #<Class:0x000000030e42c0>::Recipe_Zabbix_Agent_Unix
我绝不是 Ruby 大师,所以我心想,我敢打赌,这个类将自己与 Chef 继承“分离”,所以我需要使用 @ 使该类继承 Chef 库987654323@东西。但是,我仍然收到上面列出的错误。尝试执行此操作时,我缺少什么或不理解什么?我见过人们编写一个基本上只是一个 Ruby 脚本的库,然后配方包含该脚本并在其中执行功能,但我想将其仅包含在配方中以供我简单理解。这是可能的还是我正在考虑做图书馆路线的唯一选择?我也在 Chef 10.24 上运行它。
【问题讨论】:
-
您无权访问重量级提供商中的 Chef DSL。
-
我将如何继承这些提供者?
-
使用类形式
execute = Chef::Resource::Execute.new(command) -
我是否必须为我放入的那个 Ruby 类中的每个“Chef block”都这样做?
-
是的,你必须这样做。
标签: ruby chef-infra chef-recipe