自动化运维工程师之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 服务名的兼容性问题。
相关推荐
酷可达拉斯20 分钟前
自动化运维-从零开始编写ansible剧本(二)
linux·运维·服务器·centos·自动化
A-刘晨阳23 分钟前
Kubernetes 非共享存储详解:emptyDir 与 hostPath 从入门到实践
运维·云原生·容器·kubernetes·hostpath·emptydir
Nomarsgo28 分钟前
联控 Lionconit PTC-1006手持工业平板电脑在野外输电线路巡检中的应用方案
运维·科技·自动化·汽车·电脑
瀚高PG实验室1 小时前
几种因网络波动导致应用与数据库操作异常的现象
运维·网络·数据库·postgresql·瀚高数据库
风曦Kisaki1 小时前
# Kubernetes(K8s)笔记Day15:K8s网络工作原理【Pod 网络模型,CNI 网络插件,Calico 工作模式详解,BGP协议,路由反射器】
运维·网络·nginx·云原生·容器·kubernetes
allforgood1 小时前
管理 SELinux 安全性
linux·运维·网络
飞飞传输1 小时前
海关行业FTP传输服务器评测:传统FTP与现代化替代方案对比
大数据·运维·安全
闲猫1 小时前
docker compose 命令
运维·docker·容器
.柒宇.1 小时前
运维常见面试题_02_数据库
运维·数据库·sql·面试
九硕智慧建筑一体化厂家2 小时前
从光伏板到护眼灯,直流照明如何重构绿色校园的能源基因
运维·人工智能·重构·智慧城市·能源