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

марионетка выполняется только тогда, когда файл НЕ существует

Я хочу выполнить следующую команду только тогда, когда файл (/ 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"
    }

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

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

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

Возможно, лучший альтернативный вариант:

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

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

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

unless => 'ls /somefile'

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

В linux и puppet> 3.8 попробуйте:

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

exec не запустится, если /a/file.txt существуют.

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

exec { 'git add url':
  command => 'git remote add origin https://github.com/testing/puppet.git',
  creates => '/usr/local/bin/papply'
}