2014-01-27 7 views
2

Я работаю над инфраструктурой, где некоторые серверы не имеют доступа к интернету, поэтому я должен подталкивать пакеты к местному репо, прежде чем объявлять их установленными на шеф-поваре ,Список всех объявленных пакетов в шеф-поваре

Однако мы были в ситуации, когда шеф-повалу не удалось установить пакет, поскольку пакет не был на некоторых коробках, и он был успешным в некоторых других коробках.

Что я хочу сделать, это запустить тест Ruby/RSpec, прежде чем применять конфигурацию Chef на узлах, чтобы убедиться, что пакеты, объявленные в рецептах, действительно существуют в репо.

Для этого мне нужно иметь возможность перечислять все пакеты в наших рецептах.

Мой вопрос: есть ли все, чтобы перечислить все объявленные пакеты в шеф-поваре? Я быстро посмотрел на Шеф-повар :: Платформа и ChefSpec, но, к сожалению, не удалось найти ничего полезного в моей проблеме.

У вас есть идеи, где лучше всего смотреть?

ответ

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 
+0

Спасибо, что это работает –

1

Вы можете установить один или несколько из community ohai plugins. Например, следующий будет возвращать информацию об установленном программном обеспечении для:

После того, как плагины включены они будут добавлять дополнительные атрибуты узлов, которые будут доступны для поиска с chef- сервер.

Смежные вопросы