使用ansible在nfs主机上部署nfs服务端,并在web另一组主机上挂载

部署NFS服务端

心急可以直接看剧本,剧本有注释,步骤是分解过程

hosts

[nfs]
172.16.1.56
[web]
172.16.1.51
172.16.1.52

步骤

1. 部署nfs服务端软件

对应的命令

yum install -y nfs-utils nfs-utils-lib

对应的模块

  • yum模块
    就是执行yum命令
    在这里插入图片描述

2. 修改配置文件

对应的命令

/etc/exports
/data 172.16.1.0/24(rw)

对应的模块

  • lineinfile模块
    常用于修改配置文件或其他文本文件,支持正则
    在这里插入图片描述

3. 创建对应目录权限

对应的命令

mkdir -p /data
chown nfsnobody:nfsnobody /data

对应的模块

  • file模块
    文件、目录相关的操作
    在这里插入图片描述

4. 启动服务

对应的命令
注意nfs是基于rpc的,所以需要先启动rpcbind,再启动nfs

systemctl start rpcbind
systemctl enable rpcbind
systemctl start nfs
systemctl enable nfs

对应的模块

  • systemd模块
    在这里插入图片描述

剧本

---
- name: 安装并配置NFS服务器  # 剧本的名称,描述了剧本的主要目的
 hosts: nfs  # 指定此剧本将在名为 'nfs' 的主机组上执行
 become: yes  # 提升权限,相当于在命令前加上sudo,用于执行需要管理员权限的操作
 tasks:  # 任务列表开始
   - name: 安装NFS服务器所需的软件包  # 任务描述
     yum:  # 使用yum模块安装软件包
       name:  # 指定要安装的软件包列表
         - nfs-utils  # NFS工具包
         - nfs-utils-lib  # NFS工具库
       state: installed  # 确保软件包被安装
       
   - name: 在/etc/exports文件中添加NFS共享配置(其实事先写好配置文件使用copy也可以)  # 任务描述
     lineinfile:  # 使用lineinfile模块修改文件内容
       path: /etc/exports  # 指定要修改的文件
       # 这里的 IP 地址 172.16.1.0/24 是一个网络地址,
       # 用于指定哪些客户端可以访问这个NFS共享。
       # 172.16.1.0/24:这是一个CIDR(无类别域间路由)表示法,
       # 用于描述一个IP网络而非单一的IP地址。
       # 这个特定的地址和掩码组合表示从 172.16.1.0 到 172.16.1.255 的所有IP地址。
       # 这个范围内的任何设备都被允许访问这个NFS共享。
       line: "/srv/nfs 172.16.1.0/24(rw,sync,no_root_squash,no_subtree_check)"  # 添加的行内容
       state: present  # 确保这行内容存在于文件中
       backup: yes  # 在修改前备份原文件

   - name: 创建一个用于共享的目录  # 任务描述
     file:  # 使用file模块管理文件和目录
       path: /srv/nfs  # 指定目录路径
       owner: nfsnobody  # 设置目录的所有者
       group: nfsnobody  # 设置目录的所属组
       state: directory  # 确保这是一个目录
       mode: '0777'  # 设置目录的权限

   - name: 启动rpc服务  # 任务描述
     systemd:  # 使用systemd模块管理服务
       name: rpcbind  # 指定服务名称
       state: started  # 确保服务已启动
       enabled: yes  # 确保服务在系统启动时自动启动

   - name: 启动nfs服务  # 任务描述
     systemd:  # 使用systemd模块管理服务
       name: nfs  # 指定服务名称
       state: started  # 确保服务已启动
       enabled: yes  # 确保服务在系统启动时自动启动

   - name: 应用NFS导出配置更改  # 任务描述
     command: exportfs -arv  # 使用command模块执行命令,应用NFS导出设置

   - name: 配置防火墙允许NFS流量  # 任务描述
     firewalld:  # 使用firewalld模块管理防火墙规则
       service: nfs  # 指定服务名称
       permanent: true  # 设置规则为永久
       state: enabled  # 启用规则
       immediate: yes  # 立即应用更改
   - name: 打印NFS服务器的IP地址
     debug:
       msg: "NFS服务器的IP地址是 {{ hostvars['nfs_server']['ansible_default_ipv4']['address'] }}"

检查&执行

检查:
ansible-playbook -i hosts -C xxx.yml
没问题,执行:
ansible-playbook -i hosts xxx.yml
查看是否正常开启nfs服务
showmount -e ip

在这里插入图片描述

客户端挂载NFS

其实就是把mount命令细化
mount -t nfs 172.16.1.51:/srv/nfs /mnt

步骤

1.安装NFS客户端软件包

yum install -y nfs-utils

2.创建本地挂载点

mkdir -p /data

3.挂载NFS共享

mount -t nfs 172.16.1.51:/srv/nfs /mnt

4.确保fstab文件中包含NFS挂载配置

cat /etc/fstab | grep /srv/nfs

其实就是看看配置是否生效

剧本

---
- name: 在web服务器上挂载NFS共享  # 剧本的名称,描述了剧本的主要目的
 hosts: web  # 指定此剧本将在名为 'web' 的主机组上执行
 become: yes  # 提升权限,相当于在命令前加上sudo,用于执行需要管理员权限的操作
 vars:
   nfs_server_to_mount: "{{ mount_server }}"
 tasks:  # 任务列表开始
   - name: 安装NFS客户端软件包  # 任务描述
     yum:  # 使用yum模块安装软件包
       name:  # 指定要安装的软件包列表
         - nfs-utils  # NFS工具包
       state: installed  # 确保软件包被安装

   - name: 创建本地挂载点  # 任务描述
     file:  # 使用file模块管理文件和目录
       path: /mnt  # 指定目录路径
       state: directory  # 确保这是一个目录

   - name: 挂载NFS共享  # 任务描述
     mount:  # 使用mount模块挂载文件系统
       path: /mnt/nfs_share  # 指定挂载点的路径
       src: "{{ nfs_server_to_mount }}:/srv/nfs"  # 指定NFS服务器的共享路径
       fstype: nfs  # 文件系统类型为NFS
       opts: defaults  # 使用默认挂载选项
       state: mounted  # 确保文件系统已挂载

   - name: 确保fstab文件中包含NFS挂载配置  # 任务描述
     lineinfile:  # 使用lineinfile模块修改文件内容
       path: /etc/fstab  # 指定要修改的文件
       line: "{{ nfs_server_to_mount }}:/srv/nfs /mnt nfs defaults 0 0"  # 添加的行内容
       state: present  # 确保这行内容存在于文件中
       backup: yes  # 在修改前备份原文件

检查&执行

检查:
ansible-playbook -i hosts -C -e mount_server=172.16.1.56  xxx.yml
没问题,执行:
ansible-playbook -i hosts -e mount_server=172.16.1.56  xxx.yml

注意

在windows上编辑的yml、shell等放到linux执行之前记得要使用下面的命令去做一下转换

dos2unix xxx.yml
# 没有dos2unix可以安装一下
yum install -有dos2unix

原因是windows和linux的格式不同,使用cat -A查看会发现windows的每行结尾是^M$
而linux下的文件结尾是$

如果发现有哪里写的不对的地方还望指正

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值