Windows Puppet Agent - Package Manifest - Extra Слэши

Я пытаюсь использовать Puppet для установки приложения, которое требует, чтобы параметры передавались в базовый MSI-файл особым способом.

Пример:

package { 'Vendor Application':
  ensure => '8.4.12.0',
  source => 'C:\setup.exe',
  install_options => '/S /v"REBOOTPROMPT=Supress"'
}

Я заметил, что не имеет значения, использую ли я двойные кавычки для install_options и избегаю внутренних двойных кавычек или одинарных кавычек пользователя, кажется, что каждый раз, когда Puppet добавляет косую черту перед двойные кавычки.

См. ниже вывод --debug после запуска "puppet apply test.pp"

Debug: Executing: 'cmd.exe /c start "puppet-install" /w "C:\setup.exe" "/S /v\"REBOOTPROMPT=Supress\""'

Кто-нибудь еще сталкивался с этим и выяснил, как предотвратить добавление лишней косой черты?

Спасибо!

2
задан 4 January 2018 в 15:41
1 ответ

Puppet автоматически добавляет кавычки, если в install_options есть пробелы. Это сделано намеренно. Однако это совершенно нежелательно, если вы хотите точно контролировать, как передается ввод, что происходит почти каждый раз, когда вы используете install_options . Из-за автоматического цитирования он добавляет \ , чтобы избежать существующих кавычек, что также является нежелательным поведением в Windows.

Итак, ваш ресурс здесь:

package { 'Vendor Application':
  ensure => '8.4.12.0',
  source => 'C:\setup.exe',
  install_options => '/S /v"REBOOTPROMPT=Supress"'
}

Следует передавать как :

package { 'Vendor Application':
  ensure          => '8.4.12.0',
  source          => 'C:\setup.exe',
  install_options => ['/S', '/v"REBOOTPROMPT=Suppress"'],
}

Исправления форматирования не требуются, но следуйте инструкциям Руководства по стилям марионетки . Также исправлена ​​опечатка ( REBOOTPROMPT = Подавить ).

Более того, вероятно, вам нужно будет установить его так, поскольку он будет передаваться через cmd.exe / c (как вы видели выше):

package { 'Vendor Application':
  ensure          => '8.4.12.0',
  source          => 'C:\setup.exe',
  install_options => ['"', '/S', '/v""REBOOTPROMPT=Suppress""', '"'],
}

Если вы действительно хотите глубоко понять, как определить передачу install_options , прочтите параметры установки с кавычками или пробелами (it применяется к любому использованию install_options , а не только к указанному провайдеру).

1
ответ дан 3 December 2019 в 12:33

Теги

Похожие вопросы