2015-09-25 22 views
0

我们有一个在Ubuntu上运行的java web应用程序(war),这对于a)安装程序和b)安装更新非常耗时。我们想将它自动化,但是我们不知道rpm包能做什么和配置工具如puppet/chef/salt等可以/应该做什么之间的界限。我们没有资源去尝试一切。rpm/deb或puppet/chef/salt - 从哪里开始为应用程序安装脚本?

有两台服务器要配置一次 - 一个用mysql,另一个用tomcat & java。每个都需要编辑配置文件(my.cnf,server.xml)以及其他安装的东西(如sendmail),为我们的应用程序创建一个用户,在〜/ .grails中添加一个配置文件以及特定于环境的设置。据推测,这只能通过木偶或手工完成,而不能使用rpm脚本。其次,我们的应用程序有许多步骤可以完成。我们即将尝试学习&使用rpm,但我们不确定这是否是正确的方法。

这是我们做什么来安装我们的应用程序:

  1. wget的liquibase并在我们的系统中的用户主目录解压。
  2. 复制我们的战争和liquibase文件焦油。
  3. 创建一个脚本来针对mysql服务器运行liquibase,并用该环境使用的任何内容替换IP/DB名称。
  4. stop tomcat。
  5. 运行脚本以更新数据库模式。
  6. 将战争放入webapps目录。
  7. 启动tomcat。
  8. 检查日志文件是否有错误。

问题是我们不知道如何获得rpm知道像mysql服务器ip地址这样的东西,除非应该使用环境变量?或者我们不应该使用rmp,只是使用puppet来做所有事情?

的问题是,究竟是为了什么应该RPM做的方针,又该外面做,在

一个方面。最初的服务器配置有诸如mysl,tomcat和系统用户之类的东西,以及

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

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

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

+0

这是几个问题 - 分离它会得到更多有用的答案。 –

回答

1

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

我是一个傀儡用户,但我认识到,在像您这样的情况下,为2台服务器启动并运行基础架构(对于厨师和盐来说也是如此)有点矫枉过正。

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

2

在RPM(或DEB)应该去:放置在正确的位置

其他一切都应该由其他工具(手动/厨师/ ansible/puppet)完成。例如:

  • 启动和实现服务的
  • 配置的应用(甚至升级CONFIGS的)
  • 创建/升级数据库架构(它可以驻留不同的机器上)
  • 检查日志文件中的错误
+0

这很清楚,正是我在找的,非常感谢 –

相关问题