ляльковий виконати лише тоді, коли файл НЕ існує


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"

Не впевнений, чи може лялечка використовувати "!" характер

Можливо, кращий альтернативний:

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

навіть якщо мені не подобається те, що команда насправді не створює файл


не працює, отримали це повідомлення про помилку. Не вдалося оцінити: Не вдалося знайти команду '!'
qinking126

І це: onlyif => "тест! -F / usr / local / bin / papply"
sebastien.prudhomme

create => '/ usr / local / bin / papply' працює, дякую. дозвольте перевірити ваші оновлення, подивіться, чи htat працює.
qinking126

1
onlyif => "тест! -f / usr / local / bin / papply" працює, також той, який я вважаю за краще використовувати. Дякую тобі.
qinking126

7

Якщо ви на Linux, просто зробіть

unless => 'ls /somefile'

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


1

На linux та лялечку> 3.8 спробуйте:

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

exec не запуститься, якщо /a/file.txtіснує.


0

Ви можете розглянути можливість створення створених для цього цілей:

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.