Puppet noop 当可执行文件尚不存在时
Puppet noop When Executable does not exist yet
以下是简化的清单我是运行:
package {'ruby2.4':
ensure => installed
}
exec { "gem2.4_install_bundler":
command => "/usr/bin/gem2.4 install bundler",
require => Package['ruby2.4']
}
Puppet apply 正确运行此清单,即
安装 ruby2.4 包(包括 gem2.4)
使用 gem2.4 安装捆绑器
但是,puppet 应用 --noop 失败,因为 puppet 找不到可执行文件“/usr/bin/gem2.4”,因为 ruby2.4 没有安装 --noop。
我的问题是是否有一种标准方法可以使用 puppet apply --noop 来测试这样的场景?要验证我的人偶清单是否正确执行?
我突然想到,我可能必须解析输出并验证执行顺序。如果是这种情况,是否有标准 way/tool 呢?
最后的手段是进行非常基本的检查,确保人偶至少运行,这可以通过 --detailed-exitcodes 选项来确定。 (不同于 1 的代码)。
提前致谢
rspec-puppet 是该级别验证的标准工具。它可以从清单构建一个目录(例如 class、定义的类型或主机),然后您可以编写测试来验证内容。
在您的情况下,您可以验证 package
资源是否存在,exec
资源是否存在,并验证它们之间的顺序。这与 运行 使用 --noop
模式和解析输出一样有效 - 但比 运行.
更容易和更便宜
rspec-puppet 最适合模块,因此假设您按照网站上的模块设置进行操作(将 rspec-puppet
添加到 Gemfile
,运行ning rspec-puppet-init
),假设这是在一个名为 ruby24
的 class 中,spec/classes/ruby24_spec.rb
中的一个简单规范是:
require 'spec_helper'
describe 'ruby24' do
it { is_expected.to compile.with_all_deps }
it { is_expected.to contain_package('ruby2.4').with_ensure('installed') }
it { is_expected.to contain_exec('gem2.4_install_bundler').with_command('/usr/bin/gem2.4 install bundler') }
it { is_expected.to contain_exec('gem2.4_install_bundler').that_requires('Package[ruby2.4]') }
end
以下是简化的清单我是运行:
package {'ruby2.4':
ensure => installed
}
exec { "gem2.4_install_bundler":
command => "/usr/bin/gem2.4 install bundler",
require => Package['ruby2.4']
}
Puppet apply 正确运行此清单,即
安装 ruby2.4 包(包括 gem2.4)
使用 gem2.4 安装捆绑器
但是,puppet 应用 --noop 失败,因为 puppet 找不到可执行文件“/usr/bin/gem2.4”,因为 ruby2.4 没有安装 --noop。
我的问题是是否有一种标准方法可以使用 puppet apply --noop 来测试这样的场景?要验证我的人偶清单是否正确执行?
我突然想到,我可能必须解析输出并验证执行顺序。如果是这种情况,是否有标准 way/tool 呢?
最后的手段是进行非常基本的检查,确保人偶至少运行,这可以通过 --detailed-exitcodes 选项来确定。 (不同于 1 的代码)。
提前致谢
rspec-puppet 是该级别验证的标准工具。它可以从清单构建一个目录(例如 class、定义的类型或主机),然后您可以编写测试来验证内容。
在您的情况下,您可以验证 package
资源是否存在,exec
资源是否存在,并验证它们之间的顺序。这与 运行 使用 --noop
模式和解析输出一样有效 - 但比 运行.
rspec-puppet 最适合模块,因此假设您按照网站上的模块设置进行操作(将 rspec-puppet
添加到 Gemfile
,运行ning rspec-puppet-init
),假设这是在一个名为 ruby24
的 class 中,spec/classes/ruby24_spec.rb
中的一个简单规范是:
require 'spec_helper'
describe 'ruby24' do
it { is_expected.to compile.with_all_deps }
it { is_expected.to contain_package('ruby2.4').with_ensure('installed') }
it { is_expected.to contain_exec('gem2.4_install_bundler').with_command('/usr/bin/gem2.4 install bundler') }
it { is_expected.to contain_exec('gem2.4_install_bundler').that_requires('Package[ruby2.4]') }
end