Как передать параметры powershell в Chef - PullRequest
0 голосов
/ 14 января 2020

По какой-то причине, когда я передаю параметры через раздел параметров, мне не нравятся мои аргументы powershell. Я ненавижу вас беспокоить, ребята, но у вас есть идеи, в чем может быть проблема? Заранее спасибо!

По сути, все, что я пытаюсь сделать с PowerShell, это -

Start-Process -FilePath "T:\QualysCloudAgent.exe" -argumentlist "CustomerId={etc..etc..etc..} ActivationId={etc..etc..etc..}"

when 'windows'
  windows_package 'QualysCloudAgent' do
    source 'T:\QualysCloudAgent.exe'
    options '-argumentlist "CustomerId={etc...etc...etc..} ActivationId={etc...etc..etc...}"'
    installer_type :custom
    action :install
  end
end

1 Ответ

1 голос
/ 14 января 2020

Вы не используете 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 объясняется больше об альтернативных обозначениях для различных литералов, которые вы можете найти полезными / изящными и в других ситуациях.

...