提升运维效率:Ansible systemd 模块操作技巧,让你告别繁琐命令行!

网络 Linux
在这篇文章中,我们将详细介绍systemd模块的功能和使用方法,并通过一些实际案例来展示如何高效地管理你的服务。

Ansible中的systemd模块是帮助你轻松管理Linux系统服务的好帮手。有了这个模块,你可以轻松地启动、停止或重启服务,甚至可以设置服务在开机时自动启动,大大简化了系统服务的自动化管理工作。在这篇文章中,我们将详细介绍systemd模块的功能和使用方法,并通过一些实际案例来展示如何高效地管理你的服务。

模块功能概述

systemd 模块主要功能如下:

  • 启动服务
  • 停止服务
  • 重启服务
  • 重新加载服务
  • 检查服务状态
  • 设置服务开机自启
  • 禁用服务开机自启

支持的参数

以下是常用的参数:

参数

描述

name

指定需要管理的服务名称

state

服务的期望状态,可选值:started、stopped、restarted、reloaded

enabled

是否设置服务开机自启,可选值:yes、no

daemon_reload

是否在操作前重新加载systemd守护进程配置

masked

是否屏蔽服务,阻止其启动

scope

指定服务的作用域,通常用于在容器环境中管理服务。

实际案例演示

下面通过几个实际案例,演示如何使用systemd模块管理服务。

1. 启动服务并设置开机自启

场景:确保 nginx 服务已启动,并设置为开机自启。

ad-hoc形式:

ansible webservers -m systemd -a \
"name='nginx' state='started' enabled='yes'"

playbook形式:

- name:确保nginx服务已启动并开机自启
hosts:webservers
tasks:
    -name:启动nginx服务
      ansible.builtin.systemd:
        name:nginx
        state:started
        enabled:yes
  • state: started 表示服务必须处于运行状态。
  • enabled: yes 表示服务需要开机自启。

执行后,如果目标主机上nginx服务未启动或未设置开机自启,Ansible会进行相应操作。

2. 停止服务并禁用开机自启

场景:停止 apache2 服务,并禁用其开机自启。

  • ad-hoc形式:
ansible webservers -m systemd -a \
"name='apache2' state='stopped' enabled='no'"
  • playbook形式:
- name:停止apache2服务并禁用开机自启
hosts:webservers
tasks:
    -name:停止apache2服务
      ansible.builtin.systemd:
        name:apache2
        state:stopped
        enabled:no
  • state: stopped 表示服务必须处于停止状态。
  • enabled: no 表示服务不允许开机自启。

3. 重启服务并重新加载systemd配置

场景:在更改docker配置后,需要重新加载systemd配置并重启服务。

ad-hoc形式:

ansible docker_hosts -m systemd -a \
"name='docker' state='restarted' daemon_reload='yes'"

playbook形式:

- name:重启docker服务并重新加载systemd配置
hosts:docker_hosts
tasks:
    -name:重新加载systemd守护进程
      ansible.builtin.systemd:
        daemon_reload:yes

    -name:重启docker服务
      ansible.builtin.systemd:
        name:docker
        state:restarted

daemon_reload: yes 触发重新加载 systemd 守护进程,以应用新的服务配置。

state: restarted 强制重启服务,无论服务是否已运行。

4. 检查服务状态并触发处理

场景:检查 mysql 服务的运行状态,如果未启动,则启动服务。

  • ad-hoc形式:
ansible database_servers -m systemd -a \
"name='mysql' state='started' "
  • playbook形式:
- name:检查mysql服务状态并启动
hosts:database_servers
tasks:
    -name:检查mysql服务状态
      ansible.builtin.systemd:
        name:mysql
        state:started
  • state: started 不仅启动服务,还会检查当前服务状态,如果已经运行,则不重复操作。

5. 屏蔽服务

场景:为了防止某些不必要的服务启动,可以屏蔽服务(如 bluetooth)。

  • ad-hoc形式:
ansible database_servers -m systemd -a \
"name='bluetooth'  masked=yes "
  • playbook形式:
- name:屏蔽bluetooth服务
hosts:all
tasks:
    -name:屏蔽服务以防止启动
      ansible.builtin.systemd:
        name:bluetooth
        masked:yes
  • masked: yes 将服务屏蔽,阻止其启动,即使手动尝试启动也会失败。

总结

通过Ansible的 systemd 模块,可以大大简化对系统服务的管理工作。无论是启动、停止、设置开机自启,还是屏蔽服务,该模块都能高效完成。结合实际案例操作,不仅提升了自动化能力,还能减少人为操作失误。

责任编辑:赵宁宁 来源: 攻城狮成长日记
相关推荐

2024-03-06 15:57:56

ShellLinux

2025-01-15 12:25:23

自动化运维Ansible模块

2024-08-13 10:55:34

Linux命令行黄金法则

2020-08-09 18:06:57

Linux系统工具

2025-01-03 16:47:02

Ansible自动化运维DevOps

2022-09-13 11:50:21

Linux运维命令行

2023-11-06 16:08:24

JavaList开发

2021-03-20 21:43:17

LibreOffice命令行开源

2019-09-29 10:05:26

Linux命令行工具代码

2023-04-24 07:04:03

WindowsIT运维

2009-12-23 14:14:09

Linux高级命令行

2014-12-16 08:45:30

华为IT运维

2021-08-17 09:35:26

Linux命令Nginx

2020-04-26 15:38:28

Docker容器

2014-06-17 10:02:58

Bash Getopt命令行

2023-09-26 00:00:20

JS简写技巧

2013-09-27 17:06:01

RIIL综合运维广西大学

2024-10-11 13:17:16

Linux命令行快捷导航

2024-10-10 11:49:27

2009-11-20 09:31:47

Linux命令命令行Linux
点赞
收藏

51CTO技术栈公众号