列出chef中所有声明的包

时间:2014-01-27 15:04:01

标签: ruby chef chef-solo chefspec

我正在开发基础设施,其中某些服务器无法访问互联网,因此我必须将软件包推送到本地存储库,然后才宣布将它们安装在Chef上。< / p>

然而,我们一直处于Chef无法安装包的情况,因为某些包装盒上没有包装,而且在其他一些包装盒上已经成功。

我想要做的是在节点上应用Chef配置之前运行Ruby / RSpec测试,以确保在配方上声明的包确实存在于repo上。

为了做到这一点,我需要能够列出我们的食谱中存在的所有包。

我的问题是:无论如何要列出Chef中所有声明的包吗?我快速浏览了 Chef :: Platform ChefSpec ,但遗憾的是找不到任何有用的问题。

你知道哪个地方最好看?

2 个答案:

答案 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搜索的其他节点属性。