用Puppet设置Tomcat(noob问题)

我一直在学习Puppet(最近24小时),并且已经拿出了下面的模块来安装Tomcat。 它工作的很好,但我不禁觉得这不是最好的方式来做到这一点 – 特别是在name[1-4]部分和步骤/依赖关系。 如果一个“ 木偶大师 ”:)可以看看我在做什么,并提出改进build议,我会非常感激。

 class tomcat { #### # Tomcat # Variables $tomcatVersionedDir="/usr/local/apache-tomcat-6.0.29" $tomcatDir="/usr/local/tomcat" $tomcatBinDir="${tomcatDir}/bin" $tomcatDaemonSrcDir="${tomcatBinDir}/commons-daemon-1.0.2-native-src" # 1) Get the package file { "/root/tomcat6.tgz": ensure => "file", source => "puppet://puppet/tomcat/tomcat6.tgz", } # 2) Untar the package define tomcat_expand() { exec { "/bin/tar xzf /root/tomcat6.tgz": cwd => "/usr/local", creates => $tomcatVersionedDir, } } tomcat_expand { name1: require => File["/root/tomcat6.tgz"], } # 3) Create the symlink file { "${tomcatDir}": ensure => $tomcatVersionedDir, require => Tomcat_expand["name1"], } # 4) Daemon source expand define tomcat_daemon_expand() { exec { "/bin/tar xzf commons-daemon-native.tar.gz": cwd => "${tomcatDir}/bin", creates => "${tomcatDaemonSrcDir}", } } tomcat_daemon_expand { name2: require => File["${tomcatDir}"], } # 5) Configure daemon define tomcat_daemon_config() { exec { "./configure > puppet-config.out": path => "/bin:/usr/bin:.", cwd => "${tomcatDaemonSrcDir}/unix", creates => "${tomcatDaemonSrcDir}/unix/puppet-config.out", } } tomcat_daemon_config { name3: require => Tomcat_daemon_expand["name2"], } # 6) Compile daemon define tomcat_daemon_compile() { exec { "make clean && make": path => "/bin:/usr/bin:.", cwd => "${tomcatDaemonSrcDir}/unix", creates => "${tomcatDaemonSrcDir}/unix/jsvc", } } tomcat_daemon_compile { name4: require => Tomcat_daemon_config["name3"], } # 7) Copy jsvc to bin directory file { "${tomcatBinDir}/jsvc": source => "${tomcatDaemonSrcDir}/unix/jsvc", require => Tomcat_daemon_compile["name4"], } } 

这种风格好吗?

另一件事…因为这是做一个任务解压缩代码的东西,是否有一个很好的方法来清理,而仍然保持通过步骤的stream程? 例如,在jsvc被复制到bin后删除commons-daemon-1.0.2-native-src目录?

它看起来也是“程序性的”,国际海事组织。 你必须以“陈述”的方式思考。 我个人只是从这些tarball创build.rpm或.deb的,并指定另一个回购使用,所以你所要做的就是这样的:

  class tomcat { Package { "tomcat": ensure => installed, } File { "/etc/init.d/tomcat": source => "puppet:///tomcat/tomcat.initd", } } 

这些多重定义似乎也是不必要的,我会只用直接的Exec子句,但为每个Exectypes别名。

例:

  Exec { "/bin/tar xzf /root/tomcat6.tgz": name => "tomcat-extract", <rest of content here> } ... File { "${tomcatDir}": ... require => Exec["tomcat-extract"], ... } 

为了未来的访问者重访一个非常古老的线程 – 你可以从http://www.jpackage.org/获得tomcat6的RPM,并从它们(从回购镜像直接或通过你自己的本地回购)直接安装&#x3002;

不知道是什么情况,但实验室。