Puppet
如何在 rspec Puppet 中使用自定義事實
有沒有辦法在使用 rspec 時使用自定義事實?當我在代理上執行 puppet 時,我的模組工作正常,並且自定義事實存在並按預期工作,但是當我嘗試在 rspec 中使用相同的事實時,我收到以下錯誤:
Failure/Error: it { should contain_class('zabbixconfig') } Puppet::PreformattedError: Evaluation Error: Unknown variable: 'pskkey_generate'. at /etc/puppetlabs/code/environments/production/modules/zabbixconfig/spec/fixtures/modules/zabbixconfig/manifests/init.pp:46:13 on node puppet-master-poc
上面的
pskkey_generate
錯誤是我的自定義事實,這是我的課程的一個片段,包括它:$pskkey = $pskkey_generate
有誰知道如何讓 rspec 辨識我的自定義事實?任何幫助,將不勝感激。
在您的
spec/spec_helper.rb
文件中,您可以添加以下內容:RSpec.configure do |c| c.default_facts = { :pskkey_generate => '...' } end
在您的情況下,最好按照 bodgit 的建議在 default_facts 中硬編碼您的事實的已知值。在其他情況下,當事實來自第三方模組時,必須添加模擬來對您使用他們的程式碼進行實際測試是很煩人的。
我在頂部添加了
spec/spec_helper.rb
:if ENV.include? 'MODULEPATH' top_path = File.dirname(File.dirname(__FILE__)) ENV['FACTERLIB'] = ENV['MODULEPATH'].split(/:/).map do |p| p.start_with?('/') ? p : File.join(top_path, p) end.map do |p| Dir.glob(File.join(p, '*/lib/facter')) end.flatten.join(':') end
當 Facter 庫載入時,它將遵循 FACTERLIB 環境變數並評估 Puppet 環境中模組提供的所有自定義事實。
測試環境時的典型值
MODULEPATH
是“design:modules”。