无法使用Puppet在Tomcat上部署Solr

时间:2012-10-09 15:43:15

标签: tomcat solr tomcat6 puppet vagrant

我正在尝试使用Puppet在Tomcat上部署Solr。将solr.war复制到/var/lib/tomcat6/webapps/solr.war时,Tomcat需要一些时间来注意新添加的文件并进行部署。其中一个部署步骤涉及将.war文件扩展到/var/lib/tomcat6/webapps/solr/目录。

问题:我想在tomcat部署apache-solr-dataimporthandler-3.6.1.jar 之后,在/var/lib/tomcat6/webapps/solr/ 中添加更多文件(例如solr.war)并创建了这个结构。如果我在tomcat之前创建了文件夹/var/lib/tomcat6/webapps/solr/,这就是我下面的清单所做的,tomcat将不会部署Solr。

在将文件添加到新创建的目录之前,是否可以让Puppet等待tomcat部署solr?

清单

class solr {

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

  $solr_dirs = [ "/var/lib/tomcat6/webapps/solr/", "/var/lib/tomcat6/webapps/solr/WEB-INF/", 
                  "/var/lib/tomcat6/webapps/solr/WEB-INF/lib/"]
  file { $solr_dirs:
      ensure => "directory",
  }

  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[$solr_dirs],
  }

  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[$solr_dirs],
  }


}

1 个答案:

答案 0 :(得分:2)

您真的不需要将这些附加文件添加到solr war文件中。通常情况下离开战争会更好。这些文件可以添加到solr_home,它也是应用程序服务器之外的其他位置。由于您提到了jar文件,因此您可以在solrconfig.xml中配置jar的路径。这样他们将在启动时从Solr加载。也请查看this page