问题标签 [lwrp]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ruby - LWRP 编译和收敛阶段
我们发现 LWRP 操作(尤其是库)中的 ruby 代码总是在收敛阶段执行(也没有 ruby_block 资源!)。这是预期的行为吗?我们没有找到任何关于此的特定文档,并且知道 ruby 代码通常在编译阶段执行,这让我们有点困惑。我们使用 Chef 12.0.3。
这是一个小例子:
在食谱/default.rb 中:
在提供者/my_resource.rb 中:
厨房的输出是:
所以你看到时间戳的第一个打印是在编译阶段,但时间戳的下一个打印是在收敛阶段。
提前致谢!
chef-infra - 在厨师自定义资源中如何指定键值对是强制性的
在 Chef 中编写自定义资源时,我们定义属性、它们的类型、它们的默认值以及它们是否必须指定,例如
假设我需要一个类似于 Hash 的属性
在这里我已经提到required: false
这意味着用户不需要提供哈希。
我需要指定如果给出哈希,那么:search_interface
是强制性的
我怎样才能做到这一点?
ruby - 如何在 LWRP 的操作中使用 Chef DSL
我有 LWRP 应该cookbook_file
在其create
操作中创建
和测试配方
chef-client
执行失败并出现错误NoMethodError: undefined method 'vu_name' for nil:NilClass
当我cookbook_file
从create
方法中删除时,日志正确显示:INFO: vu:@new_resource.vu_name-text.txt
在下一步中,我替换了
与测试配方中指定的值相同
并获取了文件。对我来说,看起来cookbook_file
内部 ruby 块没有得到副本,new_resource
它变成nil
.
如何使用 LWRP 的属性作为在动作中声明的资源的参数?
apache - Chef,Apache2 食谱资源在从自定义资源调用时无法找到服务 [apache2]
在我的定制厨师食谱中(位于https://github.com/sanguis/chef-omeka/tree/lwrp)。
我正在从自定义 solo.rb 配方调用的自定义资源 (LWRP) 内部调用 Apache2 资源 web_app。
这将返回一个错误:
[#] [2016-02-23T23:02:31+00:00] 致命:如果您提交错误报告,请提供 stacktrace.out 文件的内容
[#] [2016-02-23T23:02:31+00:00] 错误:instanceomeka.dev 出现错误:Chef::Exceptions::ResourceNotFound: 资源执行 [a2enmod 标头] 配置为通知资源服务 [apache2]重新加载操作,但在资源集合中找不到 service[apache2]。execute[a2enmod headers] 在 /tmp/kitchen/cache/cookbooks/apache2/definitions/apache_module.rb:35:in `block in from_file' 中定义
但是,当我在此处(第 126 行)直接从自定义配方内部调用相同的资源时,它可以工作。
我的跑步清单如下
这在 ubuntu 14.04 和 centos7 上都失败了。
ruby - Chef - 从 LWRP 中的其他操作调用操作
我正在定义一个提供者,如下所示:
现在,我不想重写stop
and start
in的实现restart
,而是想调用action :stop
然后action :start
in action :restart
,如下所示:
有没有办法做到这一点?
编辑- 如 Coderanger 回答中所述,解决方案是:
rest - RESTful LWRP / Chef 库
我需要能够发送 REST 调用并将返回的有效负载保存到食谱中的变量(使用厨师独奏)。
使用 HTTPS 进行调用
需要能够获取返回的 cookie 标头才能登录 API
是否有这样的社区 LWRP 可用?我不知道厨师中有任何内置功能允许这样做。(从我读到的 http_request provider in chef 没有回答上述标准)
chef-infra - 从 Chef 12.3.0 升级到 12.7.2 时自定义 LWRP 出错
如果有人能向我解释为什么我在不久前创建的自定义 LWRP 存在特定问题,我将不胜感激。
使用 Chef 12.3.0,我的自定义 LWRP 属性以这种方式完美定义:
对于 Chef 12.7.2,尝试以相同方式指定“属性”会导致以下错误:
LWRP 属性(以前的属性)在像上一个示例那样定义时不起作用。看来必须使用符号而不是字符串。如果我将代码转换为以下格式,则可以正常工作:
我似乎无法弄清楚为什么这是一个问题,也无法在 Chef 更改日志中找到任何表明不再支持这种定义属性/属性的方法的内容。根据我对 Ruby 的理解,虽然我远非专家,但字符串可以用来代替符号,反之亦然。这是否有一个简单的原因,或者这可能是 Chef 中的一个错误?
chef-infra - 当您将资源分配给 Chef 配方中的变量时会发生什么?
我正在查看github上的johnbellone/consul-cookbook ,我看到以下内容:
当它将资源分配给安装变量时,它是否曾经执行过资源/提供者?也许它会立即执行它?而不是将编译和收敛的两阶段过程作为单独的阶段进行?
ruby - 在配方中使用带有 registry_key 的库模块方法时出现 Chef NoMethodError
我收到错误
收敛厨师食谱时。
这是来自library/hash_operations.rb的代码的简短版本:
这是recipes/default.rb:
我猜主要问题来自于尝试在模块内的方法内使用 Chef 资源registry_key,而模块内的方法又从配方中调用。
如果我不使用模块,我有一个工作版本,但如果我想用ChefSpec测试代码,我需要一个模块,正如几篇文章指出的那样(比如这篇文章:Stubbing library class methods in ChefSpec)
上面提到的链接是我在模块内部使用end unless defined?(HashOperations)的原因。
我试过使用包含语句,它可以在评论中看到,或者在食谱的第一行中,正如一些 StackOverflow 帖子所建议的那样,没有运气。一篇文章讨论了 LWRP 的使用,但我真的不认为这里是这种情况,因为代码与这个食谱严格相关,不会在其他食谱中使用。
注意:我正在使用self. 为了使def彼此可见,否则我会收到有关generate_reg_keys_for_item_key不可用的错误。
因此,考虑到我花了很多时间寻找解决方案,包括 StackOverflow 建议的解决方案,问题是:解决此错误的最佳方法是什么,并有一个可以用ChefSpec测试的简单解决方案(虽然我并不完全排除 LWRP),我应该包括什么和如何使registry_key在收敛操作中可见?