rpm / deb或puppet / chef / salt - 从哪里开始为应用程序安装脚本?

时间:2015-09-25 11:43:34

标签: tomcat puppet rpm

我们在Ubuntu上运行了一个java web应用程序(war),这对于a)设置和b)安装更新来说非常耗时。我们希望自动化它,但我们不知道rpm包可以做什么之间的界限,以及配置工具如puppet / chef / salt等可以/应该做什么。我们没有足够的资源来尝试一切。

有两个服务器可以配置一次 - 一个使用mysql,另一个使用tomcat& java的。每个都需要编辑配置文件(my.cnf,server.xml),以及安装的其他东西(例如sendmail),为我们的应用创建用户,在〜/ .grails中添加具有环境特定设置的配置文件。据推测,这只能通过木偶或手工制作,而不是使用rpm脚本。

其次,我们的应用程序需要执行许多步骤。我们即将尝试学习&使用rpm,但我们不确定这是否是正确的方法。

这是我们安装应用程序的方法:

  1. wget liquibase并在我们的系统用户home dir中解压缩。
  2. 复制我们的war和liquibase文件tar。
  3. 创建一个脚本以针对mysql服务器运行liquibase,并将IP / DB名称替换为该环境使用的任何名称。
  4. 停止tomcat。
  5. 运行脚本以更新数据库架构。
  6. 将战争放入webapps目录。
  7. 启动tomcat。
  8. 检查日志文件是否有错误。
  9. 问题是我们不知道如何让rpm知道mysql服务器的ip地址,除非你应该使用环境变量?或者我们不应该使用rmp,只需使用puppet来做所有事情吗?

    问题是,对于应该用RPM做什么的准则是什么,以及应该在其之外做什么,

    一个。初始服务器配置,包括mysl,tomcat和系统用户,以及

    湾安装我们的应用程序的更新(这通常只是一个新的战争和必须执行的新的liquibase更改日志),但偶尔可能需要更改配置文件。

    两者都可以移动文件,并运行脚本。

    我们的应用程序没有编译源,它独立于任何架构(只需要java)

2 个答案:

答案 0 :(得分:2)

在RPM(或DEB)中应该:

其他一切都应该通过其他工具(手动/厨师/ ansible / puppet)完成。 E.g:

  • 启动和启用服务
  • 配置应用程序(甚至升级配置)
  • 创建/升级数据库模式(它可以驻留在不同的机器上)
  • 检查日志文件是否有错误

答案 1 :(得分:1)

鉴于你的情况,我不相信通过RPM做一切都是要走的路。 当然,您可以使用它来部署应用程序二进制文件(现在它很容易打包,如果您不了解它,请查看FPM https://github.com/jordansissel/fpm)。 但最重要的是,您需要一个配置管理系统,它可以更改文件中的配置,并可选择在文件更改时执行命令(如重新启动服务或自定义命令)。

我是一个傀儡用户,但我认识到,在像你这样的情况下,为两台服务器启动和运行基础架构有点过分(厨师和盐也是如此)。 / p>

你可以看一下ansible(http://docs.ansible.com)。它是一个可以安装包,管理配置文件和执行命令的编排工具。最重要的是:它不需要任何基础设施,您可以通过ssh从工作站/笔记本电脑上运行它。 它非常强大且易于入手。