我们在Ubuntu上运行了一个java web应用程序(war),这对于a)设置和b)安装更新来说非常耗时。我们希望自动化它,但我们不知道rpm包可以做什么之间的界限,以及配置工具如puppet / chef / salt等可以/应该做什么。我们没有足够的资源来尝试一切。
有两个服务器可以配置一次 - 一个使用mysql,另一个使用tomcat& java的。每个都需要编辑配置文件(my.cnf,server.xml),以及安装的其他东西(例如sendmail),为我们的应用创建用户,在〜/ .grails中添加具有环境特定设置的配置文件。据推测,这只能通过木偶或手工制作,而不是使用rpm脚本。
其次,我们的应用程序需要执行许多步骤。我们即将尝试学习&使用rpm,但我们不确定这是否是正确的方法。
这是我们安装应用程序的方法:
问题是我们不知道如何让rpm知道mysql服务器的ip地址,除非你应该使用环境变量?或者我们不应该使用rmp,只需使用puppet来做所有事情吗?
问题是,对于应该用RPM做什么的准则是什么,以及应该在其之外做什么,
一个。初始服务器配置,包括mysl,tomcat和系统用户,以及
湾安装我们的应用程序的更新(这通常只是一个新的战争和必须执行的新的liquibase更改日志),但偶尔可能需要更改配置文件。
两者都可以移动文件,并运行脚本。
我们的应用程序没有编译源,它独立于任何架构(只需要java)
答案 0 :(得分:2)
在RPM(或DEB)中应该:
其他一切都应该通过其他工具(手动/厨师/ ansible / puppet)完成。 E.g:
答案 1 :(得分:1)
鉴于你的情况,我不相信通过RPM做一切都是要走的路。 当然,您可以使用它来部署应用程序二进制文件(现在它很容易打包,如果您不了解它,请查看FPM https://github.com/jordansissel/fpm)。 但最重要的是,您需要一个配置管理系统,它可以更改文件中的配置,并可选择在文件更改时执行命令(如重新启动服务或自定义命令)。
我是一个傀儡用户,但我认识到,在像你这样的情况下,为两台服务器启动和运行基础架构有点过分(厨师和盐也是如此)。 / p>
你可以看一下ansible(http://docs.ansible.com)。它是一个可以安装包,管理配置文件和执行命令的编排工具。最重要的是:它不需要任何基础设施,您可以通过ssh从工作站/笔记本电脑上运行它。 它非常强大且易于入手。