提升运维效率:Ansible systemd 模块操作技巧,让你告别繁琐命令行!
Ansible
中的systemd
模块是帮助你轻松管理Linux
系统服务的好帮手。有了这个模块,你可以轻松地启动、停止或重启服务,甚至可以设置服务在开机时自动启动,大大简化了系统服务的自动化管理工作。在这篇文章中,我们将详细介绍systemd
模块的功能和使用方法,并通过一些实际案例来展示如何高效地管理你的服务。
⚓模块功能概述
systemd
模块主要功能如下:
- 启动服务
- 停止服务
- 重启服务
- 重新加载服务
- 检查服务状态
- 设置服务开机自启
- 禁用服务开机自启
⚓支持的参数
以下是常用的参数:
参数 | 描述 |
---|---|
name | 指定需要管理的服务名称 |
state | 服务的期望状态,可选值:started 、stopped 、restarted 、reloaded |
enabled | 是否设置服务开机自启,可选值:yes 、no |
daemon_reload | 是否在操作前重新加载systemd 守护进程配置 |
masked | 是否屏蔽服务,阻止其启动 |
scope | 指定服务的作用域,通常用于在容器环境中管理服务。 |
⚓实际案例演示
下面通过几个实际案例,演示如何使用systemd
模块管理服务。
🍀启动服务并设置开机自启
场景:确保 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
会进行相应操作。
🍀停止服务并禁用开机自启
场景:停止 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
表示服务不允许开机自启。
🍀重启服务并重新加载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
强制重启服务,无论服务是否已运行。
🍀检查服务状态并触发处理
场景:检查 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
不仅启动服务,还会检查当前服务状态,如果已经运行,则不重复操作。
🍀屏蔽服务
场景:为了防止某些不必要的服务启动,可以屏蔽服务(如 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
模块,可以大大简化对系统服务的管理工作。无论是启动、停止、设置开机自启,还是屏蔽服务,该模块都能高效完成。结合实际案例操作,不仅提升了自动化能力,还能减少人为操作失误。
推荐阅读
- Ansible fetch模块详解:轻松从远程主机抓取文件
- 告别手动编辑:如何用Python快速创建Ansible hosts文件?
- 一分钟学会Ansible cron模块,高效管理你的定时任务
- 打造更安全的Linux系统:玩转PAM配置文件
- Ansible实战:如何正确选择command和shell模块?
- 运维效率倍增!Ansible Copy 模块必知必会操作
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 攻城狮小林
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果