кукольный только exec, когда файл не существует


11

Я хочу выполнить следующую команду, только когда файл (/ usr / local / bin / papply) не существует. не уверен что туда поставить.

    exec { 'git add url':
        command =>'git remote add origin https://github.com/testing/puppet.git',
        require => Exec['git init'],
        cwd => '/home/vagrant/django',
        user => 'vagrant',
        onlyif => "not sure what to put here"
    }

Ответы:


22

Вы пробовали это?

onlyif => "test ! -f /usr/local/bin/papply"

Не уверен, что Puppet может использовать '!' персонаж

Возможно, лучший alterntive:

creates => '/usr/local/bin/papply'

даже если мне не нравится тот факт, что команда на самом деле не создает файл


не работает, получил это сообщение об ошибке. Не удалось оценить: не удалось найти команду '!'
qinking126

И это: onlyif => "test! -F / usr / local / bin / papply"
sebastien.prudhomme

create => '/ usr / local / bin / papply' работает, спасибо. позвольте мне проверить ваши обновления, посмотреть, работает ли htat one.
qinking126

1
onlyif => "test! -f / usr / local / bin / papply" работает, также тот, который я предпочитаю использовать. Спасибо.
qinking126

7

Если вы на Linux, просто сделайте

unless => 'ls /somefile'

ls вернется с ненулевым кодом возврата, если файл не существует, и если только он не разрешит исполняемому файлу, на котором он выполняется, если его тест вернет ненулевой код возврата.


1

На Linux и Puppet> 3,8 попробуйте:

exec { 'test':
   command => '/bin/echo HI',
   unless  => 'test -f /a/file.txt',
}

exec не будет работать, если /a/file.txtсуществует.


0

Вы можете рассмотреть возможность использования create , который существует для этой цели:

exec { 'git add url':
  command => 'git remote add origin https://github.com/testing/puppet.git',
  creates => '/usr/local/bin/papply'
}
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.