如何让ansible或傀儡处理以下用例:
安装了一个应用程序released 1及其版本1的配置变量,随后released 2以不同的配置变量集发布(即应用程序可能在/etc下从其文件中添加或删除了一个变量)。我希望升级到upgrading 2,并保留upgrading 1中的旧配置。我还希望在以后的某个日期将其恢复到升级到upgrading 2之前的配置状态。
您将如何使用Ansible或Puppet来确保这一点?
发布于 2015-06-17 15:25:38
您的问题可能会被标记为过于宽泛,因为有许多潜在的答案/方法,它将在很大程度上取决于许多其他问题,例如:
在最基本的层次上,如果您依赖于维护良好的包,那么只使用适当的包管理器就足够了。如果您要做的事情超过这一点,那么您将不得不根据您自己的喜好定制事物。对于如何做这类事情,没有单一的错误或正确的答案,仅仅是因为有许多基于您个人需求/需求的不同方法。
作为一个例子,假设您有一个依赖于配置文件/etc/service.conf的应用程序,该文件只有一个包含版本号的条目:
version: 1.2.3您可以简单地模板这个文件,并在Ansible或Puppet中指定版本号。例如,在Ansible中,您只需要一个如下所示的模板:
version: {{ version }}然后是一本像这样的剧本:
- hosts: localhost
vars:
version: 1.2.3
tasks:
- yum: name=package-{{ version }}
state=present
- template: src=service.template
dest=/etc/service.conf当然,您可能希望展开此操作,以确保删除包的其他版本,因此只存在最新版本。
如果您的环境更复杂,例如有许多需要维护的不同配置文件和/或模板不是一个可行的解决方案,那么您可能希望在更新配置文件之前实现某种类型的配置文件备份/归档。这也可以通过多种方法中的任何一种方式实现,例如:
您还可以设计一种完全独特的方法来维护多个版本的应用程序。例如,我们使用符号链接来管理第三方应用程序的多个版本以及我们自己的应用程序。我们在/deploy/software/httpd-2.2.21、/deploy/software/httpd-2.4.0等位置构建和安装不同版本的Apache,并有一个名为/deploy/software/httpd的符号链接,指向我们目前想要运行的版本。所有特定于版本的配置文件等都保留在特定于版本的目录中,因此切换版本就像关闭Apache、更改符号链接和重新启动Apache一样简单。
https://stackoverflow.com/questions/30886771
复制相似问题