Назад | Перейти на главную страницу

Puppet agent на Windows разве не работает, как я думаю?

Хорошо, я целыми днями гонялся за этим. Есть ли проблема с марионеточным агентом 3.7.1 x64 в Windows 7 x64, когда исполнители с «если» никогда НЕ запускают команду? Я пробовал делать пакетный пример:

if => "Список источников C: /ProgramData/chocolatey/choco.exe | findstr -i 'chocolatey [Disabled]'",

Powershell, а теперь и скомпилированный исполняемый файл AutoIT:

exec { 'disablepublicchocolatey':
        command => "C:/ProgramData/chocolatey/choco.exe source disable -n=chocolatey",
        unless  => 'c:/ProgramData/puppetfiles/checkifexists.exe repo "chocolatey [disabled]"',
        require => [Exec['chocolatelyinstall'],File['checkifexists.exe']],
      }

Мой скрипт возвращает 1, если он находит текст 'chocolatey [disabled]' в выводе списка источников choco (текстовое совпадение НЕ чувствительно к регистру) ... Итак ... это НЕ должно запускаться, если

c:\TEMP\AutoitScripts\chocolatey>choco source list     
Chocolatey v0.9.9.6   
chocolatey [Disabled] - https://chocolatey.org/api/v2/

но вроде всегда запускается ... Баг есть? Я просто очень запутался?

Чтобы использовать |, вы должны использовать оболочку, встроенную в cmd.exe / C: https://docs.puppetlabs.com/windows/troubleshooting.html#shell-builtins

См. Пример ниже:

exec { 'configure_timezone':
  command => "tzutil.exe /s \"${timezone}\"",
  unless  => "cmd.exe /C tzutil.exe /g | findstr /C:\"${timezone}\"",
}