问题标签 [rspec-puppet]

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 投票
1 回答
792 浏览

puppet - rspec-puppet:找不到所需的类

所以我有一个功能齐全的'ldap'类。

现在我想为我的 ldap 目录中的某些用户做一些事情。

我在一个新的“用户”模块中执行此操作,首先创建一个新的defined_type:

然后我在我的“用户”模块的 init.pp 中使用这个定义的类型:

但是,当我尝试对此使用“pdk 测试单元”时,出现以下错误:

为了完整起见,这是我的 admin_spec.rb (几乎没有从 pdk 默认更改):

我尝试如下设置我的 .fixtures.yml ,但这没有帮助:

知道我做错了什么吗?

编辑:将我的 .fictures.yml 更改为:

哎呀,我什至在 spec/fixtures/modules 文件夹中手动添加了一个符号链接到我的 ldap 模块。还是同样的错误。

0 投票
1 回答
281 浏览

puppet - 令人困惑的 Rspec-puppet 弃用警告:默认 mock_with 为 :mocha

运行 Rspec-puppet 测试时,会看到弃用警告:

因此,我用这样的块设置了一个 spec_helper:

就像这里的文档建议的那样。但警告仍然存在。怎么了?

0 投票
1 回答
329 浏览

puppet - Puppet:测试文件中的变量值

我正在为 puppet 编写一些测试,在我的 init_spec.rb 文件中,我想使用在 default_facts.yml 文件中声明的变量。我如何导入该变量的值而不必在 init_spec.rb 文件中声明它。

提前致谢!

0 投票
1 回答
1081 浏览

ruby - 如何修复 psych 模块找不到或者是正确版本的 Ruby

尝试使用 Ruby,特别是 ruby​​ gems 做任何事情时,我收到以下错误:

我相信值得注意的是这一行:

我从 , 等处得到这个gem install puppetgem update我尝试卸载并重新安装 libyaml,与 Ruby 相同。错误发生在我bundle uninstall puppet让它停止指向 6.3.0 gem 并指向 4.10.2 可执行文件之后。我需要 Ruby 能够使用 Rspec 来测试模块。有谁知道我该如何解决这个问题?

0 投票
2 回答
141 浏览

puppet - 带有 Adopt-OpenJDK 的 Pupperserver

我们正在从 Puppetmaster 3.8 过渡到 Puppet server(OpenSource) 5.3。作为 Puppetserver 5.3 安装的先决条件,需要 Java 8 运行时包。我们可以使用 Pupperserver 5.3 安装 Adopt-OpenJDK 吗?

0 投票
1 回答
174 浏览

puppet - 如何使用 rspec 在 puppet 中模拟 puppet validate_cmd?

我有一个木偶食谱 rspec 示例测试,如下所示

问题是这只是检查清单中是否存在 validate_cmd 。

我必须模拟 validate_cmd 函数并返回 true/false,基于此我必须检查新创建的文件的内容。如何使用 rspec 模块模拟 validate_cmd 命令?任何帮助将不胜感激!

0 投票
1 回答
291 浏览

puppet - puppet-rspec - 如何在单元测试期间将参数传递给嵌套的配置文件类?

我正在尝试为 Hashicorp Consul DCS 构建两个 Puppet 配置文件。Consul 可以作为客户端或服务器代理运行,服务器模式是客户端模式的超集。这直接反映在配置中:

Consul 服务器代理通常需要 Consul 客户端代理所需的配置超集。

我的 Puppet 设计方法基于此模式: https ://puppet.com/docs/pe/2018.1/the_roles_and_profiles_method.html

根据 Puppet 文档,应该可以(并且最可能需要)在consul_client配置文件中包含配置consul_server文件以避免代码重复:

配置文件可以包括其他配置文件。

为了实现这一点,我在两个配置文件上都使用了一些强制参数,并在执行自动 rspec 单元测试期间遇到了问题。

consul_client单元测试文件consul_client_spec.rb中,我只是提供了所需的参数,如下所示:

尝试运行consul_server_spec.rb单元测试时出现问题。天真地,我只是传递了consul_server配置文件的一个附加必需参数:

由于consul_client配置文件由配置文件include编辑/require编辑consul_server,因此测试失败,缺少consul_client配置文件类的参数。这似乎表明这种方法存在一些普遍的结构性问题。


现在,我不确定是否应该在consul_client配置文件类中重新声明配置文件类的所有参数consul_server——在我看来,这会违反 DRY 原则。profile::consul_client::*此外,当将来使用 Hiera 数据时,这将导致其中profile::consul_server::*包含一些相同的重复数据,因为必须为两个配置文件重复数据的客户端相关部分。

补充说明:并且在类中复制参数consul_server甚至可能不起作用,因为参数不能显式传递,而只能通过数据传递到类似包含的资源定义 - 所以那些重复的参数不能传递给consul_client类。

相反,文档说明了以下内容,但我不确定这是否也适用于包含的配置文件类(因为它们可能不是组件类?):

配置文件拥有其组件类的所有类参数。如果配置文件省略了一个,那意味着你肯定想要默认值;组件类不应使用 Hiera 数据中的值。如果您需要设置之前省略的类参数,请重构配置文件。


除了这些想法之外,人们还可以看到两个配置文件类被重构为单独模块的普通类,这可能有助于了解不同设计方法的含义。


总之,出现以下问题:

  • 嵌套配置文件中的参数应该如何处理,应该由分层数据单独为每个配置文件类单独设置?
  • 如何在单元测试期间将参数传递给嵌套配置文件?以某种方式提供模拟 hiera 数据作为测试夹具的一部分是否是正确的方法?
  • 模拟consul_client配置文件类会是更好的选择吗?
0 投票
1 回答
27 浏览

ruby - rpsec-puppet 功能?他们来自哪里?

如果我是菜鸟,那么抱歉,但是...我对 rspec/ruby 等还是很陌生,我正在努力解决一些问题。给定以下 rspec-puppet 片段:

我们有这些函数(对象?)contain_service(),并且contain_package()似乎有类似with_hasrestartand的方法with_ensure。我想了解的是,这些功能是什么?它们是 rspec-puppet 的一部分吗?我似乎无法在 GitHub 中找到它们,并且文档并没有真正解释它。我正在尝试为每个方法找到所有可用的方法,以更好地理解这一切——源代码会很棒。任何人都可以提供一些解释它的信息/文档吗?

非常感谢,

戴夫

编辑:看起来我的 RTFM 不够。看来这些是“匹配器”,contain_package在代码中搜索永远不会起作用。