꼭두각시 서비스 뒤에있는 소프트웨어를 교체 할 때 경쟁 조건을 피하려고합니다. 파일을 바꾸기 전에 꼭두각시 서비스를 중지 시키려면 어떻게합니까?
꼭두각시가에게 서비스를 중지 필요가 있음을하려면 는를 실행 한 후 시작 서비스를 대체합니다. 꼭두각시가 그 일을하도록 이야기 할 방법이 있습니까? 그 일을하는 선호하는 방법은 실행 파일을 대체 한 다음 필요한 경우 상태를 확인하고 다시 시작하는 것 같습니다. 다음$O = '1'
$I = '2'
exec { hi :
command => '/bin/echo "$(/bin/date +%s) puppet says hello" >> /tmp/freebird.log' ,
}
file { exe :
name => "/tmp/freebird" ,
ensure => present ,
owner => "root" ,
group => "root" ,
mode => "0555" ,
source => "/root/test-v$I" ,
}
file { init :
name => '/etc/init.d/freebird' ,
ensure => present,
owner => "root",
group => "root",
mode => "0555",
source => "/root/test.init" ,
}
service { freebird :
ensure => running,
enable => true,
hasrestart => true,
hasstatus => true,
require => [ File[init], File[exe] ],
}
가 입니다 :
는가 여기에이 문제를 시뮬레이션하기 위해 사용하고 인형 매니페스트입니다. (이 예는 인위적인되는 실제 경쟁 조건이 ...이 간단한 어디에도 없습니다) test-v1 파일 test-v2 파일은 v=2
과 동일하지만 동일합니다.
#!/bin/bash
v=1
while true
do
echo "$(date +%s) $v" >> /tmp/freebird-v.log
sleep 1
done
그리고있는 init.d 스크립트 : 나는 꼭두각시 서비스 뒤에 소프트웨어를 교체 할 때 경쟁 조건을 피하기 위해 노력하고있어
#!/bin/bash
#
# /etc/rc.d/init.d/freebird
# chkconfig: 2345 90 10
# description: freebird
# Provides: freebird
# Required-Start: $syslog $remote_fs
# Should-Start:
# Required-Stop: $syslog $remote_fs
# Should-Stop:
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: freebird
# Source function library.
. /etc/rc.d/init.d/functions
xme=freebird
export PATH=/sbin:/bin:/usr/sbin:/usr/bin
function L() {
echo "$(date +%s) $*" 1>&2
echo "$(date +%s) $*" >> /tmp/$xme.log
}
case "$1" in
(start) L $1 $xme
(/tmp/$xme &)
;;
(stop) L $1 $xme
fuser -k /tmp/$xme
;;
(status) L $1 $xme
/sbin/fuser /tmp/$xme >/dev/null 2>&1
;;
(restart) L $1 $xme
$0 stop
$0 start
;;
(*)
echo "Usage: $xme {start|stop|status|restart]"
exit 1
;;
esac
M0dlx, 감사합니다. 귀하의 의견은 나를 올바른 방향으로 밀어 넣었습니다. 처음부터이 모든 작업을 수행했다면 필자는 인형을 강제로 처리하지 않고 OS 포장기의 사전 설치 기능을 사용할 것입니다. 그리고 fpm은 훨씬 쉽게 ... – bugi
@ m0dlx, 나는 의심이 하나 있습니다. 내 매니페스트가'File [ 'X'], File [ 'Y'], File [ 'Z'] -> Service [ 'XYZ'] {subscribe : File [ 'X', 'Y']}' ? 'file 'Z''가 생성 된 후에 만 서비스가 실행/재시작 될 것인가''파일 X/Y/Z'가 수정 될 때마다 다시 시작됩니다. – harshad