ฉันใช้เดเบียนบีบกับ 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
คำสั่งที่กำหนดเองหุ่นกระบอกควรคิดว่า postgresql กำลังทำงานอยู่ อย่างไรก็ตามหุ่นกระบอกพยายามที่จะเริ่ม postgresql - ทุกครั้ง
ความผิดของฉันคืออะไร หรือเป็นข้อบกพร่องในหุ่นเชิด
status
คำสั่งของหุ่นเชิดจะทำงานตามที่คาดไว้!
provider => init
(และลบenable
พารามิเตอร์)