Автоматизируйте самообновление композитора с помощью Puppet


У меня установлен компилятор PHP глобально,и я пытаюсь заставить Puppet автоматически запустить команду самообновления composer.

Вот мой манифест:

exec { "composer self-update":
  path    => '/usr/local/bin/'
}

Запуск "/usr/local/bin / composer self-update " как root вручную работает, но при запуске puppet он генерирует эту ошибку:

Изменение с notrun на 0 failed: /usr / bin/env: php: нет такого файла или каталога

Я в недоумении, почему ручное поведение отличается от кукольного поведение.

Кроме того, у меня есть марионетка, работающая как root.

2   4   2013-09-16 21:54:49

2 ответа:

Работать так, как вы написали, должно было сработать. Тем не менее, вы можете использовать параметр command:

exec { "do_some_update" :
   command => "composer self-update",
   path => "/usr/local/bin",
}

Таким образом, вы можете обратиться к exec позже, если хотите:

 file { "configuration" :
   require => Exec["do_some_update"]       
 }

Вместо того, чтобы печатать Exec["/usr/local/bin/composer self-update"]

Я смог решить ее сам, изменив exec. Я не уверен, почему есть разница, но это работает:

exec { "/usr/local/bin/composer self-update":}

Обратите внимание, что отличие состоит в том, что путь включен в имя exec вместо параметра path. Если кто-то знает, почему это не сработало по-другому, это может быть информативно.