Вы не используете powershell.exe
- если QualysCloudAgent.exe
не примет параметр -ArgumentList
, тогда ваш исполняемый файл, скорее всего, не поймет аргумент. Просто передайте свои параметры ресурсу следующим образом:
options %Q(CustomerId={etc...etc...etc..} ActivationId={etc...etc..etc...})
Вы также можете рассмотреть возможность использования guard
, чтобы убедиться, что идемпотентность сохраняется во время конвергенции (например, дон не устанавливать, если он уже установлен). Например, в вашем ресурсе вы можете сделать что-то подобное в вышеприведенном блоке, поскольку у вас есть набор :custom
installer_type
:
not_if %Q(# PowerShell code to check if the program is installed)
guard_interpreter :powershell_script
Установка guard_interpreter
на ресурсе говорит Chef оценивать строку not_if
или only_if
под ресурсом в качестве этого языка. См. Связанную страницу для различных сред выполнения, поддерживаемых Chef в этом контексте.
Примечание: %Q()
- это сокращение в Ruby для строковых литералов в двойных кавычках с дополнительным бонусом - вы не делаете больше не нужно избегать двойных кавычек (хотя вам придется заключать в закрытые круглые скобки, например, %Q(My name is Bender\()
, но не нужно %Q(My name is (Bender))
), что обычно очень помогает при создании внешних аргументов команды, особенно в Шеф-повар. В этом разделе Ruby wikibook объясняется больше об альтернативных обозначениях для различных литералов, которые вы можете найти полезными / изящными и в других ситуациях.