0

問題:パペットを実行して初めてボックスをプロビジョニングすると、依存関係に失敗したというエラーが発生し、これらのエラー ( apache-solr-dataimporthandler-3.6.1.jar) のあるファイルがターゲットの宛先にコピーされません。ただし、もう一度プロビジョニングを行うと、依存関係エラーはなくなり、すべてのファイルが正しくコピーされたように見えます。

再プロビジョニングせずに依存関係エラーを解決するにはどうすればよいですか? なぜこうなった?

マニフェスト

file { '/var/lib/tomcat6/webapps/solr.war':
  ensure => present,
  owner   => root,
  group   => root,  
  mode    => 644,   
  source => 'puppet:///modules/solr/apache-solr-3.6.1.war',
  notify => Service['tomcat'],
}

file { '/usr/share/solr':
  ensure => present,
  source => 'puppet:///modules/solr/solr',
  recurse => true,
  require => File['/var/lib/tomcat6/webapps/solr.war'],
  notify => Service['tomcat'],
}

file { '/var/lib/tomcat6/webapps/solr/WEB-INF/web.xml':
  ensure => present,
  owner   => root,
  group   => root,  
  mode    => 644,   
  source => 'puppet:///modules/solr/web.xml',
  require => [ File['/var/lib/tomcat6/webapps/solr.war'], File['/usr/share/solr'] ],
}

file { '/var/lib/tomcat6/webapps/solr/WEB-INF/lib/apache-solr-dataimporthandler-3.6.1.jar':
  ensure => present,
  owner   => root,
  group   => root,  
  mode    => 644,   
  source => 'puppet:///modules/solr/apache-solr-dataimporthandler-3.6.1.jar',
  require => File['/var/lib/tomcat6/webapps/solr.war'],
  notify => Service['tomcat'],
}

エラー

←[0;36mnotice: /Stage[main]/Solr/File[/var/lib/tomcat6/webapps/solr.war]/ensure: defined content as'{md5}ae7997a401f9d223b097f8a88259689e'←[0m
←[1;35merr: /Stage[main]/Solr/File[/var/lib/tomcat6/webapps/solr/WEB-INF/lib/apache-solr-dataimporthandler-3.6.1.jar]/ensure: change from absent to file failed: Could not set 'file on ensure: No such file or directory - /var/lib/tomcat6/webapps/solr/WEB-INF/lib/apache-solr-dataimporthandler-3.6.1.jar.puppettmp_4049 at /tmp/vagrant-puppet/modules-0/solr/manifests/init.pp:37←[0m
←[0;36mnotice: /Stage[main]/Solr/File[/usr/share/solr]/ensure: created←[0m
...
...
...
←[0;36mnotice: /Stage[main]/Tomcat/Service[tomcat]: Dependency File[/var/lib/tomcat6/webapps/solr/WEB-INF/lib/apache-solr-dataimporthandler-3.6.1.jar] has failures: true←[0m
←[0;33mwarning: /Stage[main]/Tomcat/Service[tomcat]: Skipping because of failed dependencies←[0m
←[0;36mnotice: /Stage[main]/Tomcat/Service[tomcat]: Triggered 'refresh' from 6 events←[0m
←[0;36mnotice: /Stage[main]/Solr/File[/var/lib/tomcat6/webapps/solr/WEB-INF/web.xml]/content: content changed '{md5}1b3a494d9ddefb9bef08caa5146cfd32' to '{md5}f3b9d07f7585ef8008f2bcf0407596f2'←[0m
←[0;36mnotice: /Stage[main]/Solr/File[/var/lib/tomcat6/webapps/solr/WEB-INF/web.xml]/owner: owner changed 'tomcat6' to 'root'←[0m
←[0;36mnotice: /Stage[main]/Solr/File[/var/lib/tomcat6/webapps/solr/WEB-INF/web.xml]/group: group changed 'tomcat6' to 'root'←[0m
←[0;36mnotice: Finished catalog run in 18.90 seconds←[0m

ディレクトリ構造

ここに画像の説明を入力

4

1 に答える 1

0

/var/lib/tomcat6/webapps/solr/WEB-INF/lib/を作成しようとすると、人形がディレクトリが存在しないと不平を言うよう/var/lib/tomcat6/webapps/solr/WEB-INF/lib/apache-solr-dataimporthandler-3.6.1.jarです。

このディレクトリは、新しいものが tomcat によって検出されたときに作成されると思われ.warますが、それは遅すぎて、パペットを再起動する必要があります。

したがって、このディレクトリの作成を次のように明示的に確認したい場合があります。

file
{
    '/var/lib/tomcat6/webapps/solr':
        ensure => directory,
        ;
    '/var/lib/tomcat6/webapps/solr/WEB-INF':
        ensure => directory,
        ;
    '/var/lib/tomcat6/webapps/solr/WEB-INF/lib':
        ensure => directory,
        ;
}

(人形が定義された順序でそれらを作成するように見えるため、「require」を省略します)

私は tomcat の専門家ではありませんが、ディレクトリを手動で作成しても tomcat の .war 自動検出システムに干渉しないようにしてください。

于 2012-10-10T13:44:31.847 に答える