问题标签 [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.

0 投票
2 回答
369 浏览

ruby - LWRP 编译和收敛阶段

我们发现 LWRP 操作(尤其是库)中的 ruby​​ 代码总是在收敛阶段执行(也没有 ruby​​_block 资源!)。这是预期的行为吗?我们没有找到任何关于此的特定文档,并且知道 ruby​​ 代码通常在编译阶段执行,这让我们有点困惑。我们使用 Chef 12.0.3。

这是一个小例子:

在食谱/default.rb 中:

在提供者/my_resource.rb 中:

厨房的输出是:

所以你看到时间戳的第一个打印是在编译阶段,但时间戳的下一个打印是在收敛阶段。

提前致谢!

0 投票
1 回答
522 浏览

chef-infra - 在厨师自定义资源中如何指定键值对是强制性的

在 Chef 中编写自定义资源时,我们定义属性、它们的类型、它们的默认值以及它们是否必须指定,例如

假设我需要一个类似于 Hash 的属性

在这里我已经提到required: false这意味着用户不需要提供哈希。

我需要指定如果给出哈希,那么:search_interface是强制性的

我怎样才能做到这一点?

0 投票
1 回答
134 浏览

ruby - 如何在 LWRP 的操作中使用 Chef DSL

我有 LWRP 应该cookbook_file在其create操作中创建

和测试配方

chef-client执行失败并出现错误NoMethodError: undefined method 'vu_name' for nil:NilClass

当我cookbook_filecreate方法中删除时,日志正确显示:INFO: vu:@new_resource.vu_name-text.txt 在下一步中,我替换了

与测试配方中指定的值相同

并获取了文件。对我来说,看起来cookbook_file内部 ruby​​ 块没有得到副本,new_resource它变成nil.

如何使用 LWRP 的属性作为在动作中声明的资源的参数?

0 投票
1 回答
631 浏览

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 上都失败了。

0 投票
2 回答
1144 浏览

ruby - Chef - 从 LWRP 中的其他操作调用操作

我正在定义一个提供者,如下所示:

现在,我不想重写stopand startin的实现restart,而是想调用action :stop然后action :startin action :restart,如下所示:

有没有办法做到这一点?

编辑- 如 Coderanger 回答中所述,解决方案是:

0 投票
1 回答
65 浏览

rest - RESTful LWRP / Chef 库

我需要能够发送 REST 调用并将返回的有效负载保存到食谱中的变量(使用厨师独奏)。

  • 使用 HTTPS 进行调用

  • 需要能够获取返回的 cookie 标头才能登录 API

是否有这样的社区 LWRP 可用?我不知道厨师中有任何内置功能允许这样做。(从我读到的 http_request provider in chef 没有回答上述标准)

0 投票
1 回答
40 浏览

chef-infra - 从 Chef 12.3.0 升级到 12.7.2 时自定义 LWRP 出错

如果有人能向我解释为什么我在不久前创建的自定义 LWRP 存在特定问题,我将不胜感激。

使用 Chef 12.3.0,我的自定义 LWRP 属性以这种方式完美定义:

对于 Chef 12.7.2,尝试以相同方式指定“属性”会导致以下错误:

LWRP 属性(以前的属性)在像上一个示例那样定义时不起作用。看来必须使用符号而不是字符串。如果我将代码转换为以下格式,则可以正常工作:

我似乎无法弄清楚为什么这是一个问题,也无法在 Chef 更改日志中找到任何表明不再支持这种定义属性/属性的方法的内容。根据我对 Ruby 的理解,虽然我远非专家,但字符串可以用来代替符号,反之亦然。这是否有一个简单的原因,或者这可能是 Chef 中的一个错误?

0 投票
1 回答
117 浏览

chef-infra - 当您将资源分配给 Chef 配方中的变量时会发生什么?

我正在查看github上的johnbellone/consul-cookbook ,我看到以下内容:

当它将资源分配给安装变量时,它是否曾经执行过资源/提供者?也许它会立即执行它?而不是将编译和收敛的两阶段过程作为单独的阶段进行?

0 投票
2 回答
9090 浏览

chef-infra - 如何在食谱食谱中使用库模块

在一本食谱中,我有一个库(client_helper.rb)。在其中定义了一个模块。模块名称是Client_helper。这是模块代码。

现在我有默认食谱。我从直接配方调用方法network_zone的地方它正在工作。

但是,当我在ruby​​_block(例如 Client_helper.network_zone)中调用方法 network_zone 时,它​​不起作用

请找到食谱代码。

我的食谱目录结构-

在此处输入图像描述

请帮我。

0 投票
1 回答
825 浏览

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在收敛操作中可见?