Задать вопрос
opium
@opium
Просто люблю качественно работать

Не запускается bash script в puppet через exec?

Скрипт простой в четыре строки /etc/rc.d/rc.mongo:


/usr/bin/mongod --fork --shardsvr --logpath /var/log/mongodb.log --logappend --dbpath /mnt/cloudkc/mongo > /dev/null 2>&1

/usr/bin/mongod --fork --configsvr --logpath /var/log/mongocfg.log --logappend --dbpath /mnt/cloudkc/mongocfg > /dev/null 2>&1

sleep 3

/usr/bin/mongos --fork --logpath /var/log/mongos.log --logappend --configdb :27019 > /dev/null 2>&1


Ошибка в паппет лог на клиенте:


Jan 15 18:52:46 puppet puppet-agent[16099]: (/Stage[main]//Exec[runmongo]/returns) change from notrun to 0 failed: /etc/rc.d/rc.mongo returned 1 instead of one of [0] a

t /etc/puppet/manifests/site.pp:50


Выполняю в манифесте вот так:


exec { «runmongo»:

command =>"/etc/rc.d/rc.mongo",

path => "/usr/bin:/usr/sbin:/bin",

require => File["/etc/rc.d/rc.mongo"],

}
  • Вопрос задан
  • 4251 просмотр
Подписаться 2 Оценить Комментировать
Решения вопроса 1
opium
@opium Автор вопроса
Просто люблю качественно работать
Помогло добавление provider -> shell

exec { «runmongo»:
command =>"/etc/rc.d/rc.mongo",
path => "/usr/bin:/usr/sbin:/bin",
provider => shell,
require => File["/etc/rc.d/rc.mongo"],
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
karabanov
@karabanov
Системный администратор
Полагаю необходимо как-то так:

exec { "runmongo":
command =>"bash /etc/rc.d/rc.mongo",
path => "/usr/bin:/usr/sbin:/bin",
require => File["/etc/rc.d/rc.mongo"], <-- А вот эта запятая здесь не лишняя?
}


Возможно ещё поможет указание #!/bin/bash вначале скрипта…
Ответ написан
Комментировать
m0ps
@m0ps
Правильно, пуппет не знал как выполнить файл, т.к. это не бинарник и в скрипте не указан интерпретатор. Вообще-то по правилам — в начале скрипта надо указывать каким интерпретатором выполнять скрипт. Выше karabanov уже дал пример.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы