第1章 NFS介绍
1.1 NFS的概念
NFS是Network File System的缩写,即网络文件系统,它的主要功能是通过网络(一般是局域网)让不同的主机系统之间可以共享文件或目录。NFS客户端(一般为应用服务器如web)可以通过mount挂载的方式将NFS服务器端共享的数据目录挂载到NFS客户端本地系统中(就是某一个挂载点下)
1.2 NFS在企业中的应用场景
在企业集群架构的工作场景中,NFS网络文件系统一般被用来存储共享视频、图片、附件等静态资源文件,通常网站用户上传的文件都会放到NFS共享里,然后前端所有的节点访问这些静态资源时都会读取NFS存储上的资源
1.2.1 NFS文件系统存在的作用
01. 实现数据信息的共享
02. 实现数据信息的一致
1.2.2 共享存储的实现方式
1.硬件实现共享存储
IBM(服务器 小型机 大型机 存储 DS V7000 V5000) Oracle EMC ==>去IOE
2.软件实现共享存储
本地文件系统NFS 分布式文件系统mfs FTP samba
说明:互联网领域发展过程详细了解(浪潮之巅)
1.3 NFS共享系统原理
01. 在NFS服务器端创建一个共享目录/video
02. 通过mount网络挂载,将这个共享目录/video挂载到客户端本地挂载点(不同客户端的挂载点可以不相同)
03. 客户端挂载完毕后,进入NFS客户端挂载点所在的目录就可以看到NFS服务器端/video共享出来的目录下的所有数据。在客户端的挂载目录上进行创建/删除/查看数据操作时,就相当于在服务器进行的创建/删除/查看操作
显示本地共享服务器挂载的基本信息
1 [root@nfs01 ~]# df -h 2 3 Filesystem Size Used Avail Use% Mounted on 4 5 /dev/sda3 6.9G 1.6G 5.0G 24% / 6 7 tmpfs 491M 0 491M 0% /dev/shm 8 9 /dev/sda1 190M 33M 147M 19% /boot 10 11 172.16.1.31:/data 6.9G 1.6G 5.0G 24% /mnt #使用率到达99%时扩容对端NFS
说明:mount -t 指定挂载类型 源 目标
mount -t nfs 172.16.1.31:/data /mnt
1.4 RPC远程过程调用
1.4.2 NFS工作流程原理
1.4.2.1 服务端三部曲
01.启动RPC服务/etc/init.d/rpcbind start
02.启动NFS服务/etc/init.d/nfs start
03.NFS服务会向RPC服务注册启动的端口信息(只能注册一次,要想注册第二次要重启NFS服务)
1.4.2.2 客户端三部曲
01.启动RPC服务/etc/init.d/rpcbind start,通过TCP/IP和服务端的RPC服务建立连接
02.通过mount进行挂载,将远程磁盘目录挂载到本地
03.通过客户端RPC服务向服务端RPC服务请求NFS服务端口信息,根据不同的进程和端口进行应用NFS服务
1.5 NFS服务网络文件共享RPC服务
由于NFS支持的功能很多,当NFS启动时会出现多个进程,网络服务又会自动生成一些随机的端口信息。NFS的随机端口造成了客户端与服务端的通信障碍,因为NFS客户端必须要知道NFS服务器端的数据传输端口才能进行通信,这时就生成了RPC远程调用服务
当RPC启动时会记录每个NFS功能所对应的端口信息,由RPC服务提供用户访问,并且在NFS客户端请求时将该端口和功能对应的信息传递给请求数据的NFS客户端,从而确保客户端可以连接到正确的NFS端口,达到实现数据传输交互数据目的
第2章 NFS服务器端部署环境准备
2.1 NFS服务端部署
服务器系统 |
角色 |
IP |
Centos6.9x86_64 |
NFS客户端(web-client) |
10.0.0.7 |
Centos6.9x86_64 |
NFS服务器端(nfs-server) |
10.0.0.8 |
Centos6.9x86_64 |
NFS客户端(web-client) |
10.0.0.9 |
2.1.1 centos6.x x86_64模拟环境信息
NFS服务器端操作系统信息及内核版本信息
1 [root@nfs01 ~]# cat /etc/redhat-release 2 3 CentOS release 6.9 (Final) 4 5 [root@nfs01 ~]# uname -r 6 7 2.6.32-696.el6.x86_64 8 9 [root@nfs01 ~]# uname -m 10 11 x86_64
NFS客户端操作系统信息及内核版本信息如下:
1 [root@web01 ~]# cat /etc/redhat-release 2 3 CentOS release 6.9 (Final) 4 5 [root@web01 ~]# uname -r 6 7 2.6.32-696.el6.x86_64 8 9 [root@web01 ~]# uname -m 10 11 x86_64
2.1.2 检查NFS RPC服务软件是否安装
1 rpm -qa |grep nfs 2 3 rpm -qa |grep rpc
说明:当不知道软件名字时候,可以用rpm -qa|grep -E "nfs-|rpcbind"来过滤包含在引号内的字符串;默认centos6.x系统没有安装nfs和rpc软件包(centos5默认会安装)
2.1.3 进行yum安装nfs与rpc服务软件
注意:这里安装的rpc软件是rpcbind,centos5.x安装portmap
1 yum install -y nfs-utils rpcbind
查看已安装的软件包里的内容
1 [root@nfs01 ~]# rpm -ql nfs-utils 2 3 /etc/rc.d/init.d/nfs #启动脚本命令 4 5 /usr/sbin/exportfs #NFS共享服务的管理命令 6 7 /usr/sbin/showmount #查看NFS共享列表信息 8 9 [root@nfs01 ~]# rpm -ql rpcbind 10 11 /etc/rc.d/init.d/rpcbind #启动脚本命令 12 13 /usr/sbin/rpcinfo #查看NFS注册信息
查看某个命令/文件属于哪个大礼包
1 rpm -qf `which ssh`
2.1.4 进行NFS配置文件/etc/exports编写
NFS服务的默认配置文件路径为/etc/exports且默认为空
说明:NFS默认配置文件是存在的,但是没有内容,需要用户自行配置
1 vim /etc/exports 2 3 #share /data by shine for share at 20171013 4 5 /data 172.16.1.0/24(rw,sync)
第一部分:/data <=指定共享目录信息
第二部分:172.16.1.0/24 <=指定目标网段,表示允许指定网段主机挂载到本地的共享目录上
第二部分:(rw,sync) <=定义共享服务相关参数信息
rw表示读写,对共享目录设置的权限;
sync同步,数据先写入NFS服务器内存,立刻同步到磁盘中==>即直接写入到磁盘中
说明:修改/etc/exports后,需执行/etc/init.d/nfs reload平滑重启或exportfs -rv重新加载NFS配置,不进行重启NFS
2.1.5 创建共享目录并更改权限
1 mkdir -p /data 2 3 chown -R nfsnobody.nfsnobody /data 4 5 ll -d /data
在NFS服务器端把要共享的NFS目录赋予NFS默认用户nfsnobody用户和用户组权限,如果不设置则会导致NFS客户端无法通过NFS本地共享目录权限写入;当然也可以给NFS服务器端本地共享目录777的权限,但工作中最好不要用,因为777的权限太大
说明:NFS共享目录管理用户这里为nfsnobody,服务端(个人)没有创建nfsnobody用户但仍可以赋予用户权限,是由于nfsnobody用户是在进行nfs软件的yum安装时自动创建的
2.1.6 启动NFS服务
1.首先启动rpc服务(检查状态/etc/init.d/rpcbind status)
1 /etc/init.d/rpcbind start
2.查看NFS向rpc服务注册的本地端口信息
1 ps -ef |grep rpcbind 2 3 netstat rpcbind 4 5 rpcinfo -p 10.0.0.31 #这时由于NFS还未启动,所以没有过多注册的端口映射信息
3.其次启动NFS服务
1 /etc/init.d/nfs start 2 3 rpcinfo -p 10.0.0.31 #NFS服务启动会有很多端口和功能的对应,每次启动时除了873和2049其他端口均随机
说明:如果rpcbind服务未启动,执行命令rpcinfo -p localhost检查时,会报如下错误
rpcinfo: can't contact portmapper: RPC: Remote system error - Connection refused
解决办法:执行/etc/init.d/rpcbind start启动rpcbind服务即可
2.1.7 检查NFS服务配置及本地测试挂载
测试挂载结果
1 mount -t nfs 172.16.1.31:/data /mnt #mount -t 挂载类型 要挂载的服务器:共享目录 客户端的挂载点 2 3 df -h #查看挂载后的结果 4 5 #172.16.1.31:/data 8.8G 1.7G 6.7G 20% /mnt 6 7 mount
2.2 NFS客户端部署(以下步骤均在backup和web01服务器中执行)
2.2.1 检查NFS RPC服务软件是否安装
1 rpm -qa |grep nfs 2 3 rpm -qa |grep rpcbind
2.2.2 进行yum安装nfs与rpc服务软件
1 yum install -y nfs-utils rpcbind
说明:进行同时安装的操作:在命令行界面右键→"发送键输入到所有会话"
nfs-utils和rpcbind软件安装后,均不是必须要启动的,也可以不启动。但是,软件必须要安装
如果nfs/rpc软件不安装会造成的问题:
a 客户端无法使用showmount/rpcinfo命令
b 挂载时客户端无法识别nfs/rpc文件系统类型
2.2.3 检查nfs客户端是否有可以进行共享挂载目录的包
1 rpm -qf `which showmount`
说明:showmount使用,需要安装nfs-utils软件
2.2.4 进行nfs客户端共享目录挂载
进行共享目录挂载
1 mount -t nfs 172.16.1.31:/data /mnt
说明:只要nfs服务端进行修改配置文件重新挂载,客户端也必须重新进行挂载
2.2.5 进行文件创建/删除测试检查
在备份服务器中,新建oldboy文件
1 [root@web01 ~]# touch /mnt/oldboy.txt 2 3 [root@web01 ~]# rm -f /mnt/oldboy.txt
此时,nfs和web客户端均能共享到oldboy文件
注意:客户端测试如果有异常,可以把测试过程转移到服务端,通过服务端进行测试,便可确认异常问题原因
第3章 NFS深入扩展知识
3.1 NFS服务相关进程说明
1 [root@nfs01 ~]# ps -ef |egrep "rpc|nfs" 2 3 rpc 1185 1 0 20:17 ? 00:00:00 rpcbind <-RPC主进程 4 rpcuser 1207 1 0 20:17 ? 00:00:00 rpc.statd <-检查数据存储一致性 5 root 1367 2 0 20:19 ? 00:00:00 [rpciod/0] 6 root 1376 1 0 20:19 ? 00:00:00 rpc.rquotad <-磁盘配额进程(remote quota server) 7 root 1381 1 0 20:19 ? 00:00:00 rpc.mountd <-服务端挂载权限管理验证等(NFS mount daemon) 8 root 1388 2 0 20:19 ? 00:00:00 [nfsd4] 9 root 1389 2 0 20:19 ? 00:00:00 [nfsd4_callbacks] 10 root 1390 2 0 20:19 ? 00:00:00 [nfsd] <-NFS主进程daemon 11 root 1391 2 0 20:19 ? 00:00:00 [nfsd] <-NFS主进程 12 root 1392 2 0 20:19 ? 00:00:00 [nfsd] <-NFS主进程,管理登入,ID身份判别等 13 root 1393 2 0 20:19 ? 00:00:00 [nfsd] 14 root 1394 2 0 20:19 ? 00:00:00 [nfsd] 15 root 1395 2 0 20:19 ? 00:00:00 [nfsd] 16 root 1396 2 0 20:19 ? 00:00:00 [nfsd] 17 root 1397 2 0 20:19 ? 00:00:00 [nfsd] <-NFS主进程 18 root 1428 1 0 20:19 ? 00:00:00 rpc.idmapd <-name mapping daemon用户压缩/用户映射 19 root 1432 1305 0 20:19 pts/0 00:00:00 egrep --color=auto rpc|nfs
NFS查看以上进程,可以通过man进程名命令,如man rpcidmapd
3.2 配置NFS服务端开机自启动
1 [root@nfs01 ~]# chkconfig rpcbind on 2 3 [root@nfs01 ~]# chkconfig nfs on
3.3 NFS服务端配置文件路径
NFS服务的默认配置文件路径为/etc/exports且默认为空
1 [root@nfs01 ~]# ls -l /etc/exports 2 3 -rw-r--r-- 1 root root 29 Oct 11 11:13 /etc/exports 4 5 [root@nfs01 ~]# cat /etc/exports
说明:NFS默认配置文件是存在的,但是没有内容,需要用户自配
第4章 NFS配置参数权限说明
4.1 squash参数详解
rpc.idmapd 名字映射后台进程
4.2 anonuid、anongid参数详解
作用:修改映射后的默认用户信息,默认映射用户为65534-nfsnobody
4.2.1 实践操作配置1:修改NFS默认映射用户(nfsnobody->www)
4.2.1.1 服务端配置
第一个里程碑-创建映射用户(服务端与客户端都创建,且uid和gid保持一致)
说明:因为两端识别用户身份并不是依靠用户名识别的,而是识别uid和gid信息,需要 uid和gid信息来判断用户是否一致,不一致则出现拒绝访问错误!
#客户端和服务端创建用户www
1 useradd www -u 666 2 3 id www
第二个里程碑-服务端进行nfs文件配置,修改共享目录权限(客户端不进行修改)
1 [root@nfs01 ~]# vim /etc/exports 2 3 #share /data by root for www at 20171015 4 5 /data 172.16.1.0/24(rw,sync,all_squash,anonuid=666,anongid=666)
说明:不指定anon参数这里就以uid为65534的nfsnobody用户作为默认映射用户
提示:用户默认的映射参数为root_squash、no_all_squash,所以配置文件中一定要进行参数设置
第三个里程碑-修改上级目录权限
1 [root@nfs01 ~]# chown -R www.www /data
第四个里程碑-重启服务器
1 [root@nfs01 ~]# /etc/init.d/nfs reload
4.2.1.2 客户端配置
第一个里程碑-进行挂载/重新挂载
1 [root@backup ~]# mount -t nfs 172.16.1.31:/data /mnt 2 3 [root@backup ~]# df -h 4 5 Filesystem Size Used Avail Use% Mounted on 6 7 /dev/sda3 8.8G 1.7G 6.7G 20% / 8 9 tmpfs 238M 0 238M 0% /dev/shm 10 11 /dev/sda1 190M 40M 141M 22% /boot 12 13 172.16.1.31:/data 8.8G 1.7G 6.7G 20% /mnt
第二个里程碑-创建指定www用户
1 useradd www -u 666 2 3 id www 4 5 uid=666(www) gid=666(www) groups=666(www)
第三个里程碑-客户端进行测试
01.测试root用户映射
1 [root@backup mnt]# touch user_root.txt 2 3 [root@backup mnt]# ll 4 5 total 0 6 7 -rw-r--r-- 1 www www 0 Oct 15 16:25 user_root.txt
02.测试普通用户映射
#www用户映射
1 [www@backup mnt]$ touch user_www.txt 2 3 [www@backup mnt]$ ll 4 5 total 0 6 7 -rw-r--r-- 1 www www 0 Oct 15 16:25 user_root.txt 8 9 -rw-rw-r-- 1 www www 0 Oct 15 16:26 user_www.txt
注意:当服务端创建用户而客户端不存在此用户时,客户端在挂载点下创建目录,文件用户属性出现nobody信息
4.2.2 实践操作配置2:修改客户端配置文件进行测试
no_all_squash
1 [oldboy@backup mnt]$ touch user_oldboy.txt 2 3 touch: cannot touch `user_oldboy.txt': Permission denied
root_squash(服务端挂载目录/data属主为www,故www用户仍能挂载)
1 [oldboy@backup mnt]$ touch user_oldboy.txt 2 3 touch: cannot touch `user_oldboy.txt': Permission denied
no_root_squash(root用户不进行映射,其权限能创建文件且属主依然为root)
1 [root@backup mnt]# touch user_root.txt 2 3 [root@backup mnt]# ll 4 5 -rw-r--r-- 1 root root 0 Oct 15 17:06 user_root.txt 6 7 [oldboy@backup mnt]$ touch user_oldboy.txt 8 9 touch: cannot touch `user_oldboy.txt': Permission denied
NFS服务umount命令参数
-l 表示不用离开当前挂载目录,进行懒惰卸载
-f 表示对挂载的目录进行强制卸载
第5章 NFS服务企业案例配置实践
5.1 实例:共享不同的两个目录,分别赋予读和写的权限
5.1.1 具体要求
服务端上面要求:nfs服务器172.16.1.31,共享下面两个目录
/data/w 要求的权限可读写,同步数据,所有用户都压缩为匿名用户
/data/r 要求的权限为只读,同步数据,所有用户都压缩为匿名用户
客户端上面要求 :
backup服务器 把NFS服务器的/data/r挂载到backup的/data/r
web01服务器 把NFS服务器的/data/w挂载到web01的/data/w
5.1.2 部署过程
5.1.3 第一个里程碑-卸载并创建目录环境
1 umount -lf /data
① 服务端创建
1 mkdir /data/{r,w} 2 3 chown -R nfsnobody.nfsnobody /data 4 5 ll -d /data/{r,w}
② 客户端创建(这里无需修改权限)
1 [root@backup ~]# mkdir -p /data/r 2 3 [root@web01 ~]# mkdir -p /data/w
5.1.4 第二个里程碑-编辑nfs服务端配置文件
1 [root@nfs01 ~]# vim /etc/exports 2 3 #share /data by root at 20171015 4 5 #/data 172.16.1.0/24(rw,sync) 6 7 /data/w 172.16.1.0/24(rw,sync,all_squash) 8 9 /data/r 172.16.1.0/24(ro,sync,all_squash)
5.1.5 第三个里程碑-重启nfs
1 [root@nfs01 ~]# /etc/init.d/nfs reload
说明:在配置共享目录时,需要考虑到子目录会继承上一级目录的权限,即上一级目录/data若有rw权限,/data/r将仍被继承(ro权限不起作用),因此应尽量让共享目录之间没有继承关系,这里采用注释/data目录方法
5.1.6 第四个里程碑-客户端进行重新挂载
1 umount -lf /mnt #卸载已挂载目录 2 3 backup 4 5 [root@backup ~]# mount -t nfs 172.16.1.31:/data/r /data/r/ 6 [root@backup ~]# df -h 7 Filesystem Size Used Avail Use% Mounted on 8 /dev/sda3 8.8G 1.7G 6.7G 20% / 9 tmpfs 238M 0 238M 0% /dev/shm 10 /dev/sda1 190M 40M 141M 22% /boot 11 172.16.1.31:/data/r 8.8G 1.7G 6.7G 20% /data/r 12 13 web01 14 15 [root@web01 ~]# mount -t nfs 172.16.1.31:/data/w /data/w/ 16 [root@web01 ~]# df -h 17 Filesystem Size Used Avail Use% Mounted on 18 /dev/sda3 8.8G 1.7G 6.8G 20% / 19 tmpfs 238M 0 238M 0% /dev/shm 20 /dev/sda1 190M 40M 141M 22% /boot 21 172.16.1.31:/data/w 8.8G 1.7G 6.7G 20% /data/w
5.1.7 第五个里程碑-进行测试
① 测试读写功能
1 [root@web01 ~]# cd /data/w 2 3 [root@web01 w]# touch test01.txt 4 5 [root@web01 w]# ll 6 7 total 0 8 9 -rw-r--r-- 1 nfsnobody nfsnobody 0 Oct 15 2017 test01.txt
② 测试只读功能
1 [root@backup ~]# cd /data/r 2 3 [root@backup r]# touch test02.txt #创建文件进行测试 4 5 touch: cannot touch ` test02.txt': Read-only file system #提示:不能创建文件,该文件为只读文件系统
提示:在任何情况下,服务端重启之后客户端都必须进行重新挂载,否则就出现如下错误
1 [root@backup r]# ll 2 3 ls: cannot open directory .: Stale file handle
第6章 NFS服务的重点知识梳理
6.1 多个NFS客户端访问服务端的读写文件要具有的权限
01.NFS服务器/etc/exports设置需要开放可写入的权限,即服务端的共享权限
02.NFS服务器实际要共享的NFS目录权限具有可写入w的权限,即服务端本地目录的安全权限
03.每台机器对应存在和NFS默认配置UID的相同UID 65534的nfsnobody用户(确保所有客户端的访问权限统一,否则每个机器都需要同时建立相同UID的用户,并覆盖NFS的默认用户配置)
只有满足上述三个条件,多个NFS客户端才能具有查看/修改/删除其它任意NFS客户端上传文件的权限,这在大规模的集群环境中作为集群共享存储时尤为重要
6.2 NFS客户端挂载命令格式
挂载命令 |
挂载的类型格式 |
指定挂载参数 |
NFS服务器端提供的共享目录 |
NFS客户端的挂载点 |
mount |
-t nfs |
-o ro |
172.16.1.31:/data |
/mnt(必须存在) |
完整版的挂载命令:mount -t nfs 172.16.1.31:/data /mnt,此命令需在客户端执行 |
6.2.1 NFS共享目录自动挂载方法
01.将挂载命令放在/etc/rc.local里
偶尔开机挂载不上,工作中除了开机自启动配置,还要对是否挂载做监控
02.将挂载命令放在/etc/fstab里
1 [root@nfs01 data]# chkconfig netfs on 2 3 [root@nfs01 data]# chkconfig --list netfs 4 5 netfs 0:off 1:off 2:on 3:on 4:on 5:on 6:off
注意:生产环境中一般不将其挂载信息写入fstab中,因为开机启动时,网络连接不上nfs server的话,可能会导致客户端主机无法启动过不了fstab这项,可以将其放到/etc/rc.local中来实现开机自动挂载,但也有可能重启nfs客户端后挂载不成功
6.3 NFS服务的优缺点及应用建议
A.优点:
01.简单,容易上手,容易管理
02.NFS文件系统内数据是在文件系统之上的,即数据是可见的
03.部署快速,维护简单方便且可控,满足需求就是最好的
04.可靠,从软件层面上看,数据可靠性高,经久耐用。数据是在文件系统之上的
05.服务非常稳定
B.局限:
01.存在单点故障,如果NFS Server宕机了,所有客户端都不能访问共享目录,这个在后期会通过负载均衡及高可用方案弥补
02.在大数据高并发的场合,NFS效率、性能有限(2 千万/日以下PV的网站不是瓶颈,除非网站架构设计太差)
03.客户端认证是基于IP 和主机名的,权限要根据ID 识别,无安全认证机制(用于内网则问题不大)
04.NFS数据是明文的,NFS本身不对数据完整性进行验证
05.多台客户机挂载一个NFS服务器时,连接管理维护麻烦(耦合度高)。尤其当NFS服务器端出问题后所有NFS客户端都处于挂掉状态测试环境可使用autofs自动挂载解决,正式环境可修复NFS服务或强制卸载)。
06.涉及了同步(实时等待)和异步(解耦)的概念,NFS服务器端和客户端相对来说就是耦合度有些高。网站程序也是一样,尽量不要耦合度太高,系统及程序架构师的重要职责就是为程序及架构解耦,让网站的扩展性变的更好。
C.应用建议:
对于大中小网站(参考点2000万旧PV以下)线上应用,都有用武之地,门户网站也会有应用,生产场景应该多将数据的访问往前推,即尽量将静态存情里的资源通过CDN 或缓存服务器提供服务,如果没有缓存服务或架构不好,存储服务器数量再多也是扛不住压力的,而且用户体验会很差。
第7章 利用ansible一键化nfs&rsync并实时同步剧本
1 管理端 : 2 [root@m01 tools]# cat quanwang.sh 3 #!/bin/bash 4 sh /server/scripts/piliangceshimiyao.sh 5 ansible-playbook /server/tools/rsyncpiliang.yml 6 ansible-playbook /server/tools/nfspiliang.yml 7 ansible-playbook /server/tools/quanwang.yml 8 9 01./server/scripts/piliangceshimiyao.sh 10 11 [root@m01 tools]# cat /server/scripts/piliangceshimiyao.sh 12 #!/bin/bash 13 #生成密钥 14 \rm -f /root/.ssh/id_dsa* 15 ssh-keygen -t dsa -f /root/.ssh/id_dsa -P "" -q 16 #发送密钥 17 for ip in 61 8 31 41 18 do 19 echo "==== 现在分发 172.16.1.$ip==========" 20 sshpass -p123456 ssh-copy-id -i /root/.ssh/id_dsa.pub "-o StrictHostKeyChecking=no root@172.16.1.$ip" 21 echo "==============end=======" 22 echo 23 done 24 25 02.ansible-playbook /server/tools/rsyncpiliang.yml 26 27 - hosts: 172.16.1.41 #服务端 28 tasks: 29 - name: yum 30 shell: yum install -y rsync #安装rsync 31 - name: yunm 32 shell: yum -y install sshpass #安装密钥的软件 33 - name: chuangjianmulu 34 shell: mkdir -p /server/tools/ #创建所在配置的文件 35 - name: peizhi 36 copy: src=/server/tools/peizhi.sh dest=/server/tools/peizhi.sh 37 - name: yunxing 38 script: /server/tools/peizhi.sh #运行脚本 39 - name: guanliyunhu 40 shell: useradd -s /sbin/nologin -M rsync #创建rsync虚拟用户 41 - name: anquanwenjian 42 shell: echo "rsync_backup:oldboy123" >/etc/rsync.password #设置密码文件 43 - name: quanxian 44 shell: chmod 600 /etc/rsync.password #给予权限 45 - name: beifenmulu 46 shell: mkdir -p /backup && chown -R rsync.rsync /backup 47 - name: qidong 48 shell: rsync --daemon #运行rsync 49 - hosts: 172.16.1.8 50 tasks: 51 - name: yum 52 shell: yum install -y rsync # 客户端 53 - name: chuangjianmulu 54 shell: mkdir -p /server/tools/ 55 - name: mimawenjian 56 shell: echo "oldboy123" >/etc/rsync.password && chmod 600 /etc/rsync.password 57 - hosts: 172.16.1.31 58 tasks: 59 - name: yum 60 shell: yum install -y rsync #客户端 61 - name: chuangjianmulu 62 shell: mkdir -p /server/tools/ 63 - name: mimawenjian 64 shell: echo "oldboy123" >/etc/rsync.password && chmod 600 /etc/rsync.password 65 66 03.ansible-playbook /server/tools/nfspiliang.yml 67 68 - hosts: 172.16.1.31 #服务端 69 tasks: 70 - name: yum 71 shell: yum install -y nfs-utils rpcbind #安装nfs 72 - name: yunm 73 shell: yum -y install sshpass #安装密钥的软件 74 - name: chuangjianmulu 75 shell: mkdir -p /server/tools/ #创建所在配置的文件 76 - name: peizhi 77 copy: src=/server/tools/nfspeizhi.sh dest=/server/tools/nfspeizhi.sh 78 - name: yunxingjiaoben 79 script: /server/tools/nfspeizhi.sh #运行脚本 80 - name: guanlimulu 81 shell: mkdir -p /data && chown -R nfsnobody.nfsnobody /data 82 - name: qidong 83 shell: /etc/init.d/rpcbind start && /etc/init.d/nfs start #启动 84 - name: kaijiqidong 85 shell: chkconfig rpcbind on && chkconfig nfs on 86 #设置密码文件 87 - hosts: 172.16.1.8 88 tasks: 89 - name: yum 90 shell: yum install -y nfs-utils rpcbind # 客户端 91 # - name: gui 92 # shell: umount -f /mnt 93 - name: guazai 94 shell: mount -t nfs 172.16.1.31:/data /mnt 95 - hosts: 172.16.1.41 96 tasks: 97 - name: yumh 98 shell: yum install -y nfs-utils rpcbind #客户端 99 # - name: guih 100 # shell: umount -f /mnt 101 - name: guazaih 102 shell: mount -t nfs 172.16.1.31:/data /mnt 103 104 04.ansible-playbook /server/tools/quanwang.yml 105 106 - hosts: 172.16.1.61 107 tasks: 108 # - name: anzhuangrsync 109 # shell: /server/scripts/piliangceshimiyao.sh 110 # - name: anzhuangrsync 111 # shell: /server/tools/rsyncpiliang.yml 112 # - name: anzhuangnfs 113 # shell: /server/tools/nfspiliang.yml 114 - hosts: 172.16.1.41 115 tasks: 116 - name: chuangjianmulu41 117 shell: mkdir -p /server/tools/ #创建所在配置的文件 118 - name: peizhi41 119 copy: src=/server/tools/quanwangrsync.sh dest=/server/tools/quanwangrsync.sh 120 - name: rsyncdajian41 121 script: /server/tools/quanwangrsync.sh 122 - hosts: 172.16.1.8 123 tasks: 124 - name: chuangjianmulu8 125 shell: mkdir -p /server/tools/ #创建所在配置的文件 126 - name: peizhi8 127 copy: src=/server/tools/quanwangweb.sh dest=/server/tools/quanwangweb.sh 128 - name: quanwangweb8 129 script: /server/tools/quanwangweb.sh 130 - hosts: 172.16.1.31 131 tasks: 132 - name: chuangjianmulu31 133 shell: mkdir -p /server/tools/ #创建所在配置的文件 134 - name: peizhi31 135 copy: src=/server/tools/quanwangnfs.sh dest=/server/tools/quanwangnfs.sh 136 - name: quanwangnfs.sh31 137 script: /server/tools/quanwangnfs.sh
此笔记是本人学习摘记整理而成,此为初稿(尚有诸多不完善之处),原创作品允许转载,转载时请务必以超链接形式标明文章原始出处,作者信息和本声明,否则将追究法律责任。http://www.cnblogs.com/bananaaa/