从本质上讲,我想问的问题与Solaris 10上软件包部署的自动化有关。
具体来说,我在tar文件中有一组软件组件,它们在主机环境中提取和configuration后作为后台进程运行。 非常像任何服务器端软件包,我需要确保在提取和运行软件之前满足先决条件列表。 例如:
检查某些用户是否存在,并与一个或多个用户组相关联。 如果没有,那么创build他们和他们的团体协会。
检查目标应用程序文件夹是否存在,如果不存在,则使用在组装软件包时定义的预configurationpath值来创build它们。
检查这些文件夹是否具有适当的访问控制级别和某个用户的所有权。 如果没有,然后设置它们。
检查/ etc / profile中定义的一组环境variables,指向预定义的path位置,添加到常规的$ PATH环境variables,并最终导出到用户环境中。 其他文件包括/ etc / services和/ etc / system。
显然,手动操作多个框(有问题的目标)可能会很慢且容易出错。
我相信一个更好的select是以某种方式自动化这个过程。 到目前为止,我已经考虑了以下选项,并由于某种原因而丢弃它们。
1)传统的shell脚本。 我以前只解决了这些问题,而且我也没有太多的经验。 这将是我最后的手段。
2)使用pexpect库来分析系统命令输出的Python脚本。 这是我的最初select,因为目标Solaris环境已经安装了它。 不过,我想确保我不再重新发明轮子:P。
3)Ant或Gradle脚本。 他们可能是一个选项,因为盒子也启用了Java 1.5,文件集抽象可以是非常有用的。 但是,在处理用户和文件夹权限检查/设置时可能会失败。
在我看来很明显,我不是这种情况下的第一人,但我似乎没有find适合这个目的的实用框架。 请让我知道是否有更好的方法来实现这一点。
我感谢你的时间和帮助。
你可能想要使用这个变化自动化。 例如木偶,厨师,cfengine,bcm2,或其他。
就我个人而言,过去三年我在Solaris上使用过Puppet,对这个决定感到非常满意。 我们用它来pipe理我们的系统pipe理的各个方面:用户,文件,cron作业,ZFS文件系统,NFS挂载,区域,服务(通过SMF)等等。 这非常有用。
Puppet SRV4软件包提供者的工作,但它缺乏拉远程文件(例如,通过HTTP)的能力。 你可以通过编写一个为你安装你的包的函数来解决这个问题。 如果软件包是本地可用的(通过NFS),提供者应该正常工作。
除了Solaris 10之外,我们还使用相同的Puppet库来pipe理我们的Solaris Express和Debian Linux系统。
我写了这篇文章了一段时间,可能会有所帮助: http : //mirrorshades.net/post/196593566