自动化运维工程师之ansible启动rpcbind和nfs服务

通过 systemd 模块分别启动 rpcbindnfs 服务,并设置它们为开机自启,是 NFS 服务部署中启动相关服务的典型配置。下面我会逐部分解析代码的含义、作用以及关键细节。

一、代码整体功能总结

这段代码包含两个独立的 systemd 模块任务,依次完成:

  1. 启动 rpcbind 服务,同时设置该服务开机自动启动;
  2. 启动 nfs 服务,同时设置该服务开机自动启动。

二、逐行代码解释

第一个任务:启动并启用 rpcbind 服务
yaml 复制代码
- name: 启动服务rpcbind,nfs  # 任务名称(可自定义,执行时会显示该名称)
  systemd:  # 调用 Ansible 的 systemd 模块(用于管理 systemd 服务)
    name: rpcbind  # 指定要管理的服务名称为 rpcbind
    enabled: true  # 设置服务为开机自启(等同于 systemctl enable rpcbind)
    state: started  # 确保服务处于运行状态(等同于 systemctl start rpcbind)
  • rpcbind 服务的作用rpcbind 是 NFS 服务的依赖服务,负责映射 RPC(远程过程调用)端口,NFS 服务必须依赖 rpcbind 才能正常工作,因此需要先启动 rpcbind
  • 参数说明
    • name: rpcbind:明确要操作的服务是 rpcbind(系统中实际的服务名可能是 rpcbind.service,写 rpcbind 即可,Ansible 会自动识别);
    • enabled: true:幂等性配置,无论执行多少次,都会保证服务是开机自启状态(已开启则跳过,未开启则执行启用操作);
    • state: started:幂等性配置,保证服务处于运行状态(已启动则跳过,未启动则执行启动操作)。
第二个任务:启动并启用 nfs 服务
yaml 复制代码
- name: 启动服务nfs  # 任务名称(区分于上一个任务,更清晰)
  systemd:
    name: nfs  # 指定要管理的服务名称为 nfs
    enabled: true  # 设置 nfs 服务开机自启
    state: started  # 确保 nfs 服务处于运行状态
  • nfs 服务的注意点 :在不同的 Linux 发行版中,NFS 服务的实际名称可能不同(比如 CentOS 7+/RHEL 7+ 中是 nfs-server.service,部分系统简写为 nfs 也能识别)。如果直接写 nfs 报错,可改为 nfs-server
  • 参数作用 :和 rpcbind 任务的参数含义完全一致,都是保证服务运行+开机自启。

三、关键特性与优化建议

1. 幂等性保障(Ansible 核心特性)

这两个任务都是幂等的

  • 第一次执行:rpcbindnfs 服务会被启动,同时设置开机自启(changed: true);
  • 重复执行:Ansible 会检查服务状态,若已启动且开机自启,则直接跳过(ok: true),不会产生重复操作。
2. 可优化的点(简化代码,提升效率)

你当前的代码是两个独立任务,可合并为一个任务管理多个服务(systemd 模块支持列表形式的服务名),简化代码:

yaml 复制代码
- name: 启动并启用 rpcbind 和 nfs 服务
  systemd:
    name: "{{ item }}"  # 循环遍历服务名
    enabled: true
    state: started
  loop:  # 循环模块,依次处理每个服务
    - rpcbind
    - nfs  # 若系统中是 nfs-server,改为 nfs-server 即可

这样修改后,功能和原来完全一致,但代码更简洁,尤其是需要管理多个服务时,优势更明显。

3. 服务名的兼容性处理

如果执行时出现 nfs 服务找不到的错误,可先在被控端执行 systemctl list-unit-files | grep nfs 查看实际服务名,然后修改 name 参数:

  • 比如实际服务名是 nfs-server,则将 name: nfs 改为 name: nfs-server

四、执行效果验证

执行完这段 Playbook 后,可通过以下 Ansible 命令验证服务状态:

bash 复制代码
# 验证 rpcbind 服务状态
ansible 目标主机 -m systemd -a 'name=rpcbind' --become

# 验证 nfs 服务状态(若为 nfs-server 则替换名称)
ansible 目标主机 -m systemd -a 'name=nfs' --become

输出中会显示 active (running)(运行中)和 enabled(开机自启),表示配置生效。

总结

  1. 这段代码通过 Ansible 的 systemd 模块分别管理 rpcbindnfs 服务,实现启动服务+开机自启的核心功能;
  2. enabled: true 保证开机自启,state: started 保证服务运行,二者结合实现了服务的可靠配置;
  3. 可通过 loop 循环简化代码,同时注意不同系统中 nfs 服务名的兼容性问题。
相关推荐
Andy Dennis20 分钟前
FTP局域网功能小网站V2_2
服务器·flask·html5
MMME~24 分钟前
Ansible模块速查指南:高效定位与实战技巧
大数据·运维·数据库
zhengfei61126 分钟前
AutoPentestX – Linux 自动化渗透测试和漏洞报告工具
linux·运维·自动化
我材不敲代码26 分钟前
在Linux系统上安装MySQL
linux·运维·服务器
obboda37 分钟前
CICD 部署与使用
运维
yuezhilangniao43 分钟前
阿里云服务器Alibaba Cloud Linux 3 安装Python3.11简明指南
linux·运维·python3.11
珠海西格1 小时前
远动通信装置为何是电网安全运行的“神经中枢”?
大数据·服务器·网络·数据库·分布式·安全·区块链
小宇的天下1 小时前
Calibre 3Dstack --每日一个命令day18【floating_trace】(3-18)
服务器·前端·数据库
程序 代码狂人1 小时前
CentOS7初始化配置操作
linux·运维·开发语言·php
lcx_defender1 小时前
【Docker】Docker部署运行nacos
运维·docker·容器