使用puppet增加tomcat内存

使用puppet增加tomcat内存,tomcat,tomcat7,puppet,Tomcat,Tomcat7,Puppet,我正在尝试使用puppet安装/设置tomcat7 我还没有找到可以设置最大堆内存的模块 所以我一直在尝试将行“CATALINA_OPTS=-Xmx2048m”注入CATALINA.sh文件 不过,我真的不确定用什么方法做这件事最好。我查看了文件线资源,但不知道如何将它插入到Calalina .SH文件的中间。 欢迎任何建议 更新: 有些人建议使用模板,但我不需要参数化任何东西。我希望能够获取tomcat安装程序生成的任何catalina.sh,并向其中注入一条线。如果我使用了模板,或者用修改过

我正在尝试使用puppet安装/设置tomcat7

我还没有找到可以设置最大堆内存的模块

所以我一直在尝试将行“CATALINA_OPTS=-Xmx2048m”注入CATALINA.sh文件

不过,我真的不确定用什么方法做这件事最好。我查看了文件线资源,但不知道如何将它插入到Calalina .SH文件的中间。

欢迎任何建议

更新: 有些人建议使用模板,但我不需要参数化任何东西。我希望能够获取tomcat安装程序生成的任何catalina.sh,并向其中注入一条线。如果我使用了模板,或者用修改过的副本替换了文件,那么我安装的下一个tomcat可能有不同的catalina.sh,这将覆盖新的文件格式

也许我需要的是一种在另一行之后插入一行的方法。
我相信我可以在#之后插入“CATALINA_OPTS=”/bin/bash行。这可能吗?

使用文件行的
匹配
参数,因此原始文件中现有的CATALINA\u OPTS行将替换为新行

  file_line { "Tomcat Memory":
    line => "CATALINA_OPTS=-Xmx2048m",
    path=> "/route/to/catalina.sh",
    notify =>Service['tomcat'],
    match => "CATALINA_OPTS=.*",
  }

我会用模板完全控制文件。这相当容易做到。从定义文件开始:

class your_module_name ($memory='2048m') {
    file { '/where/is/catalina.sh':
        owner   => 'root',
        group   => 'root',
        mode    => '0755',
        content => template('your_module_name/catalina.sh.erb');
    }
}
现在,将当前版本的
catalina.sh
复制到
modules/your_module\u name/templates/catalina.sh.erb
中。只需添加以下行:

CATALINA_OPTS=-Xmx<%=memory%>
CATALINA_OPTS=-Xmx

在我们的debian系统上,我使用了以下条目作为“Raul Andres”答案的变体


我也谈到了同样的问题。我正在使用puppetlabs/tomcat安装tomcat,但是没有关于管理内存大小的方法的说明

但是,有一种方法可以管理setenv.sh,它允许您设置JAVA

下面是一个示例,它应该做您想要做的事情:

  include  'java'
  class { 'tomcat':
    install_from_source => true,
  }

  tomcat::instance{ 'default':
    source_url    => 'http://mirror.nexcess.net/apache/tomcat/tomcat-8/v8.0.23/bin/apache-tomcat-8.0.23.tar.gz',
  } ->
  tomcat::setenv::entry {'JAVA_OPTS':
    value => "-Xmx256m",
  }

如果您使用的是puppetlabs/tomcat模块,正确的方法是使用
tomcat::setenv::entry

如果您没有使用puppetlabs/tomcat,正确的方法仍然是通过直接编辑
catalina.sh
来使用
setenv.sh
文件not。由于默认情况下前者不存在,因此通过puppet应该很容易管理,可以使用
stdlib::file_line
或内置
文件
资源


最后,您应该编辑
CATALINA\u OPTS
变量,它只适用于tomcat,而不是
JAVA\u OPTS
,它将应用于任何可能由您的tomcat应用程序生成的子程序,并且可能与tomcat本身没有相同的内存需求。

模板我的伙计!使用模板…不确定这是否有效。首先,我不想替换该行中的CATALINA_选项,所以我真的想做一些类似“CATALINA_选项=$CATALINA_选项-Xmx2048m”的事情。但这也行不通,因为“CATALINA_OPTS=.*”出现在CATALINA的几个地方。我可以做一些更复杂的事情吗,比如,替换“CATALINA_OPTS=.*”的第一个实例。。。?或者这就是它已经在做的?我对木偶的模板不太熟悉。你能帮我写一个吗?我扩展了我的答案。如果我正确理解模板,它只允许我参数化一个文件,但我不需要参数化任何东西。我已经可以复制当前tomcat安装生成的catalina.sh,添加一个静态catalina_OPTS值,然后确保在下一次安装期间替换它。但问题是,如果我安装的tomcat的下一个版本没有使用相同的catalina.sh(即具有不同的逻辑或附加参数),那么我将使用该文件的旧版本覆盖它https://svn.apache.org/repos/asf/tomcat/trunk/bin/catalina.sh,您只需要在
$CATALINA_BASE/bin/setenv.sh
处创建一个文件,并设置适当的环境变量。使用file_行将CATALINA_选项添加到setenv.sh对我来说很有效。我想我也可以使用这个模板。谢谢你给我指明了正确的方向
  include  'java'
  class { 'tomcat':
    install_from_source => true,
  }

  tomcat::instance{ 'default':
    source_url    => 'http://mirror.nexcess.net/apache/tomcat/tomcat-8/v8.0.23/bin/apache-tomcat-8.0.23.tar.gz',
  } ->
  tomcat::setenv::entry {'JAVA_OPTS':
    value => "-Xmx256m",
  }