首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用ansible或傀儡的应用程序回滚

使用ansible或傀儡的应用程序回滚
EN

Stack Overflow用户
提问于 2015-06-17 08:54:14
回答 1查看 1.7K关注 0票数 1

如何让ansible或傀儡处理以下用例:

安装了一个应用程序released 1及其版本1的配置变量,随后released 2以不同的配置变量集发布(即应用程序可能在/etc下从其文件中添加或删除了一个变量)。我希望升级到upgrading 2,并保留upgrading 1中的旧配置。我还希望在以后的某个日期将其恢复到升级到upgrading 2之前的配置状态。

您将如何使用Ansible或Puppet来确保这一点?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-06-17 15:25:38

您的问题可能会被标记为过于宽泛,因为有许多潜在的答案/方法,它将在很大程度上取决于许多其他问题,例如:

  • 您是使用包管理器(rpm、apt等)还是手动安装应用程序、使用gnu或其他什么?
  • 究竟涉及到什么样的配置文件,有多少个,它们位于哪里,等等?

在最基本的层次上,如果您依赖于维护良好的包,那么只使用适当的包管理器就足够了。如果您要做的事情超过这一点,那么您将不得不根据您自己的喜好定制事物。对于如何做这类事情,没有单一的错误或正确的答案,仅仅是因为有许多基于您个人需求/需求的不同方法。

作为一个例子,假设您有一个依赖于配置文件/etc/service.conf的应用程序,该文件只有一个包含版本号的条目:

代码语言:javascript
复制
version: 1.2.3

您可以简单地模板这个文件,并在Ansible或Puppet中指定版本号。例如,在Ansible中,您只需要一个如下所示的模板:

代码语言:javascript
复制
version: {{ version }}

然后是一本像这样的剧本:

代码语言:javascript
复制
- hosts: localhost
  vars:
    version: 1.2.3
  tasks:
    - yum: name=package-{{ version }}
           state=present

    - template: src=service.template
                dest=/etc/service.conf

当然,您可能希望展开此操作,以确保删除包的其他版本,因此只存在最新版本。

如果您的环境更复杂,例如有许多需要维护的不同配置文件和/或模板不是一个可行的解决方案,那么您可能希望在更新配置文件之前实现某种类型的配置文件备份/归档。这也可以通过多种方法中的任何一种方式实现,例如:

  • 使用Ansible 获取模块从目标服务器获取配置文件
  • 只需调用tar、cp或类似的东西,对目标服务器上的文件进行备份。

您还可以设计一种完全独特的方法来维护多个版本的应用程序。例如,我们使用符号链接来管理第三方应用程序的多个版本以及我们自己的应用程序。我们在/deploy/software/httpd-2.2.21/deploy/software/httpd-2.4.0等位置构建和安装不同版本的Apache,并有一个名为/deploy/software/httpd的符号链接,指向我们目前想要运行的版本。所有特定于版本的配置文件等都保留在特定于版本的目录中,因此切换版本就像关闭Apache、更改符号链接和重新启动Apache一样简单。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30886771

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档