#chef-infra #cookbook
#шеф-повар-инфра #кулинарная книга
Вопрос:
Я не могу интерпретировать приведенный ниже код в кулинарной книге шеф-повара:
systemd_unit '<service_name>' do
action %i[enable start]
end
Я прочитал о systemd_unit из ресурса systemd_unit. Однако, как здесь определяется действие? Я пытаюсь преобразовать эту кулинарную книгу в ansible и хотел сначала понять, что происходит в кулинарной книге.
Кроме того, будучи новичком в кулинарной книге, я также хотел подтвердить, если:
include_recipe '<cookbook_name>'
предоставляется, тогда, насколько я понимаю, он включает default.rb
из данной кулинарной книги, а другие рецепты в этой кулинарной книге не включены. Пожалуйста, дайте мне знать, если это правильно.
Ответ №1:
%i[запустить, включить] — это массив, служба сначала запускается, а затем включается для автоматического запуска.
Включить кулинарную книгу включает только рецепт по умолчанию, для конкретного использования рецепта включает ‘cookbook::recipe’
С наилучшими пожеланиями
Ответ №2:
Предоставление расширенного ответа в дополнение к ответу @Psyreactor.
Действия в рецепте шеф-повара представлены символами Ruby, такими как :create
, :start
и т.д. Когда несколько действий должны быть выполнены на одном ресурсе, они передаются в виде массива.
Итак, вместо того, чтобы писать два объявления ресурсов для одного и того же сервиса, подобного этому:
# Enable the service
systemd_unit '<service_name>' do
action :enable
end
# Start the service
systemd_unit '<service_name>' do
action :start
end
Он может быть записан как один:
# Enable and start the service
systemd_unit '<service_name>' do
action [ :enable, :start ]
end
Примечание: %i
это способ исключить использование :
символа и создать массив символов. %i(enable, start)
то же самое, что [ :enable, :start ]
.
«Действия» шеф-повара известны как «состояние» в Ansible. Итак, для аналогичной службы в Ansible вы бы сделали:
systemd:
name: '<service_name>'
enabled: yes
state: 'started'
он включает
default.rb
из данной кулинарной книги, а другие рецепты в этой кулинарной книге не включены.
Это правильно. Однако от этого зависит то, что другие рецепты из этой кулинарной книги не будут включены в прогон default.rb
.