[chef]: просмотр всех доступных пакетов данных на узле - PullRequest
1 голос
/ 22 марта 2020

В нашей организации разработчикам дается право владеть кулинарными книгами. Кулинарные книги были изначально написаны парнями из ops. Я парень java, а не эксперт по шеф-повару / рубину / опсу. Мне было дано задание отладить проблему, когда поваренная книга не читает из правильного пакета данных.

Можно ли перечислить все доступные пакеты данных на узле шеф-повара? Я пробовал что-то подобное, но это занимает много времени.

# find / -type f  -not -name "*test*" -exec grep -IHnl data_bag {} \; | grep -v gems

Код, на который я смотрю:

secret2 = Chef::EncryptedDataBagItem.load_secret(secret)
passwords = data_bag_item(id, item, secret2)

Когда клиент chef работает на узле, он объединяет все файлы data_bag json в одну структуру данных. При написании кулинарной книги, нужно ли указывать, какой data_bag загружать?

Обновление:

Эта команда была выполнена очень быстро после того, как я ограничил свой поиск только каталогами шеф-повара:

# find /run/chef /opt/chef /var/chef /etc/chef  -type f  -not -name "*test*" -exec grep -IHnl data_bag {} \; | grep -v gems

/var/chef/cache/cookbooks/users/resources/manage.rb
/var/chef/cache/cookbooks/users/CHANGELOG.md
/var/chef/cache/cookbooks/users/metadata.json
/var/chef/cache/cookbooks/users/README.md
/var/chef/cache/cookbooks/xyz_users/recipes/default.rb
/var/chef/cache/cookbooks/xyz_users/attributes/default.rb
/var/chef/cache/cookbooks/xyz_users/README.md
/var/chef/cache/cookbooks/xyz_users/.kitchen.yml
/var/chef/cache/cookbooks/xyz_base/.kitchen.yml
/var/chef/cache/cookbooks/splunk/recipes/mysqlmonitor.rb
/var/chef/cache/cookbooks/splunk/attributes/default.rb
/var/chef/cache/cookbooks/splunk/.kitchen.yml
/var/chef/cache/cookbooks/xyz_service/recipes/config.rb
/var/chef/cache/cookbooks/xyz_service/attributes/default.rb
/var/chef/cache/cookbooks/xyz_service/.kitchen.yml
/var/chef/cache/cookbooks/xyz_service/README.md
/var/chef/cache/cookbooks/xyz_service2/attributes/default.rb
/var/chef/cache/cookbooks/xyz_service2/recipes/certificates.rb
/var/chef/cache/cookbooks/xyz_service2/README.md
/var/chef/cache/cookbooks/xyz_service2/metadata.json
/var/chef/cache/cookbooks/xyz_nginx/.kitchen.yml

Спасибо.

1 Ответ

2 голосов
/ 23 марта 2020

, как вы можете видеть в документации шеф-повара для сумок с данными , а также вы указали, что ищете код

secret2 = Chef::EncryptedDataBagItem.load_secret(secret)
passwords = data_bag_item(id, item, secret2)

, поэтому на ваш вопрос

При написании кулинарной книги я должен указать, какой data_bag загрузить?

ответ - да. обратитесь ко второй строке в вашем фрагменте, в которой указано, как загрузить элемент мешка данных с именем item из мешка данных с именем id и отклонить его с помощью клавиши secret2.

теперь ко второму вопросу:

Когда chef-клиент работает на узле, он объединяет все файлы data_bag json в одну структуру данных.

насколько я знаю, ответ - нет. chef-client по запросу извлекает пакет данных c из chef-сервера (согласно тому, что написано в кулинарной книге).

...