Как оцениваются not_if и run_if для пакетного ресурса Chef?Я хочу создать новую службу Windows, если она еще не существует
action :enable do
batch "install Windows service nexus3_nexus" do
code "c:/Nexus3/nexus-3.14.0-04/nexus.exe /install nexus3_nexus"
action :run
not_if "sc.exe query nexus3_nexus"
end
Как я понимаю из документации, пакетная команда должна выполняться, если код выхода «sc.exe query nexus3_nexus» равен <> 0 - Строка выполняется как команда оболочки.Если команда возвращает 0, защита применяется. Однако кажется, что, хотя команда возвращает 0, код все еще применяется:
c:\Nexus3\nexus-3.14.0-04\bin>sc.exe query nexus3_ne
SERVICE_NAME: nexus3_nexus
TYPE : 110 WIN32_OWN_PROCESS
STATE : 4 RUNNING
(STOPPABLE, NOT_PAUS
WIN32_EXIT_CODE : 0 (0x0)
SERVICE_EXIT_CODE : 0 (0x0)
CHECKPOINT : 0x0
WAIT_HINT : 0x0
c:\Nexus3\nexus-3.14.0-04\bin>echo %errorlevel%
0
И ниже вывода команды chef-client-run:
* batch[install Windows service nexus3_nexus] action run[2018-12-[12T11:16:30+01:00] INFO: Processing batch[install Windows service nexus3_nexus] action run (c:/chef/cache/cookbooks/my_nexus/resources/service_windows.rb line 11)
[2018-12-12T11:16:30+01:00] INFO: Processing batch[install Windows service nexus3_nexus] action run (c:/chef/cache/cookbooks/my_nexus/resources/service_windows.rb line 11)
[2018-12-12T11:16:30+01:00] INFO: Processing batch[Guard resource] action run (dynamically defined)
[2018-12-12T11:16:30+01:00] INFO: Processing batch[Guard resource] action run (dynamically defined)
================================================================================
Error executing action `run` on resource 'batch[install Windows service nexus3_nexus]'
================================================================================
Mixlib::ShellOut::ShellCommandFailed
------------------------------------
Expected process to exit with [0], but received '1'