1

我正在尝试创建一个安装 tomcat 的 puppet 模块。我得到了其他一切工作,模块下载 tomcat tar,解压缩它,删除包并从模板更改设置文件。我唯一的问题是它不会自动启动tomcat。如何将其设置为“sudo sh startup.sh”?

我尝试使用 command => "sudo sh startup.sh" ,但我认为问题在于它不能使用 sudo。有没有办法绕过那个或其他解决方案来启动 tomcat?

4

1 回答 1

2

我建议你安装一个服务脚本而不是声明一个 exec 来启动应用程序服务器。
通过这种方式,您可以依赖service资源类型的特性,它负责检查服务的状态并确保它符合预期。您可以在此处
找到一个示例脚本,该示例脚本可以放在templates/您的模块目录中。tomcat.erb

基本上,您接下来要做的就是声明一个file, exec,service资源三元组,如下所示(基于 RedHat 的操作系统的示例,除chkconfig部分外与 Debian/Ubuntu 类似):

file { '/etc/init.d/tomcat':
  ensure => present,
  content => template('tomcat/tomcat.erb'),
  mode   => 'u=rwx,og=rw',
  user   => 'root',
  group  => 'root',
  notify  => Exec['add_tomcat_service'],
}

exec {'add_tomcat_service':
  command   => '/sbin/chkconfig --add tomcat',
  path      => ['/bin', '/sbin', '/usr/bin', '/usr/sbin'],
  onlyif    =>  "test `/sbin/chkconfig --list | /bin/grep tomcat | /usr/bin/wc -l` -eq 0",
  before    => Service['tomcat'],
}

service { 'tomcat':
  ensure  => started,
  hasstatus => true,
  hasrestart => true,
}
于 2013-05-16T10:43:20.477 回答