我经常在我的服务器上安装一个产品(Atlassian Confluence,这是Tomcat +几个文件)。 对于每次升级,解压缩tar.gz后,我需要更改以下文件:
有没有规范的方式来执行此configuration?
谢谢
像木偶一样的configurationpipe理工具。 厨师,厨师等是现代系统pipe理员的首选工具。
创build一个Ansible的手册来安装tar和后续的自定义。 然后针对目标主机运行该手册。
Ansible提供了易于使用的模块,用于修改文件内容,复制文件,从模板创build新文件,pipe理服务等。
我个人用它来修改例如Tomcatconfiguration文件。
我把我的configuration文件在一个Mercurial存储库(Git也会这样做),我用符号链接replace原来的configuration文件到这些文件。 这样我不必移动它们。 我使用一个小的shell脚本来维护这个符号链接,这样在升级之后,我只需要重新运行这个脚本。
让我举个例子。 假设我想对Tomcat的server.xml进行更改。
一次设置
首先,我将原始的server.xml复制到我的Mercurialconfiguration库中。 然后在我的shell脚本中,添加这些命令来删除原始的server.xml ,并将其replace为符号链接到存储库中的文件,例如:
# The location of my Mercurial config repository CONFIG=/home/admin/config rm -f /etc/tomcat7/server.xml ln -s $CONFIG/tomcat/server.xml /etc/tomcat7/server.xml
接下来,我第一次运行脚本,testing它并创build符号链接。 我调用setupLinks.sh脚本,它位于我的Mercurial存储库的根目录下。
sudo /home/admin/config/setupLinks.sh
升级后
升级之后,我只需要重新运行setupLinks.sh来replace任何被覆盖的符号链接。 而已。
我发现把我的configuration文件放在源代码库中非常有用。 这样我可以跟踪更改并从上游存储库中提取新的configuration。 我使用命名分支环境特定的configuration,例如我有一个dev分支和prod分支。
我没有提到任何有关移动jar文件的内容,但是可以通过在shell脚本中添加几行来轻松完成。 您也可以创build符号链接到jar文件。
使用dist-trick
为了避免覆盖你的configuration文件,你可以使用“dist-trick”:使用* .dist文件(例如config.xml.dist)作为发行版的默认configuration文件。 “dist”代表分配文件。 然后将这个.dist文件复制到不是分布的一部分的非dist文件(config.xml)。 而且,你的configuration文件不会再被覆盖。 例如,当使用git,ftp,scp或任何其他机制将文件传送到生产机器时,这种方式非常有效。
dist-trick有助于避免在部署文件后重新设置或恢复事物。