我正在开发基础设施,其中某些服务器无法访问互联网,因此我必须将软件包推送到本地存储库,然后才宣布将它们安装在Chef上。< / p>
然而,我们一直处于Chef无法安装包的情况,因为某些包装盒上没有包装,而且在其他一些包装盒上已经成功。
我想要做的是在节点上应用Chef配置之前运行Ruby / RSpec测试,以确保在配方上声明的包确实存在于repo上。
为了做到这一点,我需要能够列出我们的食谱中存在的所有包。
我的问题是:无论如何要列出Chef中所有声明的包吗?我快速浏览了 Chef :: Platform 和 ChefSpec ,但遗憾的是找不到任何有用的问题。
你知道哪个地方最好看?
答案 0 :(得分:3)
如果您使用ChefSpec,您可以通过在某个测试中调用chef_run.find_resources(:package)
来查找所有包。请参阅source code。像这样:
require 'chefspec'
describe 'example::default' do
let(:chef_run) { ChefSpec::Runner.new.converge(described_recipe) }
it 'does something' do
chef_run.find_resources(:package)...
end
end
答案 1 :(得分:1)
您可以安装一个或多个community ohai plugins。例如,以下内容将返回有关已安装的软件的信息:
启用插件后,他们将添加可从chef-server搜索的其他节点属性。