В рецепте шеф-повара у меня есть ресурс выполнения, где я хотел бы, чтобы значение атрибута команды зависело от того, помечен ли сервер определенным образом (или что-либо еще, чем я могу управлять из другого рецепта).Т.е. я хотел бы что-то вроде:
execute 'application_settings_control' do
if tagged?('test-server')
command "/usr/sbin/application_settings --disablessl --fix /etc/correct-settings.json"
else
command "/usr/sbin/application_settings --fix /etc/correct-settings.json"
end
...
, но это дает
NoMethodError
-----------
undefined method `tagged?' for Chef::Resource::Execute
Это работает, если я поставлю if tagged?...
снаружи и продублирую все определение ресурса, но это дастмного дублированного кода, который выглядит плохо, и его сложнее поддерживать.Я нашел ссылки, говорящие о том, что вы можете использовать tagged?()
в only_if
/ not_if
атрибутах, но это не очень помогает мне (я думаю, я мог бы сделать код еще труднее для чтения, имея два почти идентичных ресурса с разными commands
и отметьте тег в only_if
/ not_if
).
Это просто какая-то простая синтаксическая ошибка, которую я делаю, или что?