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. [crypto] AEAD是啥

    AEAD这个缩写根据不同的语境有两个理解角度:认证加密机制,认证加密方式. 认证加密机制是指:一些用来完成认证加密工作的方法,拆分为认证和加密两部分来做,先加密后加密先认证后认证都无所谓,整个过程或者 ...

  2. 美团笔试(web前端)

    分为3部分: 1.逻辑推理.行测.找规律: 2.html css javascript的简单的选择题,以及数据结构,操作系统方面的知识: 3.两道编程题,第一道题关于竞赛报名,有限制的分组,输入N和M ...

  3. stm32f407以太网及USB OTG快速开发

    stm32f407以太网及USB OTG快速开发 引言 想要快速完成网络协议栈和USB OTG功能,使用ST自家的工具STM32CubMx再好不过的了.如果你还不会使用,别着急下面我会一步一步的用图片 ...

  4. c# thread数线程的创建

    1. 1 2 3 4 5 6 Thread thread = new Thread(new ThreadStart(getpic)); thread.Start(); private void sho ...

  5. jenkins 判断某个job是否正在构建

    其实很简单,访问jenkins job的xml api或者 json api,里面有两个key叫"lastBuild"和"lastCompletedBuild" ...

  6. Oracle数据库查询所有关键字

    管理员账户登录后,执行以下命令:  select * from v$reserved_words

  7. Oracle 10053

    [10053]alter session set events '10053 trace name context forever,level 1'; <Run your SQL here;&g ...

  8. U盘制作系统盘的方法:

    1, 使用 u 盘制作 ubuntu16.04 的方法, 安装软件后,直接使用软件将 U盘制作成系统盘就好了 [1] 下载安装工具: UltraISO  官网:  http://www.ezbsyst ...

  9. laravel----------laravel一些注意事项和一些说明

    1.php artisan key:generate 解释:.env文件里面的APP_KEY参数设置为一个随机字符串也就是这个key是一个随机字符串,用于实现框架中的encrypt(加密)服务,   ...

  10. runTime动态给类添加属性

    #项目中需要给系统类添加属性 #需要注意的地方就是.m中   set 和 get  ,get方法中方法名和添加的属性名一致,set中可以用驼峰 #import <UIKit/UIKit.h> ...