Применить другую конфигурацию в зависимости от наличия файла в Puppet - PullRequest
0 голосов
/ 15 января 2020

Я хотел бы добавить функциональность в манифест Puppet, чтобы применить одну конфигурацию, если другой файл существует, если не существует, следует применить другую конфигурацию. Я пробовал эту часть кода:

    exec { "chk_file_exist":
    path    =>  ["/usr/bin","/usr/sbin", "/bin"],
    onlyif  => "test -f ${file} && echo 0",
    before => File['/etc/systemd/system/config1.service'],
   }

   exec { "chk_file_doesnt_exist":
    path    =>  ["/usr/bin","/usr/sbin", "/bin"],
    onlyif  => "test ! -f ${file} && echo 0",
    refreshonly => true,
    before => File['/etc/systemd/system/config2.service'],
   }

   file { '/etc/systemd/system/config1.service':
       content => template('module/service/config1.service'),
       require => Exec["chk_file_exist"],
   }

   file { '/etc/systemd/system/config2.service':
       content => template('module/service/config2.service'),
       require => Exec["chk_file_doesnt_exist"],
      } 

Он создает только один файл, но выдает ошибку:

Error: Could not find command 'chk_file_exist'
Error: /Stage[main]/mymodule::service/Exec[chk_file_exist]/returns: change from 'notrun' to ['0'] failed: Could not find command 'chk_file_exist' (corrective)

Как мне избежать этой ошибки?

Спасибо

1 Ответ

0 голосов
/ 16 января 2020

Вы получаете эту ошибку, потому что вы не дали exec ресурсам атрибут command. Ресурс exec по умолчанию использует свой заголовок в качестве команды .

Попробуйте что-то вроде следующего: в качестве команды, которая ничего не делает, используется true.

exec { "chk_file_exist":
  command => 'true',
  path    =>  ["/usr/bin","/usr/sbin", "/bin"],
  onlyif  => "test -f ${file} && echo 0",
  before  => File['/etc/systemd/system/config1.service'],
}
...