📜  ansible 仅在安装时禁用服务 - Shell-Bash (1)

📅  最后修改于: 2023-12-03 14:39:15.116000             🧑  作者: Mango

Ansible 仅在安装时禁用服务 - Shell/Bash

当我们使用 Ansible 进行模块化的服务器管理时,有时候需要在安装软件包时临时禁用某些服务以避免不必要的问题。在这篇文章中,我们将介绍如何通过 Ansible 在安装软件包时临时禁用服务。

使用 Ansible 的 Shell/Bash 模块

要在 Ansible 中使用 Shell/Bash 模块,我们可以使用以下示例:

- name: 禁用服务
  become: yes
  shell: |
    systemctl disable sshd.service
    systemctl stop sshd.service

在上面的 Ansible 代码片段中,我们使用了 shell 模块来执行 Shell 命令 systemctl disable sshd.service 以及 systemctl stop sshd.service 来禁用 sshd 服务。我们还使用 become 参数来更改用户身份以获取与 root 用户相同的权限。

创建变量文件以定义需要禁用的服务

如果您需要在多个任务中禁用服务,则最好将需要禁用的服务列表存储在 Ansible 变量文件中。例如,我们可以创建一个名为 disabled_services.yml 的文件,其中包含以下内容:

disabled_services:
  - sshd
  - httpd

然后,在 Ansible 任务中,我们可以使用以下示例代码片段从变量文件 disabled_services.yml 中获取列表并执行相应的命令:

- name: 从变量文件中获取需要禁用的服务列表
  include_vars:
    file: disabled_services.yml
    name: disabled_services

- name: 临时禁用服务
  become: yes
  shell: |
    {% for svc in disabled_services.disabled_services %}
    systemctl disable {{svc}}.service
    systemctl stop {{svc}}.service
    {% endfor %}

在上面的代码块中,我们使用 include_vars 模块来从变量文件中获取要禁用的服务列表,并将其存储在一个名为 disabled_services 的变量中。然后,我们使用 for 循环遍历 disabled_services 变量中的每个服务名,并使用 systemctl disablesystemctl stop 命令来禁用它们。

总结

本文中,我们介绍了如何使用 Ansible Shell/Bash 模块在安装软件包时临时禁用服务。我们还演示了如何使用 Ansible 变量文件存储要禁用的服务列表。如果您想要进一步探索 Ansible 的丰富功能,请访问 Ansible 的官方文档。