2013-01-30 27 views
5

Tôi có một biểu hiện con rối mà nói rằng dịch vụ "véc ni" nên chạy, nhưng nó không phải là.Con rối không bắt đầu một dịch vụ (véc ni) khi con rối áp dụng được chạy

Tôi có một dịch vụ khác được xác định, apache2, hoạt động tốt và bắt đầu bất cứ khi nào tôi chạy con rối áp dụng.

[email protected]:~$ sudo netstat -tunelp 
Active Internet connections (only servers) 
Proto Recv-Q Send-Q Local Address   Foreign Address   State  User  Inode  PID/Program name 
tcp  0  0 0.0.0.0:22    0.0.0.0:*    LISTEN  0   3749  605/sshd   
tcp  0  0 127.0.0.1:6010   0.0.0.0:*    LISTEN  1000  5169  1110/0   
tcp  0  0 0.0.0.0:48828   0.0.0.0:*    LISTEN  0   3445  552/rpc.statd 
tcp  0  0 0.0.0.0:111    0.0.0.0:*    LISTEN  0   3228  484/portmap  
tcp6  0  0 :::22     :::*     LISTEN  0   3751  605/sshd   
tcp6  0  0 ::1:6010    :::*     LISTEN  1000  5168  1110/0   
udp  0  0 0.0.0.0:68    0.0.0.0:*       0   4179  917/dhclient  
udp  0  0 0.0.0.0:68    0.0.0.0:*       0   3277  558/dhclient3 
udp  0  0 0.0.0.0:728    0.0.0.0:*       0   3430  552/rpc.statd 
udp  0  0 0.0.0.0:111    0.0.0.0:*       0   3227  484/portmap  
udp  0  0 0.0.0.0:54265   0.0.0.0:*       0   3442  552/rpc.statd 
udp  0  0 10.0.2.15:123   0.0.0.0:*       102  4259  904/ntpd   
udp  0  0 127.0.0.1:123   0.0.0.0:*       0   4208  904/ntpd   
udp  0  0 0.0.0.0:123    0.0.0.0:*       0   4203  904/ntpd   
udp6  0  0 fe80::a00:27ff:feb5:123 :::*        0   4210  904/ntpd   
udp6  0  0 ::1:123     :::*        0   4209  904/ntpd   
udp6  0  0 :::123     :::*        0   4204  904/ntpd   
[email protected]:~$ 

Apply rối:

[email protected]:~$ sudo puppet apply --verbose /vagrant/manifests/default.pp 
info: Applying configuration version '1359558916' 
notice: /Stage[main]/Apachevarnish/Service[apache2]/ensure: ensure changed 'stopped' to 'running' 
notice: Finished catalog run in 0.15 seconds 

Nhưng véc ni không bắt đầu.

Đây là file manifest:

class apachevarnish { 


    Package { ensure => "installed" } 

    package { "apache2": } 
    package { "varnish": } 

    file { '/etc/hosts': 
    ensure => link, 
    target => "/vagrant/hosts", 
    force => true 
    } 

    file { '/var/www': 
    ensure => link, 
    target => "/vagrant", 
    notify => Service['apache2'], 
    force => true 
    } 

    file { '/etc/varnish': 
    ensure => link, 
    target => "/vagrant/etc/varnish", 
    # notify => Service['varnish'], 
    force => true 
    } 


    service { "varnish": 
    ensure => running, 
    require => Package["varnish"], 
    } 


    service { "apache2": 
    ensure => running, 
    require => Package["apache2"], 
    } 

} 

Cảm ơn!

Trả lời

13

Trả lời câu hỏi của riêng tôi:

Theo này: https://projects.puppetlabs.com/issues/12773 vấn đề nằm ở kịch bản Ubuntu init, hoặc các "dịch vụ" lệnh không trả lại một mã thoát đúng đắn.

Giải pháp là đặt kiểm tra trạng thái tùy chỉnh bằng grep và dịch vụ.

service { "varnish": 
    ensure => running, 
    enable => true, 
    hasrestart => true, 
    hasstatus => true, 
    status => '/usr/sbin/service varnish status | grep "is running"', 
    require => Package["varnish"], 
    } 
4

Các tài liệu nói rằng con rối yêu cầu initscript của dịch vụ có lệnh "trạng thái" trả về 0 nếu dịch vụ đang chạy và giá trị khác không. Đây là hành vi mặc định của con rối. Cố gắng làm một

$> sudo service <service_name> status 
$> echo $? //Make sure you are getting the correct return values that puppet expects. 

Trong trường hợp init script của bạn không cung cấp cho bạn các loại lợi nhuận mong muốn thiết lập "hasstatus => false" trong khối chỉ thị dịch vụ và cung cấp cho nó một thử.

1

Điều này hoạt động tốt:

service { $service: 
    ensure  => running, 
    enable  => true, 
    status  => "/usr/sbin/service ${service} status", 
    require => Package["$service"], 
    } 
Các vấn đề liên quan