美文网首页
ansible 利用脚本一键实现web,nfs,rsync三大服

ansible 利用脚本一键实现web,nfs,rsync三大服

作者: 国王12 | 来源:发表于2019-04-26 20:20 被阅读0次

准备:

五台服务器 一台管理服务器m01:172.16.1.61、两台应用服务器web01:172.16.1.7和web02:172.16.1.8、一台存储服务器nfs:172.16.1.31、一台实时备份服务器rsync:172.16.1.41

要求:通过m01管理机,实现nfs服务器共享一个目录给两台web服务器

                       实现nfs服务器数据实时同步到rsync服务器

                       实现web01、web02、nfs三台服务器重要文件全网备份到rsync

实战:

一、搭建管理机m01

#!/bin/sh

yum install openssh openssl -y &&\

systemctl restart sshd &&\

systemctl enable sshd &&\

yum install epel-release -y &&\

yum install ansible -y &&\

Yum install exportfs -y &&\

yum install libselinux-python

3、rpm -qa|greprpm -qa|grep libselinux-python 检查是否有这个,如果没有,(yum install libselinux-python)

4、cp /etc/ansible/hosts{,.ori} 先备份ansible的配置文件

5、cat >/etc/ansible/hosts<<EOF

#[ ]为主机列表

#1代表服务端2代表客户端

[oldboy]                         

172.16.1.7

172.16.1.8

172.16.1.31

172.16.1.41

[rsync1]

172.16.1.41

[rsync2]

172.16.1.7

172.16.1.8

172.16.1.31

[nfs1]

172.16.1.31

[nfs2]

172.16.1.7

172.16.1.8

[sersync]

172.16.1.31

EOF

6、编辑脚本:生成并分发公钥,最好创建在/server/scripts/下

Vim fenfa.sh

#!/bin/bash

#yum install sshpass -y

#因为前边已经下载了ansible,自带sshpass

#创建公钥不指定密码,即使用原密码

ssh-keygen -f~/.ssh/id_rsa -P '' -q

for ip in 7 8 31 41

do

  sshpass -p123456 ssh-copy-id -i ~/.ssh/id_rsa.pub "-o StrictHostKeyChecking=no" 172.16.1.$ip

done

#上边为一个for循环,分发给四个服务器公钥

7、vim /etc/ansible/ansible.cfg +71

取消71行的注释,然后找到374行,取消注释,并在行尾添加 -o StrictHostKeyChecking=no

8、sh fenfa.sh 执行编辑过的脚本,分发公钥给对应ip

9、ansible oldboy -m command -a "free -m"   控制测试

10、本地优化ssh   (有问题,待修改)

cat >>/etc/ssh/sshd_config<<EOF

Use DNS no

GSSAPIAuthentication no

PermitEmptyPasswords no

EOF                          修改完参数配置,然后重启

systemctl restart sshd

11、ansible oldboy -m copy -a "src=/etc/ssh/sshd_config dest=/etc/ssh/sshd_config backup=yes”

把优化的ssh发送给其他服务器,backup=yes 备份源文件,。

二、编写nfs(共享目录)服务端及客户端脚本

服务端脚本:nfs1.sh

#!/bin/bash

yum install nfs-utils rpcbind -y &&\

Yum install rpcbind -y

systemctl start rpcbind.service &&\

systemctl enable rpcbind.service &&\

systemctl start nfs &&\

systemctl enable nfs &&\

cat >/etc/exports<<EOF

/data 172.16.1.0/24(rw,async,all_squash)

EOF

mkdir -p /data &&\

chown -R nfsnobody.nfsnobody /data &&\

exportfs -r

#下载安装nfs服务和rpc服务并设置启动和开机自启动(先rpc后nfs)

#编辑nfs配置文件设置共享目录和相对应可共享的主机以及权限

#别忘了自己的共享目录是否原本存在,如果不存在先创建

#在这里并没有创建和指定用户,所以默认使用nfsnobody用户

#设置共享目录的属主属组为nfsnobody

#平滑重启

客户端脚本:nfs2.sh

#!/bin/sh

yum install nfs-utils rpcbind -y &&\

systemctl start rpcbind.service &&\

systemctl enable rpcbind.service &&\

mount -t nfs 172.16.1.31:/data /mnt

#下载安装rpc服务和nfs服务理论上讲只需要下载rpc服务即可

#开启并开机自启动rpc服务

#挂载nfs服务端提供的共享目录到本地的(根据情况指定挂载点)

#在此没有设置开机自动挂载

三、编写rsync(推拉服务)服务端和客户端

1. rsync服务端:rsync1.sh

#!/bin/bash

systemctl stop firewalld &&\

systemctl disable firewalld &&\

yum install rsync -y &&\

cp /etc/rsyncd.conf{,.ori} &&\

cat >/etc/rsyncd.conf<<EOF

uid = rsync

gid = rsync

use chroot = no

fake super = yes

max connections = 200

timeout = 600

pid file = /var/run/rsyncd.pid

lock file = /var/run/rsync.lock

log file = /var/log/rsyncd.log

ignore errors

read only = false

list = false

hosts allow = 172.16.1.0/24

auth users = rsync_backup

secrets file = /etc/rsync.password

[backup]

comment = welcome to oldboyedu backup!

path = /backup/

EOF

useradd -M -s /usr/bin/nologin rsync &&\

mkdir -p /backup &&\

chown -R rsync.rsync /backup/ &&\

echo "rsync_backup:123456" >/etc/rsync.password &&\

chmod 600 /etc/rsync.password &&\

systemctl start rsyncd &&\

systemctl enable rsyncd

#关闭防火墙其他基本优化这里不在写出

#下载安装并备份rsync

#根据需求编辑rsyncd.conf

#创建一个不可登陆的用户

#创建backup目录,并设置属主属组为指定用户

#配置密码文件并把权限设置为600

#启动并设置开机自启动rsync服务

编写rsync客户端:rsync2

#!/bin/bash

yum install rsync -y &&\

echo "123456" >/etc/rsync.password &&\

chmod 600 /etc/rsync.password &&\

systemctl restart rsyncd &&\

systemctl enable rsyncd &&\

echo “export RSYNC_PASSWORD=123456” >>/etc/bashrc &&\

exportfs -r

#下载安装rsync服务

#写入rsync服务端密码到配置文件并设置权限为600

#开启并设定开机自启动rsync服务

#写入密码到变量里边,平滑重启

四、编辑sercync实时同步脚本:sersync.sh

!/bin/bash

echo 'export RSYNC_PASSWORD=123456' >>/etc/bashrc &&\

source /etc/bashrc &&\

yum install epel-release -y &&\

yum install inotify-tools -y &&\

touch /server/scripts/monitor.sh

cat >/server/scripts/monitor.sh<<EOF

#!/bin/sh

/usr/bin/inotifywait -mrq --format '%w%f' -e close_write,delete /data|while read line

do

  cd /data && rsync -az --delete ./ rsync_backup@172.16.1.41::backup

done

EOF

#输入rsync推拉密码到变量然后重新启动变量

#下载epel源,下载inotify机制

#创建实时同步命令脚本

#编辑实时同步命令脚本

五、编辑一键实施安装部署各种服务到对应服务器

vim one.ok.sh

!/binsh

ansible rsync1 -m script -a "/server/scripts/rsync1.sh" &&\

ansible rsync2-m script -a "/server/scripts/rsync2.sh" &&\

ansiblenfs1-m script -a "/server/scripts/nfs1.sh" &&\

ansiblenfs2 -m script -a "/server/scripts/nfs2.sh" &&\

ansiblesersync-m script -a "/server/scripts/sersync.sh"

执行一键安装部署脚本  

sh one.ok.sh

相关文章

网友评论

      本文标题:ansible 利用脚本一键实现web,nfs,rsync三大服

      本文链接:https://www.haomeiwen.com/subject/vdxcnqtx.html