rspec-puppet:找不到所需的 class
rspec-puppet: cannot find class that is required
所以我有一个功能齐全的 'ldap' class。
现在我想为我的 ldap 目录中的某些用户做一些事情。
我在一个新的 'users' 模块中执行此操作,方法是首先创建一个新的 defined_type:
define users::admin (
String $sshkey
) {
file {"/home/${title}":
ensure => directory,
owner => $title,
group => 'root',
require => Class['ldap']
}
...
}
然后我在我的 'users' 模块的 init.pp:
中使用这个定义的类型
class users {
users::admin {'ldt':
sshkey => 'mysshkey',
}
}
但是当我尝试在上面使用 'pdk test unit' 时,出现以下错误:
failed: rspec: ./spec/classes/users_spec.rb:8: error during compilation:
Could not find resource 'Class[Ldap]' in parameter 'require'
(file: ~/Projects/puppet/modules/users/spec/fixtures/modules/users
/manifests/admin.pp, line: 15) on node <mycomputer>
为了完整起见,这是我的 admin_spec.rb(几乎没有改变 pdk 默认值):
require 'spec_helper'
describe 'users::admin' do
let(:title) { 'namevar' }
let(:params) do
{
'sshkey' => ''
}
end
on_supported_os.each do |os, os_facts|
context "on #{os}" do
let(:facts) { os_facts }
it { is_expected.to compile }
end
end
end
我尝试按如下方式设置我的 .fixtures.yml,但这没有帮助:
fixtures:
symlinks:
ldap: "#{source_dir}"
知道我做错了什么吗?
编辑:将我的 .fictures.yml 更改为:
fixtures:
symlinks:
ldap: "#{source_dir}/../ldap"
哎呀,我什至在 spec/fixtures/modules 文件夹中手动添加了一个符号链接到我的 ldap 模块。还是一样的错误。
所以事实证明错误与 rspec 或其他任何事情无关。
我只需要在我的实际人偶代码中 'include ldap'。
所以我有一个功能齐全的 'ldap' class。
现在我想为我的 ldap 目录中的某些用户做一些事情。
我在一个新的 'users' 模块中执行此操作,方法是首先创建一个新的 defined_type:
define users::admin (
String $sshkey
) {
file {"/home/${title}":
ensure => directory,
owner => $title,
group => 'root',
require => Class['ldap']
}
...
}
然后我在我的 'users' 模块的 init.pp:
中使用这个定义的类型class users {
users::admin {'ldt':
sshkey => 'mysshkey',
}
}
但是当我尝试在上面使用 'pdk test unit' 时,出现以下错误:
failed: rspec: ./spec/classes/users_spec.rb:8: error during compilation:
Could not find resource 'Class[Ldap]' in parameter 'require'
(file: ~/Projects/puppet/modules/users/spec/fixtures/modules/users
/manifests/admin.pp, line: 15) on node <mycomputer>
为了完整起见,这是我的 admin_spec.rb(几乎没有改变 pdk 默认值):
require 'spec_helper'
describe 'users::admin' do
let(:title) { 'namevar' }
let(:params) do
{
'sshkey' => ''
}
end
on_supported_os.each do |os, os_facts|
context "on #{os}" do
let(:facts) { os_facts }
it { is_expected.to compile }
end
end
end
我尝试按如下方式设置我的 .fixtures.yml,但这没有帮助:
fixtures:
symlinks:
ldap: "#{source_dir}"
知道我做错了什么吗?
编辑:将我的 .fictures.yml 更改为:
fixtures:
symlinks:
ldap: "#{source_dir}/../ldap"
哎呀,我什至在 spec/fixtures/modules 文件夹中手动添加了一个符号链接到我的 ldap 模块。还是一样的错误。
所以事实证明错误与 rspec 或其他任何事情无关。
我只需要在我的实际人偶代码中 'include ldap'。