ansible自动化管理剧本方式一键完成三大服务器基础配置

环境准备:五台服务器:管理机m01:172.16.1.61,两台web服务器172.16.1.7,172.16.1.8,nfs存储服务器172.16.1.31,备份服务器rsync172.16.1.41

要求实现:nfs服务器共享目录/data给两台web服务器

三台服务器可以通过定时任务 备份到备份服务器rsync

实时监控nfs/data目录,并实时备份到备份服务器rsync

开整:

一、配置管理机m01

1.下载基本软件

cd /server/scripts

vim benjipeizhi.sh

#!/bin/sh

yum install oppenssh oppenssl -y &&\

systemctl restart sshd &&\

systemctl enable sshd &&\

yum install opel-releare -y &&\

yum install ansible -y &&\

yum install libselinux-python -y

3.编辑主机列表,方便批量管理(1代表服务端,2代表客户端)

vim /etc/ansible/hosts

[oldboy]

172.16.1.7

172.16.1.8

172.16.1.31

172.16.1.41

[rsync]

172.16.1.41

[rsync2]

172.16.1.7

172.16.1.8

172.16.1.41

[nfs1]

172.16.1.31

[nfs2]

172.16.1.7

172.16.1.8

[sersync]

172.16.1.31

4.创建并分发公钥,实现免密连接

vim fenfa.sh

#!/bin/sh

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

5.下载sersync实时监控软件(本人是从桌面直接拉虚拟机的)

解压然后编辑配置文件(适当修改部分即可)这一个是通过copy模块远程复制过去的,在本机编辑好

vim /server/tools/appliction/sersync/conf

<?xml version="1.0" encoding="ISO-8859-1"?>
<head version="2.5">
<host hostip="localhost" port="8008"></host>
<debug start="false"/>
<fileSystem xfs="false"/>
<filter start="false">
<exclude expression="(.*)\.svn"></exclude>
<exclude expression="(.*)\.gz"></exclude>
<exclude expression="^info/*"></exclude>
<exclude expression="^static/*"></exclude>
</filter>
<inotify>
<delete start="true"/>
<createFolder start="true"/>
<createFile start="false"/>
<closeWrite start="true"/>
<moveFrom start="true"/>
<moveTo start="true"/>
<attrib start="false"/>
<modify start="false"/>
</inotify>

<sersync>
<localpath watch="/data">
<remote ip="172.16.1.41" name="backup"/>
<remote ip="172.16.1.41" name="oldboy"/>
<!--<remote ip="192.168.8.39" name="tongbu"/>-->
<!--<remote ip="192.168.8.40" name="tongbu"/>-->
</localpath>

rsync服务端配置文件也是通过copy模块远程推送,所以现在本机编辑好

vim /etc/rsyncd.conf

#!/bin/sh

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

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/

6.连接测试

sh fenfa.sh  执行创建并分发公钥的脚本

ansible oldboy -m command -a "ifconfig"  显示四台服务器IP说明远程连接成功

重点来啦,写剧本

在/etc/ansible下创建yaml目录,剧本名为one.yml

mkdir -p /etc/ansible/yaml

vim one.yml

- hosts: nfs1

tasks:

- name: 安装nfs

yum: name=nfs-utils state=installed

- name: 安装rpc

yum: name=rpcbind state=installed

- name: 编辑nfs共享目录为/data

shell: echo "/data 172.16.1.0/24(rw,anync,all_squash)" >/etc/exports

- name: 创建目录data

file: name=/data state=dircetory mode=0755 owner=nfsnobody group=nfsnobody

- name: 写入密码

shell: echo "export RSYNC_PASSWORD=123456" >>/etc/bashrc

shell: source /etc/bashrc

shell: echo "123456" >/etc/rsync.password

- name: 启动rpc并开机自启动

systemd: name=rpcbind.service enabled=yes state=started

- name: 启动nfs并开机自启动

systemctl: name=nfs enbaled=yue state=started

- hosts: nfs2

tasks

- name: 安装nfs和rpc

shell: yum install nfs-utils -y

shell: yum install rpcbind -y

- name: 启动prc并开机自启动

systemd: name=rpcbind.service enabled=yes state=started

-name: 启动nfs

systemd: name=nfs enabled=yes start=started

- name: 写入挂载目录到fstab

mount: src='172.16.1.31:/data' path=/mnt fstype=nfs opts=rw state=present

- name: 生效fstab

shell: mount -a

- name: 写入密码

shell: echo "export RSYNC_PASSWORD=123456" >>/etc/bashrc

shell:source /etc/bashrc

shell: echo "123456" >/etc/rsync.password

- hosts:rsync1

tasks:

- name: 安装rsync

yum: name=rsync state=installed

- name: 把本地配置好的rsync服务端配置文件拷贝过去

copy: src=/etc/rsyncd.conf dest=/etc/rsyncd.conf mode=0600 backup=yes

- name: 写入密码

shell: echo "rsync_backup:123456" >/etc/rsync.password

- name: 设置密码权限

file: path=/etc/rsync.password mode=0600

- name: 创建用户

user: name=rsync

- name: 创建backup备份目录

file: name=/backup state=directory mode=0755 recurse=yes owner=rsync group=rsync

- name: 启动rsync服务

systemd: name=rsync enabled=yes state=started

- hosts: rsync2

tasks:

- name: 安装rsync

yum: name=rsync state=installed

- name: 密码写入

shell: echo "export RSYNC_PASSWORD=123456" >>/etc/bashrc

shell: source /etc/bashrc

shell: echo "123456" >/etc/rsync.password

- name: 设置密码权限

filse: name=/etc/rsync.password mode=0600

- name: 启动rsync

systemd: name=rsyncd enabled=yes state=started

- hosts: sersync

tasks:

- name:  下载监控机制

yum: name=inotify-tools state=installed

- name: 复制本地编辑好的配置文件

copy: src=/server/tools dest=/server/tools

copy: src=/server/tools/applicantion dest=/ mode=755

- name: 启动监控

shell: /application/sersync/bin/sersync -d -n 10 -o /application/sersync/conf/confxml.xml

测试执行:ansible-playbook -C one.yml

正式执行:ansible-playbook one.yml

linux系统ansible一键完成三大服务器基础配置(剧本)的更多相关文章

  1. linux系统ansible一键完成三大服务器基本配置

    准备: 五台服务器:一台管理服务器m01:172.16.1.61.两台应用服务器web01:172.16.1.7.web02:172.16.1.8.一台存储服务器nfs:172.16.1.31.一台备 ...

  2. 在本机使用虚拟机安装一个linux系统,并搭建ftp服务器

    一.Linux基础使用:linux服务器环境搭建(FTP服务器), 在本机使用虚拟机安装一个linux系统,并搭建ftp服务器,要求能使用ftp服务将本机文件到保存linux虚拟机上 资料: VMwa ...

  3. Linux系统之路——如何在服务器用U盘安装CentOS7.2(二)

    Linux系统之路——如何在服务器用U盘安装CentOS7.2(一) 说明: 截止目前CentOS 7.x最新版本为CentOS 7.2.1511,下面介绍CentOS 7.2.1511的具体安装配置 ...

  4. Linux系统之路——如何在服务器用U盘安装CentOS7.2(一)

    终于将CentOS7装上服务器(thinkserver250,不得不说联想的太烂了)了,过程无比艰辛,因为我发现网上大家提到的所有U盘安装CentOS7时碰到的问题几乎都被我碰到了,像什么: 1.刻录 ...

  5. linux系统下本地搭建git服务器

    linux系统下如何搭建本地git服务器,用于存放团队的开发代码,如下步骤: 1.先用一台服务器来安装git,安装好linux以后,在这里选用的是Ubuntu 14.04.然后配置静态IP:172.1 ...

  6. 在Linux系统中如何设置APACHE服务器里的后台页面只允许某个IP地址访问

    补充资料 本网络中使用LINUX服务器,web服务器是由APACHE搭建,IP地址为192.168.1.5,后台页面为/admin/login.jsp . 如何设置后台页面LOGIN.JSP只允许19 ...

  7. Linux系统上安装软件(ftp服务器)

    一:安装ftp服务器 在安装linux系统的时候,自定义软件包安装时,我已经勾选了ftp服务器,所以已经 安装过了,如果没有勾选,需要额外下载ftp的安装包,进行安装. ftp服务器搭建过程中遇到的问 ...

  8. Linux系统下搭建FTP/SFTP服务器

    传输文件经常使用ftp和sftp服务器.Windows下有多种可视化工具,使用快捷.Linux经常需要自行搭建这两种服务器,当然搭建熟练的话,会更加快捷. 1.检查Linux系统是否安装了vsftp和 ...

  9. Linux系统编程(12)——shell基础

    Shell的作用是解释执行用户的命令,用户输入一条命令,Shell就解释执行一条,这种方式称为交互式(Interactive),Shell还有一种执行命令的方式称为批处理(Batch),用户事先写一个 ...

随机推荐

  1. js canvas获取图片base64 dataUrl

    function getImgBase64(path, callback) { var img = new Image(); img.src = path; //图片加载完成后触发 img.onloa ...

  2. Linux(CentOs 7)系统重装笔记(二)---完全删除用户账号和root用户登录

    参考网址:https://jingyan.baidu.com/article/046a7b3ede1c38f9c27fa91b.html 一.完全删除用户 1.查看要删除的用户账号信息 find / ...

  3. Timestamp “时间戳” - 术语

    A timestamp is a sequence of characters or encoded information identifying when a certain event occu ...

  4. .net中使用 道格拉斯-普特 抽希轨迹点

    Douglas一Peukcer算法由D.Douglas和T.Peueker于1973年提出,简称D一P算法,是目前公认的线状要素化简经典算法.现有的线化简算法中,有相当一部分都是在该算法基础上进行改进 ...

  5. 基于Promise封装uni-app的request方法,实现类似axios形式的请求

    https://my.oschina.net/u/2428630/blog/3004860 uni-app框架中 安装(项目根目录下运行) npm install uni-request --save ...

  6. 030-IHttpModule

    MyHttpModule.cs public class MyHttpModule : IHttpModule { public void Dispose() { } public void Init ...

  7. Aspose是一个很强大的控件,可以用来操作word,excel,ppt等文件

    Aspose是一个很强大的控件,可以用来操作word,excel,ppt等文件,用这个控件来导入.导出数据非常方便.其中Aspose.Cells就是用来操作Excel的,功能有很多.我所用的是最基本的 ...

  8. Remastersys打包你自己的ubuntu成iso文件

    采用Remastersys3.0.4.ubuntu版本是ubuntu14.04 LTS amd64. (1)软件下载安装: 下载: 到http://www.easy-vdr.de/downloads/ ...

  9. 一个handle使用更新线程的实例

    handle更新线程实例 package com.example.administrator.handle; import android.app.Activity;import android.os ...

  10. iOS 小米推送总结和遇到的坑

    极光推送就不赘述了,这里说下小米推送在ios上的坑吧,查了好久也没有查到相关的文章. 极光的强大就不说了,当客户贪图实惠的时候,当人家给你让你用小米推送的时候,我的内心是崩溃的,小米推送???没听过! ...