Я использую Debian Squeeze с PostgreSQL 9.1 из backports. Puppet имеет версию 2.7.14. К сожалению, скрипт инициализации возвращает неправильный код выхода для статуса. Поэтому я написал пользовательскую status
команду, чтобы определить, работает ли postgresql или нет.
service { 'postgresql':
ensure => running,
enable => true,
hasstatus => false,
hasrestart => true,
status => "pg_lsclusters -h | awk 'BEGIN {rc=0} {if ($4 != \"online\") rc=3} END { exit rc }'",
provider => debian,
}
Моя команда работает как шарм, но у марионетки, похоже, есть проблема. Я всегда получаю, notice: /Stage[main]/Postgresql/Service[postgresql]/ensure: ensure changed 'stopped' to 'running'
хотя это уже работает.
Итак, попробовал следующее:
service { 'postgresql':
ensure => running,
enable => true,
hasstatus => false,
hasrestart => true,
status => "exit 0",
provider => debian,
}
Как я понял из этой пользовательской status
команды, puppet всегда должен думать, что postgresql запущен. Тем не менее марионетка пытается запустить postgresql - каждый раз.
В чем я виновата? Или это ошибка в марионетке?
status
команда puppet работает как положено!
provider => init
(и удалитьenable
параметр).