5

サービス「ニス」を実行する必要があることを示すパペットマニフェストがありますが、実行されていません。

別のサービスであるapache2が定義されています。これは正常に機能し、puppetapplyを実行するたびに開始されます。

vagrant@lucid32:~$ 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        
vagrant@lucid32:~$ 

人形を適用します:

vagrant@lucid32:~$ 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

しかし、ニスは始動しません。

これはマニフェストファイルです:

  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"],
  }

}

ありがとう!

4

3 に答える 3

13

私自身の質問に答える:

これによると:https ://projects.puppetlabs.com/issues/12773問題はUbuntuのinitスクリプト、または「service」コマンドが適切な終了コードを返さないことにあります。

解決策は、grepとserviceを使用してカスタムステータスチェックを設定することです。

  service { "varnish":
    ensure => running,
    enable  => true,
    hasrestart => true,
    hasstatus => true,
    status => '/usr/sbin/service  varnish status | grep "is running"',
    require => Package["varnish"],
  }
于 2013-01-30T18:23:06.617 に答える
4

ドキュメントによると、puppetは、サービスのinitscriptに、サービスが実行中の場合は0を返し、それ以外の場合はゼロ以外の値を返す「status」コマンドがあることを期待しています。これは、puppetのデフォルトの動作です。やってみてください

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

initscriptで目的のリターンタイプが得られない場合は、サービスディレクティブブロック内で「 hasstatus => false」を設定して、試してみてください。

于 2013-11-19T02:47:20.167 に答える
1

これは正常に機能しています。

  service { $service:
    ensure     => running,
    enable     => true,
    status     => "/usr/sbin/service  ${service} status",
    require    => Package["$service"],
  }
于 2016-01-28T13:14:24.120 に答える