首页 > 解决方案 > 使用 Ansible 关闭服务

问题描述

这可能更像是一个设计问题而不是语法问题。我有一套 Ansible 剧本,负责设置各种 systemd 服务以特定方式配置服务器。我确信这是一个非常典型的用例。但是,我的问题是:在继续安装和配置之前关闭和禁用服务的最佳方法是什么?以下是我的要求:

例如,假设我有 3 个服务器:A、B、C,我有 2 个服务要安装和配置:httpd 和 nginx。我的主机文件如下所示:

[apache]
A
C

[nginx]
B

最终结果应该是 httpd 在服务器 A 和 C 上运行(并且在 B 上关闭/禁用),Nginx 在 B 上运行(并且在 A 和 C 上关闭/禁用)。

我对可能的解决方案的初步想法是:

  1. 为运行每个卸载创建单独的剧本(因为我已经有安装剧本)(这可能是正确的,但肯定有很多代码重复和更多工作)
  2. 在现有安装角色中的 main.yml 文件旁边创建一些附加任务(这可能吗?如果是的话,这感觉是对的。)
  3. 可以在运行任何安装 playbook 之前直接调用的主卸载 playbook。(这感觉不对)

标签: ansible

解决方案


我的第一个想法是“是的,应该因为低质量而关闭”。

尝试从您的情况中删除样板文件以使其更易于理解,并且您可能会找到答案。

提示:我没有看到任何定义您的托管服务器的组,我怀疑您是否想使用“全部”。

关键是使用子组成员资格来确定需要删除或安装的内容。一本剧本就可以解决问题。


推荐阅读