在CentOs上使用puppet安装tomcat7

时间:2014-04-06 03:19:18

标签: solr tomcat7 puppet

所以我的想法是使用puppet安装tomcat7,然后将Solr的war文件部署为Web应用程序。这是我发现的。

puppet forge上有很多tomcat7模块,但它们都没有开箱即用,我不确定它们是否真的有效,而且很多都属于将代码作为文档。

puppet模块安装fhuertas-tomcat7 作为第一个例子:

安装fhuertas-tomcat7(v0.0.1)

当我跑步时,我得到一个错误:

sudo puppet apply --modulepath=/home/qa/puppet_qa/modules/ -e "include tomcat7" --debug

错误:无法在任何Hiera数据文件中找到数据项service_path,也没有默认提供的

和类似的情况如下:

puppet module install llehmijo-tomcat7_rhel ( no longer maintained ) 

https://github.com/Spredzy/puppet-tomcat7(声称是CentOs)但是有一个Apt(适用于centos ??)先决条件,而且它也没有安装。

我想做的就是通过puppet安装tomcat7,然后安装Solr。似乎是一个简单的请求。同时我正在努力解决确切的问题,并能够安装和运行tomcat7,但不知道如何安装tomcat-users.xml

这是我的init.pp的一部分

exec {'start service':
command => 'sh "startup.sh"',
cwd => "/usr/share/apache-tomcat-7.0.42/bin",
path => '/usr/share/apache-tomcat-7.0.42/bin/:/usr/bin:/bin',
#require => File['/usr/share/apache-tomcat-7.0.42/conf/tomcat-users.xml']
}

所以如果我取消评论require =>文件[]

Error: Could not find dependency File[/usr/share/apache-tomcat-7.0.42/conf/tomcat-users.xml] for Exec[start service]

2 个答案:

答案 0 :(得分:2)

file { "/etc/tomcat7/tomcat-users.xml":
    owner => 'root',
    require => Package['tomcat'],
    notify => Service['tomcat'],
    content => template('tomcat/tomcat-users.xml.erb')
  }

这对于不在puppet forge上运行的模块和github有效,我认为没有解决方案好像不能正常工作,那么这些模块可以作为指导或提示。

答案 1 :(得分:1)

我使用了受支持的https://forge.puppetlabs.com/puppetlabs/tomcat并按照示例使用软件包正确安装了所有内容(至少在Ubuntu上)。也可以从源代码安装它。 https://github.com/puppetlabs/puppetlabs-tomcat/tree/master/examples。请参阅以下示例:

class { 'java': }
class { 'tomcat':
  install_from_source => false,
  user => 'tomcat7',
  require => Class['java']
}

tomcat::instance { 'tomcat7':
  package_name => 'tomcat7',
  require => Class['tomcat']
}->
tomcat::instance { 'tomcat7-admin':
  package_name => 'tomcat7-admin',
}->
tomcat::config::server::tomcat_users {
 'tomcat-admin':
    catalina_base => '/var/lib/tomcat7',
    element  => 'user',
    password => 'test',
    roles => ['manager-gui','admin'];
 'deployer':
    catalina_base => '/var/lib/tomcat7',
    element => 'user',
    password => 'deployer',
    roles => ['manager-script'];
}->
tomcat::service { 'tomcat7':
  service_ensure => running,
  catalina_base => '/var/lib/tomcat7',
  require => Tomcat::Instance['tomcat7']
}